手把手教做无人驾驶算法(二十八)--Tube MPC与MPC区别

传统的Model Predictive Control (MPC)算法在面对扰动时可能失去鲁棒性,导致解不可行。Tube MPC通过引入终端不变集约束来确保稳定性。这种技术旨在通过优化控制策略,使系统即使在存在不确定性的情况下也能保持在预定的安全区域内。GitHub上的'robust-tube-mpc'项目提供了实现Robust MPC的代码示例,特别关注于使用Tube MPC来增强系统的鲁棒性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般的MPC算法并没有保障鲁棒性。

常规MPC算法求解一般都是保证可行解在边界附件,想象一下如果这个时候加一个扰动,这个解很容易出现在边界外面,从而这个优化解也不是可行解。这里就引入了Tube MPC。

MPC稳定性可以通过三种方法保证:

1.终端代价约束

2.终端条件约束

3.终端不变集约束

这里的Tube MPC属于终端不变集约束。

具体代码参考:GitHub - HiroIshida/robust-tube-mpc: Robust model predictive control using tube

### Tube MPC 求解方法及实现 #### 什么是Tube MPCTube MPC 是一种改进型的模型预测控制策略,旨在提高系统的鲁棒性稳定性。传统MPC算法通常假设系统模型精确已知并忽略外界干扰的影响;然而,在实际应用场景中,这些假设往往难以满足。因此,当存在不确定因素或外部扰动时,标准MPC可能会导致性能下降甚至不稳定的情况发生[^2]。 #### Tube MPC 的核心思想 为了应对上述挑战,Tube MPC通过引入一个围绕着由上层名义模型计算得到的最佳轨迹构建的安全区域——即所谓的“管子”(tube),来确保即使面对不确定性也能维持良好的跟踪效果。具体来说: - **名义模型**:用于生成理想状态下应遵循的理想路径; - **反应式控制器**:负责调整实际输出使之尽可能贴近这条理想的轨道,并始终保持在其预设范围内运动[^4]。 这种设计不仅增强了对未知变化环境下的适应能力,同时也简化了在线优化问题求解难度,因为只需要考虑如何让当前时刻的状态回到目标区域内即可。 #### 数学描述求解流程 对于给定的时间步\( k \),令 \( x_k \in X \) 表示受控对象的真实状态向量,而 \( r_k \in R^n\) 则代表基于名义模型所期望达到的位置。定义偏差变量 \( e_k = x_k - r_k \),则整个过程可以被表述如下: \[ min_{u_0,..., u_N} J(e,u)=\sum^{N}_{i=0}\left \|e_i \right \|^2_Q+\lambda\cdot\Delta u^T_R\Delta u \] 其中, - \( N \)表示预测范围内的总时间间隔数; - \( Q,R,\lambda \)均为正定矩阵/标量参数用来权衡不同项的重要性程度; - \( Δu := u_t-u_{t−1} \) 约束条件包括但不限于: - 状态空间限制:\( e_k ∈ E \); - 输入信号界限:\( u_k ∈ U \)[^3]. 针对此非线性规划(NLP)任务,常用数值迭代法如序列二次规划(SQP)或者内点法(IPM)来进行近似求解。值得注意的是,由于每次只关注局部修正而非全局最优解,所以整体运算负担相对较小,适合实时控制系统部署需求. ```matlab % MATLAB伪代码展示Tube MPC框架的一部分功能 function [U_optimal] = tube_mpc(x_current, ref_trajectory) % 初始化参数设置... for t = 1:length(ref_trajectory)-1 % 构建误差动态方程组 % 定义成本函数及其梯度信息 % 设置边界及其他附加限制 % 调用合适的最优化库执行搜索操作 % 更新反馈增益K以增强收敛速度 % 记录下一轮次所需的初始猜测值作为起点 end end ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值