1. 一阶倒立摆的物理模型与数学推导倒立摆系统是控制理论中的经典研究对象它由一个可以在水平轨道上移动的小车和通过铰链连接的摆杆组成。这个系统的核心挑战在于摆杆的直立位置是一个不稳定的平衡点需要通过精确控制小车的运动来维持平衡。1.1 牛顿力学建模法我们先对系统进行受力分析。假设小车质量 M 2kg摆杆质量 m 0.1kg摆杆长度 2l 1m质心到转轴距离 l 0.5m外力 u 作用于小车忽略摩擦和空气阻力水平方向受力分析对小车的牛顿第二定律 $$ M\ddot{x} H u $$对摆杆的水平受力分析 $$ H m\frac{d^2}{dt^2}(x l\sin\theta) m\ddot{x} ml(\ddot{\theta}\cos\theta - \dot{\theta}^2\sin\theta) $$垂直方向与转动分析摆杆垂直方向 $$ V mg - ml(\ddot{\theta}\sin\theta \dot{\theta}^2\cos\theta) $$摆杆转动方程 $$ Vl\sin\theta - Hl\cos\theta I\ddot{\theta} $$最终得到非线性微分方程组 $$ \begin{cases} (Mm)\ddot{x} ml\ddot{\theta}\cos\theta - ml\dot{\theta}^2\sin\theta u \ ml\ddot{x}\cos\theta (Iml^2)\ddot{\theta} - mgl\sin\theta 0 \end{cases} $$1.2 拉格朗日方程验证为了验证模型的正确性我们再用能量法推导。系统动能T和势能V为 $$ \begin{aligned} T \frac{1}{2}M\dot{x}^2 \frac{1}{2}I\dot{\theta}^2 \frac{1}{2}m[(\dot{x}l\dot{\theta}\cos\theta)^2 (-l\dot{\theta}\sin\theta)^2] \ V mgl\cos\theta \end{aligned} $$通过拉格朗日方程计算最终得到与牛顿法完全相同的方程验证了模型的正确性。提示在实际建模时我建议先用拉格朗日法建立方程再用牛顿法验证。这种方法可以避免受力分析时的遗漏特别是对于复杂系统。2. Simulink建模与非线性仿真2.1 非线性模型搭建在Simulink中我们可以直接实现前面推导的微分方程。具体步骤创建新模型添加以下模块两个Integrator模块分别表示x和θ的二阶积分Function模块编写非线性方程Scope模块观察输出% 非线性方程函数示例 function [x_ddot, theta_ddot] pendulum_eq(u, x, x_dot, theta, theta_dot) M 2; m 0.1; l 0.5; g 9.8; I (1/3)*m*(2*l)^2; denom (Mm)*(Im*l^2) - (m*l*cos(theta))^2; x_ddot ((Im*l^2)*u m*l*(Im*l^2)*theta_dot^2*sin(theta)... - (m*l)^2*g*cos(theta)*sin(theta))/denom; theta_ddot (-m*l*u*cos(theta) - (m*l)^2*theta_dot^2*sin(theta)*cos(theta)... (Mm)*m*g*l*sin(theta))/denom; end2.2 初始条件测试设置初始角度θ5°观察无控制(u0)时的系统响应摆杆会迅速倒下验证了系统的不稳定性小车由于动量守恒会产生往复运动3. 平衡点线性化与状态空间模型3.1 线性化处理在平衡点(θ0)附近进行泰勒展开近似 $$ \sinθ ≈ θ, \cosθ ≈ 1, \dot{θ}^2 ≈ 0 $$得到线性化方程 $$ \begin{bmatrix} Mm ml \ ml Iml^2 \end{bmatrix} \begin{bmatrix} \ddot{x} \ \ddot{\theta} \end{bmatrix} \begin{bmatrix} u \ mglθ \end{bmatrix} $$3.2 状态空间表达定义状态变量 $$ \mathbf{x} [x \quad \dot{x} \quad θ \quad \dot{θ}]^T $$推导得到状态空间方程 $$ \dot{\mathbf{x}} \begin{bmatrix} 0 1 0 0 \ 0 0 -0.363 0 \ 0 0 0 1 \ 0 0 15.244 0 \end{bmatrix} \mathbf{x} \begin{bmatrix} 0 \ 0.4938 \ 0 \ -0.7407 \end{bmatrix}u $$% MATLAB中建立状态空间模型 A [0 1 0 0; 0 0 -0.363 0; 0 0 0 1; 0 0 15.244 0]; B [0; 0.4938; 0; -0.7407]; C eye(4); D zeros(4,1); sys ss(A,B,C,D);4. 系统特性分析4.1 能控性与能观性% 能控性检查 Co ctrb(A,B); rank(Co) % 输出4系统完全能控 % 能观性检查 Ob obsv(A,C); rank(Ob) % 输出4系统完全能观4.2 稳定性分析计算系统极点eig(A)结果显示有极点位于右半平面(3.9044)证实系统开环不稳定。5. LQR控制器设计5.1 LQR原理线性二次型调节器通过最小化代价函数来设计最优控制 $$ J \int_0^\infty (\mathbf{x}^TQ\mathbf{x} u^TRu)dt $$5.2 权重矩阵选择经过多次调试我发现以下权重组合效果较好Q diag([10 1 100 10]); % 加大角度权重 R 0.1; % 允许较大控制力5.3 求解反馈矩阵K lqr(A,B,Q,R); % 得到 K [-10 -12.8 -110.6 -20.3]5.4 Simulink实现在非线性模型中添加LQR控制器使用State-Space模块实现状态反馈连接所有状态变量实际工程中可能需要状态观测器测试不同初始条件下的响应6. 参数影响与调试技巧6.1 Q矩阵调整经验角度θ权重主要影响摆杆稳定速度位置x权重影响小车最终停留位置速度项权重抑制振荡的关键参数6.2 实际调试中的坑控制力饱和实际电机有出力限制需在Simulink中添加Saturation模块采样时间选择数字实现时建议小于0.01s状态不可测实际中可能需要设计观测器7. 进阶应用带观测器的LQR控制当无法直接测量所有状态时可以设计观测器。我推荐使用降阶观测器% 设计降阶观测器 meas_states [1 3]; % 假设只能测量x和θ A_hat A(~meas_states, ~meas_states); B_hat B(~meas_states); L place(A_hat, A(meas_states, ~meas_states), [-10 -15]);在Simulink中实现时需要注意初始状态的匹配问题否则会出现观测误差。