一阶倒立摆由摆杆与运动平台组成。运动平台在皮带的牵引下可以左右运动。假设摆杆是均质杆,以其质心的速度/加速度代表摆杆的速度/加速度,系统结构如图:

其中M是运动平台的质量,x是平台的位置。m为摆杆质量,l为摆杆长度的一半。
受力分析
运动平台受力如图:

其中F是平台受到皮带的牵引力,f是阻力系数。将运动平台作用于摆杆的力分解为水平分量N和垂直分量P,N’、P’是摆杆作用于运动平台的反作用力。
分析水平方向的受力:
摆杆受力如图:

其中g为重力加速度常数,是从竖直向下方向到摆杆的夹角。
假设在极短的时间内摆杆角度不发生变化,分析水平方向的受力:
分析垂直方向的受力:
分析受到的力矩:
其中I为转动惯量,,以顺时针方向为的正方向
传递函数建模
根据受力分析,可以计算:
代入转矩平衡,做化简:
在顶部不稳定平衡点附近
此时,做一个变量替换:.则有:。如果很小,可以线性化:
则转矩平衡方程可以进一步简化:
假设:
代入则有:
运动平台的加速度→摆杆对竖直向上方向的夹角
将上式写成传递函数形式即可。
有一正一负两个极点,系统不稳定
运动平台受到的牵引力→摆杆对竖直向上方向的夹角
根据前文的分析,有:
因此,将力N代入运动平台的受力平衡方程:
同样做变量替换,则有:
由转矩平衡方程:
取Laplace变换:
代入数据
代入则有:
状态空间建模
同样做变量替换:.在不稳定平衡点附近做线性化,并近似,则转矩平衡方程:
受力平衡:
选取状态变量,控制变量,输出变量:
则有:
Simulink仿真
在Simulink中搭建闭环模型,分析系统的单位阶跃响应:


使用PID控制器镇定系统:



倒立摆系统PID控制器
使用从运动平台所受牵引力→摆杆角度的传递函数。


可以看出该系统是不稳定的。画出这个系统的根轨迹,可以看出无论增益如何变化,始终存在一个不稳定的极点。

考虑使用PID控制器,为系统增加一对共轭复极点:

取共轭复极点为,可以从根轨迹看出,当增益在50左右使可以收获较为理想的性能。根据以上数据代入计算:


调节时间0.298s,稳态误差为0,满足设计要求。
摆杆角度控制
实际倒立摆运行时,给定输入为0,而存在扰动力,此时的模型可以归纳为:

运行仿真发现,之前选择的PID参数仍然满足要求。

运动平台位置控制
由于导轨的长度是有限的,因此还需要控制运动平台的位置。
由前文的分析:
从中导出从力到平台位置的传递函数:
则可以进一步导出从角度到运动平台位置的传递函数:


可以看出,虽然摆杆的角度得到了控制,但运动平台的位置并没有得到控制。如果摆杆多次受到同一方向的扰动,运动平台就有可能达到运动极限导致系统失控。因此为运动平台的位置也增加闭环控制。增加了一级PID后,系统整体的传递函数:
画出该系统的根轨迹:

可以看出在右侧有一对零极点,导致无论增益如何调节,都会有一个不稳定极点出现。这种情况下使用PID校正是比较困难的。
倒立摆系统LQR控制器
根据前文的分析,系统的状态空间表达式:
代入数据:
在Simulink中搭建仿真模型,向模型输入单位阶跃,可以看出该系统是发散的:


LQR算法有已经封装好的函数,可以直接调用。调用时需要指定两个矩阵。矩阵Q为性能指标函数对于状态变量的权值矩阵,为对角阵,每个元素对应一个状态变量。元素越大,说明着该变量在性能函数中越重要。矩阵R为控制量的权重,也对角阵,每个元素对应一个输入量。同样地,元素越大,说明控制约束越大。取Q=diag(500,30,50,10),在MATLAB工作区编程:
在Simulink中可以直接调用计算结果,引入状态反馈,其中增益K是由LQR算法计算出的反馈矩阵:


可以看出,系统已经稳定。
但是此时运动平台位置仍然没有被控。假设我们要控制这个量,则应该给这个量一个参考输入。例如在下图里,给了它幅值为0.2的阶跃信号作为参考输入。

