MatlabCode

本站所有资源均为高质量资源,各种姿势下载。

您现在的位置是:MatlabCode > 资源下载 > 一般算法 > 二级倒立摆LMI算法H无穷输出反馈控制仿真项目

二级倒立摆LMI算法H无穷输出反馈控制仿真项目

资 源 简 介

该项目针对具有高阶、非线性、强耦合以及本质不稳定特征的二级倒立摆系统,设计并实现了一种基于H无穷理论的输出反馈控制器。项目核心功能是利用拉格朗日方程建立系统的非线性动力学模型,并在垂直平衡点处进行线性化,导出精确的状态空间表达形式。考虑到实际物理系统中往往无法直接测量所有状态变量(如摆杆角速度或小车瞬时速度),本项目采用了输出反馈控制策略,仅利用传感器可测量的输出信号进行闭环调节。控制器设计部分充分利用了MATLAB的Robust Control Toolbox,特别是基于线性矩阵不等式(LMI)的求解器

详 情 说 明

基于LMI算法的二级倒立摆H无穷输出反馈控制系统设计与仿真

项目介绍

本项目针对具有高阶、非线性、强耦合以及本质不稳定特征的二级倒立摆系统,设计并实现了一种基于H无穷(H-infinity)理论的输出反馈控制器。通过在垂直平衡点附近对系统动力学模型进行线性化,利用线性矩阵不等式(LMI)凸优化技术求解最优控制增益。该系统旨在解决实际物理场景中无法获取全部状态变量(如角速度)的问题,仅通过测量小车位移与摆杆角度实现闭环稳定控制,并确保系统在面对外部干扰和模型不确定性时具备良好的鲁棒性能。

功能特性

  • 线性化建模能力:基于物理参数构造质量矩阵、刚度矩阵和阻尼矩阵,将复杂的非线性动力学方程转化为状态空间形式。
  • 输出反馈机制:仅依赖传感器可测量的位移与角度信号(3路输出),不依赖观测器即可实现对全系统(6个状态量)的稳定控制。
  • LMI凸优化求解:利用高性能LMI求解器寻找满足H无穷指标的最优控制器增益,确保闭环系统的干扰抑制性能。
  • 多维度鲁棒验证:模拟了系统在非零初始状态和外部强脉冲干扰下的动态行为,验证了控制器的抗干扰能力。
  • 可视化分析:提供位移响应、角度变化、控制力输出以及相轨迹分析等全方位的仿真图表。

系统要求

  • 软件环境:MATLAB R2016b 或更高版本。
  • 工具箱要求:需要安装 Robust Control Toolbox(鲁棒控制工具箱)以及 Control System Toolbox(控制系统工具箱)。

实现逻辑与步骤

  1. 物理参数配置:定义小车质量、两级摆杆的质量、重心长度、转动惯量以及系统摩擦系数和重力加速度。
  2. 状态空间构建
* 计算质量矩阵 $M_q$、重力/刚度矩阵 $G_q$ 和阻尼矩阵 $D_q$。 * 通过矩阵求逆和合并,构造系统 $A$ 矩阵和 $B$ 矩阵。 * 设定测量阵 $C$,定义输出信号为小车位移、一级摆角和二级摆角。
  1. 增广对象构造
* 引入灵敏度权重函数 $W_1$(一阶低通滤波器形式),用于强调低频段的干扰抑制和稳态精度。 * 引入控制力权重函数 $W_2$,用于限制控制能量,防止执行器饱和。 * 通过 augw 函数将名义模型与权重函数组合,形成标准 $H_infty$ 控制框架下的增广 $P$ 矩阵。
  1. 控制器合成
* 调用 hinfsyn 函数,并显式指定使用 LMI 方法。 * 算法通过求解线性矩阵不等式组,在保证闭环系统稳定性的前提下,最小化外部输入到评价输出之间的 $L_infty$ 范数指标 $gamma$。
  1. 时域仿真验证
* 构建闭环反馈回路。 * 设置 $t=1$ 秒时的脉冲力干扰(幅度为15N)。 * 设置初始扰动状态(摆杆偏离垂直位置)。 * 利用线性系统仿真引擎计算系统的时间响应。

关键函数与算法说明

  • 状态空间表达:代码采用了分块矩阵拼接的方法构造 A 矩阵。通过惯性矩阵的逆与刚度/阻尼阵相乘,准确还原了二阶微分方程组的特征。
  • hinfsyn (LMI Method):这是项目的核心算法。相比于传统的 Riccati 方程求解法,LMI 方法在处理输出反馈问题时更具灵活性,能够有效处理具有奇异性的模型,并搜索到最优的 $gamma$ 值。
  • 权重函数设计 (Weighting Filters)
* W1:设置为 $0.1/(s+0.001)$,这种积分器性质的函数能够迫使系统在低频段具有极高的增益,从而消除干扰带来的偏差。 * W2:设置为常数 $0.01$,平衡了控制精度与控制成本。
  • 稳定性判定:代码通过计算闭环系统极点(Poles)来实时验证系统稳定性。若所有极点均位于复平面的左半平面,则判定为渐近稳定。
  • 相轨迹分析:通过绘制角度与角速度的关系曲线,直观展示了受扰动后的系统状态是如何快速“收敛”并“吸引”回原位(原点)的,这是评估非线性系统鲁棒性的重要依据。

使用方法

  1. 打开 MATLAB 软件。
  2. 确保当前工作路径包含项目主程序。
  3. 直接在命令行窗口输入主程序名称或点击运行。
  4. 程序将依次在命令行输出系统矩阵信息、控制器增益、$gamma$ 性能指标以及稳定性验证结果。
  5. 自动弹出两个仿真窗口:
* 响应曲线图:观察小车和摆杆在干扰下恢复平衡的时序过程。 * 相轨迹图:观察状态空间中运动轨迹的收敛情况。