线性系统实战:一阶倒立摆的Simulink建模与LQR控制器设计 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中实现时需要注意初始状态的匹配问题否则会出现观测误差。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/10/2 15:29:32
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻