基于模糊控制的倒立摆系统平衡控制项目
项目介绍
本项目是一个基于模糊控制(Fuzzy Control)理论的单级倒立摆平衡控制仿真系统。倒立摆是一个典型的非线性、强耦合、本质不稳定的动态系统,是检验现代控制算法有效性的金标准。该项目通过建立倒立摆的非线性动力学模型,并设计一个二维模糊控制器(输入误差与误差变化率),实现了小车在受到初始扰动的情况下自动调整水平作用力,从而维持摆杆在垂直位置的动态平衡。
功能特性
本项目实现了从物理建模到控制输出再到结果可视化的完整流程,具备以下核心特性:
- 非线性动力学仿真:实现了倒立摆系统的数学模型,考虑了小车质量、摆杆质量、长度及惯性矩等参数。
- 模糊推理系统构建:建立了完整的Mamdani型模糊推理系统,包含输入输出变量定义及隶属度函数配置。
- 闭环反馈控制:通过每一步迭代计算角度偏差和角速度,实时反馈给模糊控制器。
- 动态可视化:自动生成四象限仿真图,直观展示物理量变化及控制器内部逻辑。
- 稳态性能验证:能够清晰模拟摆杆从初始偏差角恢复到零度平衡位的全过程。
功能实现逻辑
仿真程序遵循以下逻辑步骤执行:
- 参数配置:首先定义系统的物理参数(M, m, L, g, b, I)以及仿真的时间步长和时长。设置初始状态,使摆杆具有 0.2 弧度的初始偏差。
- 模糊控制器构建:
- 变量定义:定义“角位移偏差 E”和“角速度偏差 EC”为输入,以“水平驱动力 U”为输出。
- 隶属度覆盖:为两个输入和一个输出各定义了 7 个三角形隶属度函数(NB, NM, NS, ZE, PS, PM, PB)。
- 规则制定:内置 49 条决策规则,构成了控制器的逻辑核心,决定了在不同误差状态下应施加的力。
- 仿真动力学迭代:
- 误差计算:在每个时间步计算当前角度与目标角度(0 rad)的差值。
- 模糊推理:将误差信号输入 FIS 系统,通过合成推理得到控制力 U。
- 模型更新:利用拉格朗日方程推导的加速度公式计算摆杆角加速度和小车水平加速度。
- 数值积分:采用欧拉步进法更新位移、速度、角度和角速度等状态变量。
- 数据可视化:循环结束后,提取存储的状态序列进行图形化展示。
关键函数与算法分析
- 模糊推理算法:使用 Mamdani 模糊推理方法。通过 evalfis 函数实现模糊化、逻辑运算与去模糊化。
- 非线性动力学算法:代码通过复杂的导数推导公式实时计算 theta_acc(角加速度)和 x_acc(位移加速度)。该公式充分考虑了重力力矩、离心力以及控制力对摆杆和车体之间的相互影响,而非简单的线性化模型。
- 隶属度设计:采用了三角形隶属度函数 (trimf),在 [-0.5, 0.5] 和 [-3, 3] 的范围内提供了平滑的过渡,确保了控制量的连续性。
- 数值模拟细节:为保证稳定性,将输入模糊控制器的偏差值限制在定义域内,防止越界导致的控制失效。
使用方法
- 环境准备:确保已安装 MATLAB 软件,并且需要包含 Fuzzy Logic Toolbox(模糊逻辑工具箱)。
- 执行仿真:
- 打开 MATLAB 并定位到项目目录。
- 直接运行主程序函数。
- 查看结果:
- 观察主图窗中的“摆杆角位移”、“小车水平位移”和“控制力”随时间的变化曲线。
- 观察“控制逻辑曲面”以理解控制器在不同输入下的非线性输出特性。
- 在独立的隶属度函数窗口中确认各语言变量的覆盖范围。
系统要求
- 软件环境:MATLAB R2018b 或更高版本。
- 工具箱需求:Fuzzy Logic Toolbox(用于创建 mamfis 和调用 evalfis 函数)。
- 硬件要求:标准 PC 即可,内存建议 8GB 以上以便快速生成 3D 控制曲面。