1. 项目背景与核心挑战
倒立摆系统作为控制理论中的经典研究对象,常被用来验证各种控制算法的有效性。二级倒立摆相比一级倒立摆具有更高的阶数和更强的非线性特性,其控制难度呈指数级增长。这个项目通过Matlab/Simulink搭建仿真环境,对比研究PID控制和LQR控制在二级倒立摆稳定控制中的表现差异。
我在实验室第一次接触二级倒立摆时,就被它"桀骜不驯"的特性所震撼——即使使用经过精心调参的PID控制器,摆杆也常常在几秒钟内就失去平衡。这种系统对控制器的设计要求极高,需要同时考虑响应速度、稳定性和抗干扰能力。
2. 系统建模与参数确定
2.1 动力学方程推导
二级倒立摆的动力学建模是控制设计的基础。采用拉格朗日方程进行建模,定义以下变量:
- θ₁:一级摆杆与垂直方向的夹角
- θ₂:二级摆杆与一级摆杆的相对夹角
- l₁,l₂:两级摆杆的长度
- m₁,m₂:两级摆杆的质量
- M:小车质量
通过能量法推导得到的非线性微分方程非常复杂,通常需要在平衡点附近进行线性化处理。我在推导过程中发现,忽略某些高阶小项会显著简化方程而不影响控制效果,这个经验对后续的控制器设计很关键。
2.2 系统参数测量
我们使用的实验平台参数如下表所示:
| 参数 | 数值 | 单位 | 测量方法 |
|---|---|---|---|
| 小车质量M | 0.5 | kg | 电子秤直接测量 |
| 一级摆杆质量m₁ | 0.2 | kg | 电子秤测量 |
| 二级摆杆质量m₂ | 0.1 | kg | 电子秤测量 |
| 一级摆杆长度l₁ | 0.3 | m | 直尺测量 |
| 二级摆杆长度l₂ | 0.2 | m | 直尺测量 |
| 摆杆转动惯量 | 计算得出 | kg·m² | 通过几何形状和质量分布计算 |
注意:摆杆的转动惯量测量误差会直接影响控制效果,建议通过频响实验进行验证校准。
3. PID控制器设计与实现
3.1 控制结构设计
对于二级倒立摆系统,采用串级PID控制结构:
- 外环:角度控制环(一级摆杆角度θ₁)
- 内环:角度差控制环(二级摆杆相对角度θ₂)
这种结构比单环PID更能处理系统的耦合特性。在实际调试中,我发现必须先调好内环参数,再调试外环,否则系统极易发散。
3.2 参数整定方法
使用试凑法结合Ziegler-Nichols法则进行参数整定:
- 先将所有微分项设为0,逐步增大比例项直到系统出现持续振荡
- 记录此时的临界增益Kc和振荡周期Tc
- 按照Z-N法则计算初始PID参数
- 在此基础上进行微调
调试过程中的经验参数:
| 控制环 | P | I | D | 备注 |
|---|---|---|---|---|
| 内环 | 15 | 0 | 0.5 | 微分项对抑制振荡很关键 |
| 外环 | 8 | 0.1 | 0.3 | 需要较小的积分项 |
实操技巧:在Simulink中使用"PID Tuner"工具可以大幅提高调试效率,但手动微调仍是必要的。
4. LQR控制器设计与实现
4.1 状态空间模型
将线性化后的系统表示为状态空间形式:
ẋ = Ax + Bu
y = Cx + Du
其中状态变量选择为:
x = [θ₁ θ₂ θ̇₁ θ̇₂ x ẋ]ᵀ
在设计过程中,我意识到状态变量的选择会显著影响LQR的控制效果。经过多次尝试,发现包含小车位置和速度可以使系统具有更好的抗干扰能力。
4.2 权重矩阵选择
LQR的性能指标为:
J = ∫(xᵀQx + uᵀRu)dt
经过反复仿真测试,最终确定的权重矩阵为:
Q = diag([1000 500 50 50 10 1])
R = 0.01
这个权重配置使系统在响应速度和能量消耗之间取得了良好平衡。特别值得注意的是,角度误差的权重远大于角度速率的权重,这符合倒立摆控制的物理直觉。
5. 仿真对比分析
5.1 稳定性测试
在初始条件θ₁=5°,θ₂=3°下,两种控制器的稳定时间对比:
| 控制器类型 | 稳定时间(s) | 超调量(%) | 稳态误差(°) |
|---|---|---|---|
| PID | 3.2 | 15 | ±0.5 |
| LQR | 1.8 | 5 | ±0.1 |
LQR表现出更快的响应速度和更小的超调量,这得益于其全局最优的特性。
5.2 抗干扰测试
在系统稳定后第5秒施加0.1N·s的瞬时冲量干扰,结果对比:
| 指标 | PID控制 | LQR控制 |
|---|---|---|
| 最大偏离角度 | 8.2° | 4.5° |
| 恢复时间 | 4.5s | 2.1s |
| 控制能量消耗 | 较高 | 较低 |
LQR在抗干扰性能上全面占优,这在实际应用中非常重要。
6. 实现细节与技巧
6.1 Simulink建模要点
- 使用"PID Controller"模块时,务必选择"Time Domain"为"Continuous-time"
- 对于LQR控制,使用"Gain"模块实现状态反馈
- 添加"饱和"限制模块防止执行器过载
- 使用"Scope"模块记录关键状态变量
6.2 实际调试经验
- 先仿真再实机:在硬件上调试前,务必在仿真中验证控制算法
- 安全第一:设置急停开关,防止摆杆失控造成损坏
- 数据记录:保存每次调试的参数和结果,便于分析比较
- 温度影响:长时间运行后电机参数会变化,需要重新校准
7. 扩展应用与进阶方向
基于这个项目的成果,可以进一步探索:
- 模糊PID控制:结合模糊逻辑实现参数自适应
- 鲁棒控制:考虑系统参数不确定性和外部干扰
- 强化学习:尝试用DDPG等算法实现智能控制
- 硬件实现:将仿真模型移植到实际控制平台
我在研究生阶段曾尝试过第三种方向,发现强化学习虽然不需要精确的数学模型,但训练过程非常耗时,且在实际硬件上部署时面临实时性挑战。这让我更加理解了经典控制理论的价值。