非线性模型预测控制 (NMPC) 理论模型与仿真实验系统
项目介绍
本项目实现了一个基于非线性模型预测控制(NMPC)的闭环控制仿真系统。系统以差分驱动机器人为受控对象,通过在每个采样时刻求解一个有限时域内的闭环优化问题,实现对预设参考轨迹(如圆形轨迹)的高精度跟踪。该系统集成了运动学建模、数值积分、非线性规划及实时可视化功能,不仅展示了滚动时域控制的核心思想,还涵盖了控制约束处理与系统稳定性分析。
功能特性
- 多变量非线性控制:同时处理线速度与角速度两个控制量,实现对三维状态空间(位置与航向角)的同步控制。
- 滚动时域优化:在每个采样周期实时求解预测时域内的最优控制序列,并仅执行第一步指令,确保系统具备实时抗扰受力。
- 硬约束强制执行:支持对控制输入(执行器物理极限)和系统状态(安全工作范围)设置严格的上下界。
- 数值精度保障:采用四阶龙格库塔(RK4)法进行动力学积分,显著提高状态预测的准确度。
- 热启动策略:通过将上一时刻的优化结果作为当前时刻的初始猜想值,加速求解器的收敛速度。
- 稳定性监控:内置李雅普诺夫候选函数评估机制,直观展示系统误差的收敛性与闭环稳定性。
系统要求
- 软件平台:MATLAB 2020a 或更高版本。
- 工具箱需求:需安装 Optimization Toolbox(优化工具箱),用于调用核心求解引擎 fmincon。
核心功能实现逻辑
系统的执行流程遵循标准的 NMPC 控制闭环:
- 初始化阶段:定义系统维度、采样时间(0.1s)、预测时域(15步)及控制时域。设置状态偏差权重 Q、控制能量权重 R 和终端权重 P。
- 参考轨迹生成:预先计算系统需要跟踪的圆形时变轨迹,为优化问题提供目标参考点序列。
- 仿真主循环:
-
视界移动:根据当前时间步截取预测时域内的局部参考轨迹。
-
代价函数构造:通过闭包形式定义目标函数,累加预测时域内的状态误差代价与控制代价。
-
非线性规划求解:利用序列二次规划(SQP)算法,在满足执行器约束和状态空间约束的前提下,寻找最优控制增量。
-
状态演进:提取最优序列的首项,通过 RK4 积分模拟真实物理系统的响应,更新系统当前状态。
- 数据后处理:计算单步控制能量均值与最终位置偏差,生成四象限性能分析图表。
关键函数与算法细节
- 非线性运动学模型:
实现差分驱动机器人的运动方程式,考虑线速度与航向角的非线性耦合(正余弦关系)。该模型作为预测模型的基石,直接影响控制精度。
- 四阶龙格库塔积分步进:
相比于简单的欧拉积分,RK4 算法通过在单步内进行四次斜率采样,极大地减小了离散化带来的累积误差,确保预测状态轨迹与物理系统高度贴合。
- 代价函数(Cost Function)设计:
采用二次型结构。状态项促使系统逼近参考轨迹;控制项防止控制量剧烈波动以节省能量;终端项(Terminal Cost)引入较高的权重 P,旨在引导系统在预测时域末端趋于稳定。
- 非线性约束检测:
在预测循环中,将每一个预测步的状态量与预设的物理边界进行比对。算法会将这些约束反馈给求解器,确保生成的控制序列不会导致系统进入非法状态区间。
- 求解器配置与优化:
使用 fmincon 的 SQP 算法。该方法特别适合处理带有非线性约束的优化问题,通过迭代搜索拉格朗日函数的驻点来逼近全局最优解。
仿真结果解读
- 状态空间轨迹图:展示机器人从初始位置出发,通过调整朝向快速切入并稳定跟踪圆形参考轨迹的过程。
- 状态响应曲线:提供 X、Y 位置及偏航角 Theta 随时间的变化趋势,体现系统的动态响应速度。
- 控制量时程分析:阶梯状展示控制输入的实时变化,验证控制量是否始终保持在物理硬约束范围内。
- 优化收敛性与稳定性:双轴图同时展示代价函数的收敛过程与 Lyapunov 函数值的演变,Lyapunov 值的下降趋势直接证明了控制律的渐近稳定性。