基于一阶倒立摆系统的模糊神经网络PID控制
1.1 研究背景
模糊系统、神经网络和遗传算法被认为是21世纪人工智能最具发展前途的三个重要领域。它们构成了所谓的“智能计算”。随着科学技术的飞速发展,现代工业控制系统变得越来月复杂,基于精确数学模型的传统控制已经达不到理想的控制效果。智能控制是一种模拟人类智能的高级控制系统,它是基于知识的控制,是将控制者和专家经验与知识作为被控对象的模型。
倒立摆系统是一种典型的高阶、非线性、强耦合、多变量、不稳定的装置,通常被用来检验控制策略的有效性。因为倒立摆系统的竖直稳定状态与机器人直立行走的形态相似,同时又与火箭和飞控很相似,所以对倒立摆系统的学习和研究具有广泛、深远的事件意义。关于倒立摆的学习和研究对其它工程控制问题具有指导意义。
1.2 模糊神经网络概述
模糊控制是一门发展迅速、具有广阔应用前景的技术,它不受数学模型的束缚,而是利用人类专家的经验形成模糊语言,生成模糊控制列表,并在实际应用中经过人们反复修正,然后通过计算机采用查表的方法在控制列表中找出相应的模糊控制量,最后经过一定的比例运算得到实际控制量加到被控对象上。模糊控制的规则是由人类专家的经验知识写出的,所以模糊控制能够容易被理解。模糊控制的原理如图1.1所示。
图1.1 模糊控制原理框图
人工神经网络是指从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络来模拟人脑神经网络的结构和功能。人工神经网络反映了人脑功能的若干基本特征,包括并行信息处理、学习、联想、模式分类、记忆等。如图1.2所示,是一个简单的 的三层神经网络,包括了输入层、隐含层和输出层,层与层之间通过权值相连接,神经网络的训练的实质是修正权值。
图1.2 神经网络结构
模糊控制和神经网络,具有互补性。模糊控制具备处理模糊语言信息的能力,可以模拟人类智慧进行判断和决策,但是它模糊控制不具备学习的能力。而神经网络具备学习的能力,但是不具备处理和描述模糊信息。本文基于模糊控制和神经网络的优劣点,将神经网络与模糊控制相结合来实现对倒立摆系统的控制。本文使用的神经网络是BP神经网络,虽然BP神经网络收敛速度较慢、有时还会出现局部极小的情况,但是BP神经网络是目前应用最为广泛的神经网络,关于BP神经网络的研究已经相当成熟,可查询的资料也较为广泛。
1.3 课题主要工作和内容安排
课题的主要工作是通过将神经网络与模糊控制相结合的模糊神经网络算法实验对一阶倒立摆系统的控制,并利用MTALAB进行仿真分析,与传统的PID控制算法进行对比。
本文的内容安排如下:
第一章 前言。主要讲述课题研究内容的背景,简单描述了模糊控制和神经网络控制的原理以及其优劣点,引出文章的研究的模糊神经网络算法。
第二章 一级倒立摆的数学建模。为了能够使用计算机对实际问题进行模拟仿真,在本章节中,对实际倒立摆系统进行分析,并推到其数学模型。
第三章 模糊神经网络的建立。在该章节中,将详细的描述模糊PID控制和模糊神经网络PID控制的原理,搭建模糊神经网络PID控制器。
第四章 仿真分析对比。对建立模糊神经网络模型进行仿真分析,并与传统的PID控制以及模糊PID控制进行对比。
第五章 总结。总结课题使用的模糊神经网络算法的优缺点,对存在的问题进行分析总结。讨论课题的进一步的研究方向,最后归纳在总体设计中的心得和体验。
2 一级倒立摆的数学建模
2.1 引言
在本章节中,将详细的介绍如何对一级倒立摆系统进行数学的建模。在2.2小节中,将简单描述一级倒立摆系统的组成。在2.3小节中,详细的推导了直线一级倒立摆的数学模型。
2.2 一级倒立摆系统
一级倒立摆系统是由计算机、运动控制卡、伺服机构、倒立摆本体和光电码盘几大部分组成的闭环系统如图2.1所示。光电码盘1将小车的位移、速度信号反馈给伺服驱动器和运动控制卡,摆杆的角度、角速度信号由光电码盘2反馈给运动控制卡。计算机从运动控制卡中读取实时数据,确定控制决策(小车的运动方向、移动速度、加速度等),并由运动控制卡来实现控制决策,产生相应的控制量,使电机转动,通过皮带带动小车运动,保持平衡。
图2.1 一级倒立摆闭环系统图
2.3 一级倒立摆系统数学模型的推导
关于一级倒立摆的数学建模的方法有很多,如牛顿欧拉法、拉格朗日法等[1]。相对于拉格朗日法,牛顿法较为简单、明晰。本文采用牛顿欧拉法对实际的倒立摆系统进行数学建模。
本课题所研究的一级直线倒立摆是由一个交流伺服电机驱动的单入双出耦合系统,对一级直线倒立摆系统进行建模时,常作如下假设:(1)系统做刚性运行,忽略弹性势能;(2)摆杆竖直时为平衡位置;(3)忽略所有摩擦系数。
图2.2 一级直线倒立摆结构模型
图2.2为一级倒立摆结构模型,关于该倒立摆的参数及其定义如表2.1所示。
表2.1 倒立摆系统的参数定义
参数 定义 参数值
小车质量 0.5Kg
摆杆质量 0.2Kg
小车摩擦系数 0.1N/m/sec
摆杆转动轴心到杆质心的长度 0.3m
摆杆惯量 0.006Kg*m2
加在小车上的力
小车的位置
摆杆与垂直向上方向的夹角
摆杆与垂直向下方向的夹角
对一级倒立摆倒立摆系统中的小车和摆杆进行受力分析,其中, 和 为小车与摆杆相互作用力的水平和垂直方向的分量,如图2.3所示。
2.4 本章小节
通过2.2和2.3小节对倒立摆系统的分析,利用牛顿欧拉法对小车进行受力分析,并建立了摆杆与小车加速度之间的传递函数模型公式(2.14)。为第四章的仿真分析提供了理论基础。
训练模糊神经网络程序
e=[6 6 6 6 6 6 6 4 4 4 4 4 4 4 2 2 2 2 2 2 2 0 0 0 0 0 0 0 -2 -2 -2 -2 -2 -2 -2 -4 -4 -4 -4 -4 -4 -4 -6 -6 -6 -6 -6 -6 -6];
ec=[6 4 2 0 -2 -4 -6 6 4 2 0 -2 -4 -6 6 4 2 0 -2 -4 -6 6 4 2 0 -2 -4 -6 6 4 2 0 -2 -4 -6 6 4 2 0 -2 -4 -6 6 4 2 0 -2 4 6];
kkp=[-6 -6 -4 -4 -4 0 0 -6 -4 -4 -4 -2 0 2 -4 -4 -2 -2 0 2 2 -4 -4 -2 0 2 4 4 -2 -2 0 2 4 4 4 -2 0 2 2 4 6 6 0 0 2 4 4 6 6];
kki=[6 6 4 4 2 0 0 6 6 4 2 2 0 0 6 4 2 2 0 -2 -4 4 4 2 0 -2 -4 -4 2 2 0 -2 -2 -4 -6 0 0 -2 -2 -4 -6 -6 0 0 -2 -4 -4 -6 -6];
kkd=[6 2 2 4 4 4 6 6 2 2 2 2 2 6 0 0 0 0 0 0 0 0 -2 -2 -2 -2 -2 0 0 -2 -2 -4 -4 -2 0 0 -2 -4 -4 -6 -2 2 2 -4 -6 -6 -6 -2 2];
ee=[e;ec];
bpki=newff([-6 6;-6 6],[2 49 14 7 1],{'tansig','tansig','tansig','tansig','purelin'},'traingdm');
bpki=init(bpki);%Ki 训练过程
bpki.trainParam.epochs=5000;
bpki.trainParam.Ir=0.04;
bpki.trainParam.goal=5e-3;
bpki=train(bpki,ee,kki);
bpkd=newff([-6 6;-6 6],[2 49 14 7 1],{'tansig','tansig','tansig','tansig','purelin'},'traingdm');
bpkd=init(bpkd);%Kd 训练过程
bpkd.trainParam.epochs=5000;
bpkd.trainParam.Ir=0.04;
bpkd.trainParam.goal=5e-3;
bpkd=train(bpkd,ee,kkd);
bpkp=newff([-6 6;-6 6],[2 49 14 7 1],{'tansig','tansig','tansig','tansig','purelin'},'traingdm');
bpkp=init(bpkp);%Kp 训练过程
bpkp.trainParam.epochs=5000;
bpkp.trainParam.Ir=0.04;
bpkp.trainParam.goal=5e-3;
bpkp=train(bpkp,ee,kkp);
gensim(bpkp,-1)
gensim(bpki,-1)
gensim(bpkd,-1)
来源:CSDN
作者:FQY_960807
链接:https://blog.csdn.net/qq_38184554/article/details/103656551