本文内容基于学校中刚刚结束的一次控制实验,实验对象是一个简易起重机模型,要用它实现预给轨迹的控制。起重机广泛应用于货物装卸,它的动力学建模后为一个非线性系统,不能直接应用线性系统的控制方法,需要适当做一些调整。如果直接在工作点附近Jacobi一阶线性化,工作点以外其他位置偏离太多反馈控制起来会很吃力,甚至失稳。因而如果能够让非线性系统的前馈控制主导下的状态变量轨迹十分靠近目标轨迹,那么最终控制效果会十分稳健理想。而基于平坦系统的前馈控制和跟踪轨迹误差反馈控制,最后设计的模型就会在dSPACE系统上模拟,通过两个轴互相垂直的电机来驱动。
如果没有微分平坦性相关基础的同学,可以在我之前的几个回答里找到一定参考。
如何理解微分平坦性(Differential Flatness)?
输入输出线性化时,如果控制输入有多个,应该怎么处理?
现代控制理论线性系统入门(十)轨迹追踪反馈控制 该文章有最后有关于平坦系统的介绍,以及以线性化以后的倒立摆的线性系统的例子。
起重机的实际物理过程可以简化为以下两个质量块的模型:
在水平轨道上的小车视为质量为
小车电机牵引吊绳的转矩为
设广义坐标
(1)
其时间导数为
(2)
故有动能
(3)
总势能
(4)
而系统受到的广义外源力
(5)
于是有拉格朗日量
(6)
得到三个拉格朗日方程
将二阶项移到左边,即
这是三个二阶非线性微分方程,于是可以引入新的状态变量
(7)
得到系统的状态方程
(8)
其中
我们已经成功建立了系统的状态方程,以上细节计算十分繁琐易错,不建议手算,应当使用字母运算的软件工具,比如Maple、Matlab。
众所周知,要想一端输入信号和系统另一端输出信号轨迹一致,必须要用到受控系统的逆系统来实现轨迹追踪的前馈控制。而基于平坦输出的微分参数化,可以轻松得到一个非线性平坦系统的逆系统,这样就能实现前馈追踪控制,在这里则使用双自由度的前馈控制的设计。
要证明该系统是平坦系统,必须找到一组平坦输出,使得有它产生的微分参数能够线性无关地表示所有状态变量,以及输入变量。
质量块相对于小车的坐标
由牛顿第二定律得
(9)
由几何关系可知
(10)
继续通过求导,易知剩余的状态变量也可以用
(11)
而当输入变量为
(12)
可见,如果想要用微分参数描述状态输入量,
现在来确定输入目标轨迹,已知质量块的位置
(13)
设轨迹多项式为
(14)
解得这10个待定系数,得到目标轨迹横坐标分量
(15)
易得关于目标轨迹纵坐标分量
(16)
显然,目标轨迹
承接上文,在电机运行中出现的阻力
本实验的各个扰动模型,基于干摩擦以及湿摩擦的性质,已经给出,并且参数也经过识别,不过会因为老化,参数产生波动。
滑轮摆动的转矩由下式估计描述
(17)
包含的参数有:粘性摩擦系数
吊绳卷筒上转动的转矩由下式估计描述
(18)
其中卷筒转动角速度为
小车阻力由下式估计描述
(19)
小车阻力的参数跟小车的运动方向有关。
若为正向,有:粘性摩擦系数
若为负向,有:粘性摩擦系数
上面三种阻力模型所需的变量
下一节更新会继续讨论观测器、控制器的设计以及在MATLAB/Simulink中的模拟。
下一章传送门:
善道:控制实验:起重机模型非线性系统基于微分平坦性的轨迹控制(二)zhuanlan.zhihu.com