MATLAB实战:手把手教你用LQR搞定一阶倒立摆(附完整代码与Simulink模型)

张开发
2026/4/10 11:33:38 15 分钟阅读

分享文章

MATLAB实战:手把手教你用LQR搞定一阶倒立摆(附完整代码与Simulink模型)
MATLAB实战从零实现LQR控制一阶倒立摆的完整指南倒立摆作为控制理论中的经典问题一直是检验算法优劣的试金石。记得第一次在实验室见到实物倒立摆时那种稍有不慎就会倒下的不稳定特性让我着迷。如今借助MATLAB和LQR控制器我们能够用数学的力量驯服这个看似桀骜不驯的系统。本文将带你完整走一遍从建模到实物控制的全部流程避开那些教科书不会告诉你的实践陷阱。1. 环境准备与模型建立工欲善其事必先利其器。在开始控制算法设计前我们需要确保MATLAB环境配置正确。推荐使用R2020b或更新版本这些版本对控制系统工具箱的支持最为完善。安装时务必勾选以下工具箱Control System ToolboxSimulinkSimscape Multibody可选用于3D可视化一阶倒立摆的物理模型可以简化为小车上的单摆系统。设小车质量为M摆杆质量为m摆杆长度为l摆角为θ。通过拉格朗日力学推导我们得到非线性状态方程% 非线性倒立摆动力学参数 M 0.5; % 小车质量(kg) m 0.2; % 摆杆质量(kg) l 0.3; % 摆杆长度(m) g 9.81; % 重力加速度(m/s^2)在平衡点附近θ≈0进行线性化后得到状态空间表示A [0 1 0 0; 0 0 -m*g/M 0; 0 0 0 1; 0 0 (Mm)*g/(M*l) 0]; B [0; 1/M; 0; -1/(M*l)]; C [1 0 0 0; 0 0 1 0]; % 观测小车位置和摆角 D [0; 0];重要检查点建立模型后应立即验证系统特性能控性矩阵ctrb(A,B)的秩应为4能观性矩阵obsv(A,C)的秩应为4开环极点eig(A)应包含不稳定极点提示实际物理系统的参数可能与此不同建议先用这些参数完成仿真验证再根据实物参数调整。2. LQR控制器设计与参数整定线性二次型调节器(LQR)的核心在于平衡状态调节与控制代价。其性能指标为 [ J \int_0^\infty (x^TQx u^TRu)dt ]2.1 Q和R矩阵的选择艺术Q矩阵决定状态变量的权重通常采用对角矩阵形式。一个实用的初始选择策略Q diag([q1 q2 q3 q4]); % 对应位置、速度、角度、角速度 R r; % 控制量权重推荐参数调试流程初始设置Qdiag([10 0 100 0])R1先调整角度权重q3确保摆杆稳定再调整位置权重q1优化小车位移最后微调速度项q2/q4改善动态性能参数调试实战记录尝试Q矩阵R结果评价1diag([10 0 100 0])1角度稳定但位置超调大2diag([50 0 100 0])1位置响应改善控制量增大3diag([50 1 100 5])0.5综合性能最佳响应快且平稳2.2 控制器实现代码完整的LQR设计流程MATLAB实现% 系统能控性检查 if rank(ctrb(A,B)) size(A,1) disp(系统完全能控可进行LQR设计); else error(系统不能控请检查模型); end % LQR控制器设计 Q diag([50 1 100 5]); % 经过调试的最佳权重 R 0.5; % 控制量权重 [K,S,e] lqr(A,B,Q,R); % 获取最优反馈矩阵K disp(最优反馈增益矩阵K:); disp(K); disp(闭环极点:); disp(e);注意实际项目中建议将参数调试过程封装成函数方便反复调用和参数扫描。3. Simulink建模与仿真验证理论设计需要通过仿真验证才能应用于实际系统。我们构建完整的仿真模型3.1 搭建Simulink模型关键步骤非线性模型实现使用Function Block实现精确的非线性动力学或者使用Simscape Multibody进行物理建模控制器模块% 在MATLAB Function Block中实现状态反馈 function u lqr_control(x) K [-31.62 -21.80 83.41 14.24]; % 上步计算的K矩阵 u -K*x; % 状态反馈 end传感器模拟添加高斯白噪声模拟实际传感器噪声设置低通滤波器消除高频噪声3.2 仿真结果分析要点时域指标稳定时间(2%准则)超调量稳态误差鲁棒性测试脉冲扰动响应参数变化敏感性分析典型问题排查表现象可能原因解决方案仿真发散Q/R选择不当增大R或调整Q对角元素持续振荡控制量饱和增加控制量权重R稳态误差大缺少积分环节引入LQI设计对扰动敏感状态观测噪声大增加状态估计器带宽4. 实物部署与调试技巧当仿真结果满意后就可以着手实物实现了。这个阶段会遇到许多仿真中不曾出现的问题。4.1 硬件接口配置常见倒立摆实验平台的接口配置% 实时控制初始化 set_param(pendulum_model,Solver,ode4,FixedStep,0.001); set_param(pendulum_model,SimulationMode,external);硬件连接检查清单电机驱动信号极性是否正确编码器信号是否稳定安全限位是否有效采样时间是否合适通常1-10ms4.2 参数微调经验仿真到实物的差距主要来自未建模的摩擦力传感器噪声执行器延迟参数不准确现场调试三步法先调平衡点在零控制量下观察实际平衡位置再调比例项暂时只使用角度反馈确保能站稳最后调动态响应逐步加入其他状态反馈4.3 安全注意事项始终用手准备接住摆杆先限制控制量幅值准备紧急停止开关记录每次实验的参数和结果% 安全限制代码示例 u -K*x; u max(min(u, 5), -5); % 限制控制量在±5之间5. 进阶优化与扩展思路当基本功能实现后可以考虑以下提升方向5.1 抗干扰增强策略增加扰动观测器引入积分环节(LQI)自适应参数调整5.2 状态估计实现实际系统可能无法测量所有状态这时需要设计状态观测器% 全维观测器设计 Poles 5*real(e(1)) * [1 1.1 1.2 1.3]; % 观测器极点比控制器快5倍 L place(A, C, Poles);5.3 其他控制方法对比与PID控制的性能对比指标LQR控制PID控制调节时间0.8s1.5s超调量5%15%抗干扰性优秀良好参数调整难度较难中等在实验室调试时发现当摆杆质量突然增加20%时LQR控制器仍能保持稳定而PID会出现持续振荡。这验证了LQR更强的鲁棒性。

更多文章