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

目录

MPC(模型预测控制)概念

前言

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

1)关键思想:

2)步骤:

2.1)MPC未来N步的控制量

2.2)构建优化目标:

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

2.4)执行第一个控制量

[2.5)滚动求解(Receding Horizon)](#2.5)滚动求解(Receding Horizon))

[二、为什么预测区间较控制区间多 1?](#二、为什么预测区间较控制区间多 1?)

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

[四、构造大向量 X 和 U](#四、构造大向量 X 和 U)

[五、得到经典 MPC 预测矩阵:X = Fx + GU](#五、得到经典 MPC 预测矩阵:X = Fx + GU)

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

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

[六、X = F xₖ + G U 在时间轴上的含义](#六、X = F xₖ + G U 在时间轴上的含义)

七、滚动优化

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

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

3)关键点:

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

[九、MPC 代价函数构建与 QP 优化问题形成过程](#九、MPC 代价函数构建与 QP 优化问题形成过程)

[1)构造 MPC 代价函数 J](#1)构造 MPC 代价函数 J)

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

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

4)加入约束

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

[十一、QP 求解 → 得到最优控制序列 U*](#十一、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 的预测模型:

结构如下:

css 复制代码
时间步:   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 理解为:

css 复制代码
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:

css 复制代码
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}

在时间轴上的直观图:

css 复制代码
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)

css 复制代码
当前真实状态:x_k 已知

优化得到:
U* = [u_k*, u_{k+1}*, u_{k+2}*, u_{k+3}*]

只执行第一个控制量:
u_k^{apply} = u_k*

时间轴视图:

css 复制代码
(第 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ₖ₊₁,重新算一遍新的最优控制序列:

css 复制代码
当前真实状态: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 开始"重新切一块"预测窗口:

css 复制代码
(第 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. 经典预测公式

  1. 代价函数 J 可写成标准二次规划(QP):
  1. QP 求解器输出整串控制序列,只执行第一个控制量,之后滚动优化。
相关推荐
Coovally AI模型快速验证10 小时前
深度学习驱动的视频异常检测(VAD),AI如何让监控更智能?
人工智能·深度学习·目标检测·机器学习·自动驾驶·无人机
容智信息10 小时前
容智信息加入大模型产业联盟,Hyper Agent推动企业级智能体规模化落地
大数据·人工智能·自然语言处理·自动驾驶
车企求职辅导11 小时前
新能源汽车零部件全品类汇总
人工智能·算法·车载系统·自动驾驶·汽车·智能驾驶·智能座舱
Godspeed Zhao11 小时前
自动驾驶中的传感器技术82——Sensor Fusion(5)
人工智能·机器学习·自动驾驶
程序员龙一13 小时前
百度Apollo Cyber RT底层原理解析
自动驾驶·ros·apollo·cyber rt
Godspeed Zhao14 小时前
自动驾驶中的传感器技术79——Sensor Fusion(2)
人工智能·fpga开发·自动驾驶
milan-xiao-tiejiang14 小时前
ROS2面试准备
c++·面试·自动驾驶
卡奥斯开源社区官方15 小时前
技术落地里程碑:北京发放全国首批L3自动驾驶号牌,智驾商业化闭环正式打通
人工智能·机器学习·自动驾驶
Godspeed Zhao15 小时前
自动驾驶中的传感器技术81——Sensor Fusion(4)
人工智能·机器学习·自动驾驶
容智信息1 天前
荣膺ISC.AI 2025创新百强!容智信息HyperAgent超级智能体,引领企业级智能体落地新范式
人工智能·自然语言处理·金融·自动驾驶