资源描述
球棒系统的建模及反馈控制
———————————————————————————————— 作者:
———————————————————————————————— 日期:
17
本科生课程设计(报告)
题 目:
球棒系统的建模及反馈控制设计
姓 名:
学 院:
专 业:
班 级:
学 号:
指导教师:
2013年 6月15日
南京农业大学教务处制
球棒系统的建模及反馈控制设计
由刚性球和连杆臂构成的球棒系统,如下图所示。连杆在驱动力矩τ 作用下绕轴心点O做旋转运动。连杆的转角和刚性球在连杆上的位置分别用θ,γ表示, 设刚性球的半径为R。当小球转动时, 球的移动和棒的转动构成复合运动。
球棒系统是一个典型的多变量的非线性系统。该系统通过操作驱动力矩的控制使刚性球稳定在连杆的中心位置。利用拉格朗日方程建立球棒系统的数学模型, 并用状态反馈的方法设计球棒系统的控制器, 通过给出具体的数据并进行计算, 再利用这些数据进行模拟仿真。仿真表明利用状态反馈法设计的控制器, 可以实现球棒系统的稳定控制, 即刚性球随动力臂一起转动时不发生滚动。
刚性球与机械臂的动态方程由下式描述:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。①。。。。。。。。。。。。。。。。。。。。②
选取刚性球的位移和其速度,以及机械臂的转角 及其角速度作为状态变量,令,可得系统的状态空间表达式:
设球棒系统各参数如下:
.,, ,
1.将系统在平衡点x =0处线性化,求线性系统模型
先求平衡点;令,解得: 由题可知平衡点为处,故即。
将球棒系统各参数带入得:
开环系统是不稳定的.
2.利用状态反馈,将线性系统极点配置于求出状态反馈控制增益,并画出小球初始状态为横杆角度为和初始状态,横杆角度为时的仿真图像
根据可控性的判别,此可控性矩阵,与向量的数目相等, 该受控对象可控,可进行状态反馈。用给定特征根的方法, 此研究对象是一个四阶系统, 指定两组共轭复数为,特征根的实部都是负值,该系统是稳定的。采用状态反馈法,将比例系数乘以所有的状态变量, 对系统进行反馈,可使系统稳定
令,得:,
由极点可知:
Matlab编程如下:
a=[0,1,0,0;0,0,-140.14,0;0,0,0,1;-24.52,0,0,0] ;
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-1+2j,-1-2j,-2+j,-2-j];
K=acker(a,b,p)
K =
-0.4940 -0.0043 0.3600 0.1200
a-b*K
ans =
0 1.0000 0 0
0 0 -140.1400 0
0 0 0 1.0000
0.1784 0.2141 -18.0000 -6.0000
即所求的状态反馈增益。
则状态反馈后系统的状态空间表达式为:
(1) 实现小球初始状态为,横杆角度的仿真图像
Matlab编程,接上部分程序.
g=ss(ans,b,c,d);
>> x0=[0.3,0,pi/6,0];
>> [y,t,x]=initial(g,x0);
>> plot(t,x)
(2) 实现小球初始状态为,横杆角度的仿真图像
Matlab编程为:
a=[0,1,0,0;0,0,-140.14,0;0,0,0,1;-24.52,0,0,0] ;
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-1+2j,-1-2j,-2+j,-2-j];
K=acker(a,b,p)
K =
-0.4940 -0.0043 0.3600 0.1200
a-b*K
ans =
0 1.0000 0 0
0 0 -140.1400 0
0 0 0 1.0000
0.1784 0.2141 -18.0000 -6.0000
g=ss(ans,b,c,d);
>> x0=[-0.3,0,-pi/6,0];
>> [y,t,x]=initial(g,x0);
>> plot(t,x)
(3) 用simulink进行仿真.
小球初始状态为,横杆角度的仿真图像
小球初始状态为,横杆角度的仿真图像
3.设计具有合适极点的全维观测器,实现状态反馈,给出状态反馈增益和观测器增益,并画出小球初始状态为,横杆角度为和初始状态,横杆角度为时的仿真图像,以及观测器输出与系统状态差值图像。
(1)状态反馈的重新配置.
设定系统的超调量为,调整时间为。得到不等式
解得:,取,依据典型二阶系统的传递函数可得:,系统为四阶因此,其他两个极点可以选取为5倍以上的的任意值,此处选取极点则,
用Matlab编程求出反馈增益.
a=[0,1,0,0;0,0,-140.14,0;0,0,0,1;-24.52,0,0,0] ;
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-8+8.39j,-8-8.39j,-45+8.39j,-45-8.39j];
>> k=acker(a,b,p)
k =
-40.6834 -6.5115 73.4030 2.1202
(2)求观测器增益.
首先判断能观性
系统能观.
根据观测器取特征值的原则,
令,。在Matlab中求得和:
Matlab编程为:
a=[0,1,0,0;0,0,-140.1429,0;0,0,0,1;-24.52,0,0,0];
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-24+8.39*j,-24-8.39*j,-135+8.39*j,-135-8.39*j];
c=c';
a=a';
e=place(a,c,p);
ans =
1.0e+004 *
0.0158 0.0010
0.4240 0.0033
0.0095 0.0160
1.3452 0.3339
>> a=a'-(e')*(c')
a =
1.0e+004 *
-0.0158 0.0001 -0.0010 0
-0.4240 0 -0.0173 0
-0.0095 0 -0.0160 0.0001
-1.3477 0 -0.3339 0
(3) 仿真图像
初始状态为,横杆角度的仿真图像
Matlab编程为:
a=[0,1,0,0;0,0,-140.1429,0;0,0,0,1;-24.52,0,0,0];
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-8+8.39*j,-8-8.39*j,-45-8.39*j,-45+8.39*j];
k=acker(a,b,p)
k =
-40.6826 -6.5114 73.4030 2.1202
>> a1=a-b*k;
>> u=0;
>> g=ss(a1,b,c,d);
>> x0=[0.3 0 pi/6 0];
>> [y,t,x]=initial(g,x0);
>> plot(t,x)
初始状态为,横杆角度的仿真图像
Matlab编程为:
a=[0,1,0,0;0,0,-140.1429,0;0,0,0,1;-24.52,0,0,0];
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-8+8.39*j,-8-8.39*j,-45-8.39*j,-45+8.39*j];
k=acker(a,b,p)
k =
-40.6826 -6.5114 73.4030 2.1202
>> a1=a-b*k;
>> u=0;
>> g=ss(a1,b,c,d);
>> x0=[-0.3 0 - pi/6 0];
>> [y,t,x]=initial(g,x0);
>> plot(t,x)
(4) 观测器输出与系统状态差值图像(t-e)
当初始状态为,横杆角度时.
Matlab编程为:
a=[0,1,0,0;0,0,-140.14,0;0,0,0,1;-24.52,0,0,0];
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-24+8.39*j,-24-8.39*j,-135+8.39*j,-135-8.39*j];
c=c';
a=a';
e=place(a,c,p);
a=a'-(e')*(c');
c=c';
b=[0;0;0;0];
x0=[0.3 0 pi/6 0];
g=ss(a,b,c,d);
[y,t,x]=initial(g,x0);
>> plot(t,x)
当初始状态为,横杆角度时.
Matlab编程为:
a=[0,1,0,0;0,0,-140.14,0;0,0,0,1;-24.52,0,0,0];
b=[0;0;0;49.995];
c=[1,0,0,0;0,0,1,0];
d=0;
p=[-24+8.39*j,-24-8.39*j,-135+8.39*j,-135-8.39*j];
c=c';
a=a';
e=place(a,c,p);
a=a'-(e')*(c');
c=c';
b=[0;0;0;0];
x0=[-0.3 0 -pi/6 0];
g=ss(a,b,c,d);
[y,t,x]=initial(g,x0);
>> plot(t,x)
(5)用simulink进行仿真.
若用simulink仿真图像
则加入反馈之后状态空间表达式为:
初始状态为,横杆角度的仿真图像
初始状态为,横杆角度的仿真图像
若用simulink仿真图像 ,则
初始状态为,横杆角度的仿真图像
初始状态为,横杆角度的仿真图像
展开阅读全文