当前位置: 首页 > news >正文

MPC模型预测控制原理全解析:从状态预测、矩阵推导到QP求解与滚动优化(含完整手推过程)

目录

MPC(模型预测控制)概念

前言

一、MPC 最核心的思想(必须先理解)

1)关键思想:

2)步骤:

2.1)MPC未来N步的控制量

2.2)构建优化目标:

2.3)二次规划(QP)求解器

2.4)执行第一个控制量

2.5)滚动求解(Receding Horizon)

二、为什么预测区间较控制区间多 1?

三、MPC 状态预测:以 4 步预测为例(Np=4)

四、构造大向量 X 和 U

五、得到经典 MPC 预测矩阵:X = Fx + GU

1)F 矩阵(预测初始状态的贡献)

2)G 矩阵(控制量对未来状态的影响)

六、X = F xₖ + G U 在时间轴上的含义

七、滚动优化

1)第一次优化(在时刻 k)

2)第二次优化(在时刻 k+1)

3)关键点:

八、状态预测模型&离散矩阵手推步骤

九、MPC 代价函数构建与 QP 优化问题形成过程

1)构造 MPC 代价函数 J

2)将 X = F xₖ + G U 代入代价函数

3)最终 QP 形式(直接给 qpOASES 求解)

4)加入约束

十、代价函数二次型展开、QP 核心矩阵 H、f 和有/无约束QP的二次型代价函数梯度求解手推步骤

十一、QP 求解 → 得到最优控制序列 U*

十二、MPC理论步骤总结

十三、全文总结


MPC(模型预测控制)概念

模型预测控制(Model Predictive Control,MPC)是一种 基于模型的优化控制方法
它不是像 PID 那样“根据当前误差给输出”,
也不是像纯追踪(Pure Pursuit)、Stanley 那样用几何关系求转角。

MPC 是用“未来好几步”的预测来决定“现在该怎么做”。

核心思想只有一句话:

在未来 N 步时间上,让系统的状态 X 尽量跟随参考轨迹 Xref,
并找到一串最优控制量 U,使代价最小、约束满足。

因此,MPC 本质上是:

“控制 + 预测 + 规划 + 优化” 的统一框架


前言

模型预测控制(Model Predictive Control, MPC)是现代自动驾驶、AGV、无人机中最主流的轨迹跟踪控制器。
然而,很多人只会用,却不知道:

  • MPC 的未来状态是怎么预测的?

  • 控制输入 uk 是从哪里“求”出来的?

  • 为什么预测区间总是比控制区间多 1?

  • MPC 如何变成一个二次规划(QP)问题?

本文将一步步从 离散模型 → 预测矩阵 → 代价函数 → QP 优化问题 → 得到最优控制量 整体推导,让你真正理解 MPC 的底层数学结构。


一、MPC 最核心的思想(必须先理解)

1)关键思想:

在 MPC 中:

uₖ、uₖ₊₁、uₖ₊₂……都不是提前设定的,
而是优化器求解出来的最优控制序列(决策变量)。

我们并不是给出一个 uk,然后预测未来状态。
而是:

2)步骤:

2.1)MPC未来N步的控制量

       MPC 会把未来 N 步的控制量

       全部当成 未知变量

2.2)构建优化目标:

未来轨迹误差最小+控制量最小+满足约束

2.3)二次规划(QP)求解器

       最终通过 二次规划(QP)求解器 求出一整串最优控制量序列 U*。

2.4)执行第一个控制量

       MPC 每次只执行第一个控制量:

2.5)滚动求解(Receding Horizon)

       然后进入下一时刻,滚动求解(Receding Horizon)。


二、为什么预测区间较控制区间多 1?

MPC 的预测模型:

结构如下:

时间步:   k        k+1        k+2        k+3        k+4|---------|----------|----------|----------|
状态:    x_k      x_{k+1}    x_{k+2}    x_{k+3}    x_{k+4}↑         ↑          ↑          ↑
控制:       u_k      u_{k+1}    u_{k+2}    u_{k+3}(第1步)   (第2步)    (第3步)    (第4步)预测区间: [-------------- Np = 4 步状态预测 --------------]
控制区间:   [----------- Nu = 4 个控制量 -----------]

可以看到:

  • 状态点:xₖ, xₖ₊₁, xₖ₊₂, xₖ₊₃, xₖ₊₄ → 5 个

  • 控制量:uₖ, uₖ₊₁, uₖ₊₂, uₖ₊₃ → 4 个

所以预测区间状态数量 = 控制区间 + 1
本质原因就是:状态是“节点”,控制是“节点之间的边”


三、MPC 状态预测:以 4 步预测为例(Np=4)

MPC离散线性模型:

逐步展开:

第 1 步:

第 2 步:

第 3 步:

第 4 步:


四、构造大向量 X 和 U


五、得到经典 MPC 预测矩阵:X = Fx + GU

1)F 矩阵(预测初始状态的贡献)

2)G 矩阵(控制量对未来状态的影响)

最终预测公式:

这是 MPC 的最核心公式之一。


六、X = F xₖ + G U 在时间轴上的含义

上一节我们推导了:

在时间轴上,可以把 X 和 U 理解为:

X = [x_{k+1}, x_{k+2}, x_{k+3}, x_{k+4}]^T
U = [u_k,     u_{k+1}, u_{k+2}, u_{k+3}]^T

此时:

  • F 决定:如果不给控制量(U=0),仅靠 A 演化,xₖ 会怎样传播到未来 4 步

  • G 决定:每一个控制量 uₖ, uₖ₊₁, uₖ₊₂, uₖ₊₃ 是如何叠加影响未来每个 x 的

你可以这样理解矩阵 G:

G =
[   B      0      0      0   ]   → 只影响 x_{k+1}
[  A B     B      0      0   ]   → u_k 影响 x_{k+2},u_{k+1} 也影响 x_{k+2}
[ A^2 B   A B     B      0   ]   → 三个控制依次累积影响 x_{k+3}
[ A^3 B  A^2 B   A B     B   ]   → 四个控制依次累积影响 x_{k+4}

在时间轴上的直观图:

x_k --u_k--> x_{k+1} --u_{k+1}--> x_{k+2} --u_{k+2}--> x_{k+3} --u_{k+3}--> x_{k+4}u_k     影响: x_{k+1}, x_{k+2}, x_{k+3}, x_{k+4}
u_{k+1} 影响:          x_{k+2}, x_{k+3}, x_{k+4}
u_{k+2} 影响:                    x_{k+3}, x_{k+4}
u_{k+3} 影响:                              x_{k+4}

这就是 G 矩阵下三角结构 的直观含义:
越早施加的控制,对未来状态产生越多影响。


七、滚动优化

MPC 不是只算一次 U 就完事了,而是每个采样时刻都要重新优化一次

1)第一次优化(在时刻 k)

当前真实状态:x_k 已知优化得到:
U* = [u_k*, u_{k+1}*, u_{k+2}*, u_{k+3}*]只执行第一个控制量:
u_k^{apply} = u_k*

时间轴视图:

(第 1 次优化)时间:    k        k+1        k+2        k+3        k+4|---------|----------|----------|----------|
状态:    x_k      x_{k+1}    x_{k+2}    x_{k+3}    x_{k+4}
控制:      u_k*     u_{k+1}*   u_{k+2}*   u_{k+3}*↑实际执行的只有这个

2)第二次优化(在时刻 k+1)

车按照 u_k* 运行到新状态 xₖ₊₁,
现在新的初始状态是 xₖ₊₁,重新算一遍新的最优控制序列:

当前真实状态:x_{k+1} 已知再次优化得到:
U_new* = [u_{k+1,new}*, u_{k+2,new}*, u_{k+3,new}*, u_{k+4,new}*]只执行:
u_{k+1}^{apply} = u_{k+1,new}*

此时时间轴从 k+1 开始“重新切一块”预测窗口:

(第 2 次优化:预测窗口右移一格)时间:           k+1        k+2        k+3        k+4        k+5|----------|----------|----------|----------|
状态:           x_{k+1}    x_{k+2}    x_{k+3}    x_{k+4}    x_{k+5}
控制:             u_{k+1}    u_{k+2}    u_{k+3}    u_{k+4}↑现在只执行它

3)关键点:

  • 每次优化 “看向未来好几步”

  • 只执行第一个控制量

  • 下一次再重新用最新的状态出发,重新规划

这就是 “ 滚动时域优化(Receding Horizon)” 的精髓。


八、状态预测模型&离散矩阵手推步骤


九、MPC 代价函数构建与 QP 优化问题形成过程

1)构造 MPC 代价函数 J

常见代价函数:

写成矩阵形式:

其中:

  • Qbig​:4 次对角重复 Q

  • Rbig​:4 次对角重复 R


2)将 X = F xₖ + G U 代入代价函数

代入后:

展开 → 整理 → 得到标准 QP 形式:


3)最终 QP 形式(直接给 qpOASES 求解)

其中:

常数项被省略(不影响最优解)。


4)加入约束

控制约束:

状态约束(可选):

转化为:


十、代价函数二次型展开、QP 核心矩阵 H、f 和有/无约束QP的二次型代价函数梯度求解手推步骤


十一、QP 求解 → 得到最优控制序列 U*

QP 求解器输出:

也就是 控制区间长度 Nu(控制时域)内的所有控制量

MPC 实际执行:

然后更新状态

接着进入下一轮优化,继续求新的:

进入下一时刻重新求解:滚动优化(Receding Horizon)


十二、MPC理论步骤总结

① 离散状态模型
② 逐步预测 4 步
③ 得到矩阵形式:X = F x + G U
④ 套入 Q,R 得到代价函数 J
⑤ 推成标准 QP(H, f)
⑥ 加入(in)eq 约束
⑦ 丢给 qpOASES → 得到最优控制量序列
⑧ 执行第一步 → 滚动优化


十三、全文总结

1. MPC 中的控制量不是设定的,是优化器求出来的

2. 预测区间 = 控制区间 + 1(状态是节点,控制量是边)

3. 经典预测公式

4. 代价函数 J 可写成标准二次规划(QP):

5. QP 求解器输出整串控制序列,只执行第一个控制量,之后滚动优化。

http://www.dtcms.com/a/604881.html

相关文章:

  • android recyclerview缓存2_四级缓存机制
  • [特殊字符] 在 macOS 上设置 SQLite
  • android recyclerview缓存1_概念和常见问题
  • SQLite 速成学习
  • [特殊字符] 在 Windows 上设置 SQLite
  • 做资源网站违法吗深圳大梅沙
  • 【环境数据处理】-基于R批量对环境数据克里金插值提高数据精度
  • 广州wap网站建设百度seo优化技术
  • linux centos常用命令整理
  • Java设计模式之建造者模式(Builder)详解
  • [智能体设计模式] 第6章:规划
  • 学习react第三天
  • 营销软文网站西安网站建设网络公司熊掌号
  • 二分查找算法介绍及使用
  • [element-plus] el-tree 动态增加节点,删除节点
  • SQL:从数据基石到安全前线的双重审视
  • 数据结构:双向链表(1)
  • 【C++】深入拆解二叉搜索树:从递归与非递归双视角,彻底掌握STL容器的基石
  • 深圳趣网站建设网络外包服务公司
  • Axios 全面详解
  • ios-AVIF
  • 360网站建设公司哪家好石家庄有哪些互联网公司
  • 单机并发简介
  • 自相关实操流程
  • java基础-集合接口(Collection)
  • 基于中国深圳无桩共享单车数据的出行目的推断与时空活动模式挖掘
  • 【Rust】通过系统编程语言获取当前系统内存、CPU等运行情况,以及简单实现图片采集并设置系统壁纸
  • 【计算思维】蓝桥杯STEMA 科技素养考试真题及解析 D
  • 智能合同系统,如何为企业合同管理保驾护航?
  • 基于Rust实现爬取 GitHub Trending 热门仓库