文章目录
0.摘要
本文将针对一阶倒立摆和二阶倒立摆系统,对其利用《线性系统理论》课程中的相
关知识进行分析,主要包括如下内容:
- 建立数学模型,1)牛顿定律;2)分析力学,即欧拉拉格朗日方程(两个方程应
该是一样的); - 基于 1 的结果,运用 Simulink 工具箱搭建仿真;
- 学习 Multibody 工具箱(即 SimMechancis 工具箱)建立基于图形用户界面的建
模方式; - 推导研究对象的线性化模型(平衡点、泰勒线性化展开);
- 指定系统的测量与控制变量,讨论系统线性化系统的的能控性和能观性、以及稳
定性(Routh-Hurwitz 判据、Lyapunov 函数); - 基于极点配置方法的控制器设计(要求闭环的仿真),使用 place、acker 等 MATLAB
命令; - 涉及状态观测器,包括全阶观测器、降阶观测器;
- 基于观测器的极点配置问题仿真;
- 基于 LQR 控制的设计方法,如 Riccatti 方程等。
最后,本文中使用的 MATLAB 代码和 Simulink 仿真模型已经上传到 GitHub 上。
Code: https://github.com/Cc19245/Inverted-pendulum.git
1.一阶倒立摆分析与控制
内容太多,在单独一篇文章中:线性系统大作业——1.一阶倒立摆建模与控制系统设计
2.二阶倒立摆分析与控制
内容太多,在单独一篇文章中:线性系统大作业——2.二阶倒立摆建模与控制系统设计
3.问题与总结
3.1.数学建模问题
一阶倒立摆的建模相对来说比较简单,二阶倒立摆的建模就比较复杂了,并且经过验证本文中二阶倒立摆的建模也是存在一点小问题的。
二阶倒立摆建模的参考了一篇西北工业大学的硕士论文,名字是《二级倒立摆系统的稳定控制研究》,作者叫刘琛。主要问题是文中对两个摆杆使用动量矩方程的时候是在非惯性系中使用的,也就是考虑了惯性力,然后对绕着转轴的点列力矩方程,也就是推导的公式中的转动惯量 I i I_i Ii应该是杆绕着转轴的转动惯量,即 1 3 m L 2 \frac{1}{3}mL^2 31mL2, L L L是gan杆的总长。但是最终建立的模型和SimMechancis 进行对比发现对不上,而把这个转动惯量改成杆绕着质心的转动惯量结果就对上了,也就是 1 12 m L 2 \frac{1}{12}mL^2 121mL2。
我感觉公式推导错误的原因可能是在非惯性系中的动量矩方程没有那么简单,可能有附加项。但是因为这个方法推导比较方便,而且结果只是转动惯量优点差别,加之推导比较麻烦,我就没有自己再去推导。如果想自己推导的话,方法还是牛顿定律和拉格朗日方程两种,有两点可以注意:
- 牛顿力学分析的话,针对摆杆分析可以使用刚体平面运动微分方程来建立数学模型,具体可以参见哈工大版的理论力学课本。这种分析方法应该是绝对正确的。
- 拉格朗日方程的推导,需要求导和求偏导,比较复杂,可以使用MATLAB进行符号函数的求导,非常方便。同理,上面使用牛顿力学推导的方法也可以使用MATLAB符号求导来简化计算量。
3.2.二阶倒立摆的观测器设计
二阶倒立摆的可观性分析中,如果只输出小车位移
x
x
x,那么系统也是能观的。但是这个时候如果设计观测器,会发现观测器的反馈增益
K
e
K_e
Ke非常大,数量级在
1
0
5
10^5
105左右。然后仿真的时候就会出现数值稳定性问题,经常报错NaN错误
或者出现复数的错误
,但是如果把观测器的初始误差设置为0,就是初始观测就是完全准确的,那么就不会出现这些错误。初步分析了一下应该就是因为观测器的反馈增益太大了,导致计算溢出。
因此后面选择输出小车位移 x x x和两个摆杆的角度 θ 1 \theta_1 θ1和 θ 2 \theta_2 θ2,这样系统也是可观的,但是设计的观测器增益数量级只在 1 0 2 10^2 102左右,就不存在数值稳定性的问题。
问题:为什么会这样呢?自己没有想的很明白。
4.参考资料
1.建模参考上面说的那篇硕士论文
2.观测器控制器设计参考
现代控制工程(第五版),相关的中英文电子书也在代码所在的github上。
5.文件格式转化
本文是大作业整理出来的,原文使用LaTeX撰稿,然后使用工具将LaTeX转化为MarkDown文件,转换后还是有点小错误,需要手动修改。
转换方法:如何将tex文件改为markdown文件