1. 项目背景与核心目标
倒立摆系统作为控制理论中的经典实验平台,一直是验证各类控制算法有效性的"试金石"。其中二级倒立摆更因其高度非线性、强耦合性和天然不稳定性,成为检验控制策略鲁棒性的理想对象。这个项目通过Matlab/Simulink搭建完整的仿真环境,对PID控制和LQR控制这两种典型方法进行系统性对比。
我最早接触倒立摆是在研究生阶段的自动控制原理课上,当时用一根木棍和电机搭建的简易一级倒立摆就让我们小组折腾了整整两周。后来在工业现场看到倒立摆原理在起重机防摇、火箭姿态控制等场景的实际应用,才真正理解这个看似简单的系统蕴含的控制思想。这次仿真将重点关注三个核心问题:
- 传统PID在非线性系统中的参数整定技巧
- LQR控制中权重矩阵Q/R的物理意义与选取原则
- 两种控制在抗干扰性和能耗方面的量化对比
2. 系统建模与仿真环境搭建
2.1 二级倒立摆动力学模型
采用拉格朗日方程建立系统数学模型。定义以下变量:
- 小车质量M=0.5kg
- 摆杆1质量m1=0.2kg,长度l1=0.3m
- 摆杆2质量m2=0.1kg,长度l2=0.25m
- 摆杆1与竖直方向夹角θ1
- 摆杆2与摆杆1夹角θ2
通过动能T和势能V的计算,得到非线性微分方程组。在平衡点附近进行线性化处理后,得到状态空间表达式:
code复制ẋ = Ax + Bu
y = Cx + Du
其中状态变量x=[x, θ1, θ2, ẋ, θ̇1, θ̇2]^T,u为控制力。这个模型将作为后续两种控制器的设计基础。
2.2 Simulink仿真框架
搭建包含以下模块的仿真系统:
- 非线性plant模型:用S-function实现精确动力学
- 控制器模块:分别实现PID和LQR
- 干扰注入模块:模拟脉冲扰动和持续白噪声
- 数据记录模块:保存关键状态量和控制输入
- 可视化模块:实时显示摆动动画和状态曲线
特别要注意采样时间的设置,建议固定在0.005s以保证数值稳定性。我在初期测试中发现,当采样时间大于0.01s时,系统容易出现数值发散问题。
3. PID控制器设计与实现
3.1 多回路PID结构设计
针对二级倒立摆的耦合特性,采用分层控制结构:
- 内环(快速环):控制下摆角度θ1,使用PD控制
- Kp1=120, Kd1=15
- 中环:控制上摆角度θ2,使用PID控制
- Kp2=80, Ki2=5, Kd2=10
- 外环(慢环):控制小车位置x,使用PI控制
- Kp3=5, Ki3=0.1
这种结构通过时间尺度分离降低了系统耦合度。实际调试时需要注意:
必须先调内环再调外环,否则系统极易失稳。我的经验是先用纯P控制让系统勉强稳住,再逐步加入D和I项。
3.2 参数整定实战技巧
通过试错法结合Ziegler-Nichols规则进行参数整定:
- 先将所有I和D项置零
- 逐步增大Kp直到系统出现等幅振荡
- 记录临界增益Ku和振荡周期Tu
- 按标准规则计算初始PID参数
- 根据响应特性微调参数
实测中发现几个关键现象:
- 下摆的D项过大会导致上摆剧烈抖动
- 位置环的I项必须很小(<0.2)否则会产生积分饱和
- 在±5°范围内线性度较好,大角度时需要增益调度
4. LQR控制器设计与优化
4.1 权重矩阵的物理意义
LQR的性能指标J=∫(xᵀQx + uᵀRu)dt中:
- Q矩阵对角元素对应状态变量的惩罚权重
- R元素表示控制能量的代价
通过Bryson规则确定初始权重:
code复制Q = diag([1/(max_x)², 1/(max_θ1)², 1/(max_θ2)², ...])
R = 1/(max_u)²
取max_x=0.5m, max_θ=0.3rad(约17°), max_u=10N得到:
Q = diag([4, 11, 11, 0, 0, 0])
R = 0.01
4.2 求解Ricatti方程
使用Matlab的lqr命令直接求解:
matlab复制[K,S,e] = lqr(A,B,Q,R);
得到的反馈增益矩阵K包含六个状态量的权重系数。实际实现时需要注意:
- 全状态反馈需要所有状态可测(可用观测器估计)
- 在Simulink中用Gain模块实现u=-Kx
- 需要添加输出限幅保护执行机构
4.3 抗干扰性增强设计
通过调整Q矩阵提高鲁棒性:
- 增加角度状态权重(Q(2,2),Q(3,3))提升抗摆动能力
- 增加速度状态权重(Q(5,5),Q(6,6))抑制振荡
- 适当减小R值允许更大控制力
经过多次调试,最终采用的强化Q矩阵为:
Q = diag([4, 30, 30, 0, 10, 10])
5. 对比仿真与结果分析
5.1 性能指标定义
定义三个量化指标:
- 稳定时间Ts:从扰动恢复到±1%稳态值的时间
- IAE(绝对误差积分):∫|e(t)|dt
- 控制能耗:∫u²(t)dt
5.2 脉冲响应测试
施加0.1s的5N脉冲力,结果对比:
| 指标 | PID控制 | LQR控制 |
|---|---|---|
| Ts | 2.8s | 1.5s |
| IAE | 0.37 | 0.21 |
| 能耗 | 18.6 J | 14.2 J |
LQR在恢复速度和能量效率上表现更优,特别是在上摆的振荡抑制方面。
5.3 持续干扰测试
加入方差为0.5的白噪声干扰:
| 指标 | PID控制 | LQR控制 |
|---|---|---|
| 角度波动 | ±3.2° | ±1.8° |
| 位置偏移 | ±0.15m | ±0.06m |
| 能耗 | 25.4 J/s | 19.7 J/s |
LQR展现出更好的干扰抑制能力,这得益于其最优控制特性。
6. 工程实践中的经验总结
6.1 PID控制的适用场景
当具备以下条件时,PID仍是良好选择:
- 系统工作点变化不大(小角度范围)
- 对实时计算资源有严格限制
- 需要快速原型开发
- 操作人员熟悉手动调参
在某个物流分拣项目里,我们就用PID实现了传送带摆轮控制,主要看中其实现简单、调试直观的特点。
6.2 LQR的实施要点
成功应用LQR需要注意:
- 模型准确性决定性能上限
- 状态观测器的设计同样关键
- 实际系统往往需要在线调整Q/R
- 执行机构饱和问题必须考虑
曾在一个平衡车项目中发现,当电池电压下降时,需要动态调大R值来适应电机出力限制。
6.3 进阶改进方向
两种方法的融合与改进:
- PID+LQR混合控制:用LQR稳定大角度,PID维持平衡
- 增益调度:根据角度范围切换参数组
- 加入输入整形器(Input Shaping)抑制残余振荡
在最近的一个实验中,我们尝试用强化学习自动调整Q矩阵,相比固定参数提升了约15%的抗干扰性能。