课题背景2020/2/21两轮自平衡小车的左右轮共轴、独立驱动、整个车身质心基本位于车轮轴正上方,通过车轮前后运动实现动态平衡,并且可以实现直立行走。作为人为驾驶的代步工具,将会使得人们小范围、短距离的上班出行变得更加方便、灵活、环保。课题背景2020/2/22双轮机器人属于动态稳定而静态不稳定的系统,本身具有多变量、非线性、强耦合等特性,它能有效反映诸如稳定性、鲁棒性、随动性等控制理论中的关键问题,对于学生掌握控制系统设计的基本方法十分有帮助,因而具有较大的研究价值。课题背景2020/2/23系统工作原理AccelerometergyroscopeAD采样滤波MCU驱动器1驱动器2左轮右电机左电机右轮软件编码软件编码电源减速机构减速机构无线模块遥控器课题背景2020/2/24系统工作原理前进(后仰)前进(纠正前倾)后退(前倾)后退(纠正后仰)由于车身是不断变化,检测、反馈就不断随之变化,动态地跟踪车身的倾角状态,使车身一直保持平衡状态,这就是动态自平衡原理。控制对象分析与建模2020/2/25忽略空气阻力后,可以将两轮平衡车抽象成小车和匀质杆组成的系统,如下图所示:其中,M——小车质量m——摆杆质量b——小车的摩擦系数l——摆杆的转动轴心到质心的长度I——摆杆惯量F——施加给小车的力x——小车的位置θ——摆杆与垂直向下方向的夹角φ——摆杆与垂直向上方向的夹角自平衡车系统简图图2小车及摆杆受力分析控制对象分析与建模2020/2/26忽略空气阻力后,可以将两轮平衡车抽象成小车和匀质杆组成的系统,如下图所示:其中,M——小车质量m——摆杆质量b——小车的摩擦系数l——摆杆的转动轴心到质心的长度I——摆杆惯量F——施加给小车的力x——小车的位置θ——摆杆与垂直向下方向的夹角φ——摆杆与垂直向上方向的夹角图1自平衡车系统简图图2小车及摆杆受力分析控制对象分析与建模2020/2/21.分析小车在水平方向所受合力可得:2.分析摆杆在水平方向所受合力可得:(1)(2)3.把(2)式带入(1)式可得系统的第一个运动方程:(3)4.对摆杆垂直方向受力分析可得:(4)5.把(4)式带入(3)式可得系统的第二个运动方程:(5)控制对象分析与建模2020/2/26.被控对象的输入力F用u表示,线性化后得到运动方程:(6)7.整理后得到系统状态空间方程:(7)控制对象分析与建模2020/2/26.各物理量取以下数值,得到状态空间矩阵为:M=1.096kgm=0.109kgb=0.1N/(m·s)I=0.034kg·m2l=0.25mg=9.8m/s2状态变量控制变量输出变量状态方程控制对象分析与建模2020/2/27.能控性和能观性分析:),,,(32bAbAAbbM32,,,CACACACNMatlab程序:结论:Rank(M)=4系统完全能控Rank(N)=4系统完全能观symsImMlbgxfai;M=1.096;m=0.109;b=0.1;I=0.034;l=0.25;g=9.8;t=I*(M+m)+M*m*l^2;A=[0,1,0,0;0,-(I+m*l^2)*b/t,m^2*g*l^2/t,0;0,0,0,1;0,-m*l*b/t,m*g*l*(M+m)/t,0;]B=[0;(I+m*l^2)/t;0;m*l/t;]C=[1,0,0,0;0,0,1,0;]Uc=ctrb(A,B)Vo=obsv(A,C)rankc=rank(Uc)ranko=rank(Vo)namid=eig(A)计算结果:rankc=4ranko=4稳定性分析2020/2/2运用Matlab解出矩阵A的特征值如下:namid=eig(A)namid=0-0.0830-2.57822.5769A的特征值中有一个零点和一个整根,故系统的状态是不稳定的。传递函数:阶跃输入的响应曲线极点配置2020/2/21.状态反馈矩阵K的计算已知该系统不稳定,要使系统稳定,必须重新配置极点,因为状态矩阵完全能控,所以可以采用状态反馈来使系统稳定。通过设置不同的极点,可以得到不同的状态反馈矩阵,再通过比较不同输入下的响应曲线的响应速度和稳定性,可以得出一组较好的极点以及状态反馈矩阵。pole=[-1,-2,-3,-4];K=place(A,B,pole)A1=A-B*K;pole=[-3,-4,-5,-6];K=place(A,B,pole)A2=A-B*K;pole=[-8,-9,-10,-11];K=place(A,B,pole)A3=A-B*K;Matlab计算程序:极点为[-1,-2,-3,-4]时:K1=[-4.3530-9.168880.540631.3573]极点为[-3,-4,-5,-6]时:K2=[-65.2954-62.1306321.1232124.8984]极点为[-8,-9,-10,-11]时:K3=[-1436.5-613.53121.3986.3]计算结果:极点配置2020/2/22.阶跃输入下的响应Matlab计算程序:sys1=ss(A1,B,C,D);curve1=step(sys1);sys2=ss(A2,B,C,D);curve2=step(sys2);sys3=ss(A3,B,C,D);curve3=step(sys3);figure;holdon;plot(curve1(:,1),'color','blue');plot(curve2(:,1),'color','red');plot(curve3(:,1),'color','green');xlabel(‘时间(s)');ylabel(‘位移(m)');holdofffigure;holdon;plot(curve1(:,2),'color','blue');plot(curve2(:,2),'color','red');plot(curve3(:,2),'color','green');xlabel(‘时间(s)');ylabel(‘摆动角度(rad)');holdoff极点配置2020/2/22.阶跃输入下不同状态反馈矩阵K的响应曲线极点配置2020/2/22.白噪声输入下不同状态反馈矩阵K的响应曲线。Matlab计算程序:figurey1=wgn(100,1,0);t=1:100;sys=ss(A,B,C,D);lsim(sys,y1,t);sys1=ss(A1,B,C,D);curve1=lsim(sys1,y1,t);sys2=ss(A2,B,C,D);curve2=lsim(sys2,y1,t);sys3=ss(A3,B,C,D);curve3=lsim(sys3,y1,t);figure;holdon;plot(curve1(:,1),'color','blue');plot(curve2(:,1),'color','red');plot(curve3(:,1),'color','green');xlabel(‘时间(s)');ylabel(‘位移(m)');holdofffigure;holdon;plot(curve1(:,2),'color','blue');plot(curve2(:,2),'color','red');plot(curve3(:,2),'color','green');xlabel(‘时间(s)');ylabel(‘摆动角度(rad)');holdoff极点配置2020/2/22.白噪声输入下不同状态反馈矩阵K的响应曲线状态观测器设计2020/2/2系统能观,故可以设计状态观测器。设置极点设为-2,-3,-4,-51.全维状态观测器Matlab计算程序:全维观测器方程:A=[0100;0-0.08430.15020;0001.0000;0-0.05636.64370;]C=[1,0,0,0;0,0,1,0;]op=[-2,-3,-4,-5];G=(place(A,C',op))‘;G=[3.998,-0.003487603.4,-2207.0-0.8127,9.917-14.44,55.45]反馈矩阵G:进一步的工作2020/2/21.状态观测器设计2.极点配置3.Matlab仿真参考文献2020/2/21.赵勇.两轮不稳定机器人载体运动学及动力学变结构控制研究.西安电子科技大学硕士论文.20072.茹斐斐.双闭环控制方法在两轮自平衡车中的应用研究.河南大学.2013