【自动驾驶】- MPC模型预测与控制算法(一)

本文为个人学习笔记,仅属于个人观点和理解,如有错误,还希望大家多多包涵和理解!也希望我的分享能给你带来不一样的收获和感悟!愿与诸君共勉,勇往直前~~~
序言:每一篇文章都力求高质量、高水平、高要求,作者虽水平有限,但已经尽力!

一、什么是MPC

MPC(Model Predictive Comtrol),是一种基于模型、滚动优化、反馈校正的先进闭环控制算法。MPC调整能力很强,适合大部分没有精确模型或者模型阶次很高的系统,再或者非线性很强、约束能力很多的系统。

上面强调的红色字体就是MPC最重要的几个特点和适用方向。下面还有几个MPC最突出的特点需要我们着重理解和在后续的项目实践中好好体会。

MPC的逻辑主要分为以下几步:

  • 模型预测:利用被控对象数学模型,预测未来一段时域内系统状态与输出;
  • 滚动优化:以控制目标 + 约束条件,求解有限时域最优控制序列;
  • 反馈校正:仅执行当前时刻第一个控制量,下一时刻用实际测量状态刷新预测,重复优化。

下面的图片是书中关于MPC三要素的解释:

(一)模型预测控制原理

根据上述几个模型预测的要素,我们可以用下面的一幅图来描述模型预测的控制原理:

从图中我们可以看出,模型预测控制始终有一条期望参考轨迹(曲线1),以K时刻作为当前时刻,控制器以当前的测量值和预测模型,预测未来一段时间的内(也称作预测时域)系统的输出(如图线2所示)。
不仅如此,如图线4所示,通过求解满足目标的函数以及各种约束的优化问题,得到控制时域内的一序列控制序列。并将该控制序列的第一个控制元素作为受控对象的实际控制量。
滚动优化的本质:当来到下一个时刻K+1时,重复上述过程,如此滚动地完成一个个带约束的优化问题,以实现被控对象的持续控制。

(二)、MPC模型预测控制框图

MPC模型预测控制原理框图如下所示:

模型预测控制原理框图包含了MPC控制器、被控平台和状态估计器 这3个模块。其中,MPC控制器结合预测模型、目标函数和约束条件进行最优化求解,得到当前时刻的最优控制序列u(t),输入到被控平台,被控平台按照当前的控制量进行控制,然后将当前的状态量观测值x(t)输入给状态估计器。
状态估计器对于那些无法通过传感器观测得到或者观测成本过高的状态量进行估计。比较常用的方法有Kalman滤波、粒子滤波等。将估计的状态量输入到MPC控制器,再次进行最优化求解,以得到未来一段时间的控制序列。如此循环,就构成了完整的模型预测控制过程。

(三)、MPC在自动驾驶中的特点和应用

1、MPC的核心特点

  • 天然处理多约束

直接嵌入物理限制:转向角、车速、加速度、轮胎侧偏角、执行器饱和等,是自动驾驶核心优势。

  • 多目标优化

代价函数可同时兼顾:轨迹跟踪误差、控制平滑性、能耗、乘坐舒适性等多目标权衡。

  • 前瞻预测能力

能根据前方路况、道路曲率、障碍物信息提前预控,适合自动驾驶前瞻驾驶需求。

  • 滚动时域 + 反馈鲁棒性强

有限时域优化降低建模误差、外界扰动影响,实时修正偏差,抗干扰优于 PID。

  • 缺点

需要精确车辆模型;在线求解优化问题,计算量偏大,对控制器算力有要求。

2、自动驾驶应用场景

  • **横向控制:**车道保持、路径跟踪、弯道预转向、换道轨迹跟踪。
  • **纵向控制:**自适应巡航 ACC、跟车行驶、启停控制、加减速平稳控制。
  • **全域运动控制:**横纵向耦合控制(高速行驶、极限工况)、智能小车 / 无人车全域轨迹跟踪。
  • **复杂约束场景:**自动泊车、极限避障、编队行驶、商用车 / 重载车辆控制(执行器约束强)。
  • **复杂动态工况:**高速变道、低附路面、大曲率道路等强非线性、强约束场景。

(四)MPC / LQR / PID 三者全方位对比

1、核心本质

  • PID: 无模型、单点误差反馈、无优化、无预测,靠比例 / 积分 / 微分修正偏差。
  • LQR(线性二次型调节器): 基于线性模型、全局无限时域最优、一次性求解固定状态反馈矩阵,属于离线最优控制。
  • MPC(模型预测控制): 基于模型、有限时域滚动优化 + 前瞻预测、在线逐时刻求解最优控制量,带反馈校正。
对比维度 PID LQR MPC
是否需要模型 完全无模型 需要精确线性状态空间模型 需要动力学 / 运动学模型(线性 / 非线性均可)
优化方式 无优化,经验调参 全局一次性离线优化 每一时刻在线滚动优化
约束处理 无法处理硬约束,易饱和超限 无法直接处理执行器约束 天然支持硬 / 软约束(转角、加速度、车速、轮胎极限)
预测能力 无前瞻,滞后性明显 无显式预测 强前瞻,提前应对弯道、坡度、障碍物
控制目标 单目标(消除误差) 多目标加权(误差 + 控制量) 自定义多目标:跟踪精度 + 舒适性 + 能耗 + 平顺性
鲁棒性 依赖调参,抗扰动弱 依赖模型精度,参数摄动下易失效 滚动反馈校正,抗扰动、抗模型误差更强
计算量 极小,MCU 即可运行 计算量小,离线算矩阵,在线直接查表 计算量大,需要实时求解二次规划 QP
非线性适配 弱,复杂工况性能暴跌 仅适配线性模型,非线性需线性化 支持非线性 MPC (NMPC),适配强非线性车辆
耦合控制 横 / 纵向只能单独控制 可做多变量耦合控制 原生支持横纵向强耦合统一控制

1. PID

✅ 优点:结构简单、易调试、成本低、算力要求极低

❌ 缺点:无预测、无约束、超调 / 震荡难避免,高速、弯道、极限工况失效

👉 适用:低速小车、简单车道保持、空调 / 油门等单执行器控制

2. LQR

✅ 优点:理论最优、多变量耦合、控制平顺、动态响应好

❌ 缺点:不能加约束、模型依赖度高、固定反馈增益,工况变化后性能下降

👉 适用:中低速轨迹跟踪、无人机、机器人基础运动控制,自动驾驶辅助横向控制

3. MPC

✅ 优点:约束强 + 前瞻预测 + 多目标 + 强耦合 + 工况自适应,自动驾驶刚需

❌ 缺点:算力要求高、调参复杂、建模难度大

👉 适用:高速自动驾驶、自动泊车、避障、ACC、极限工况行驶(量产主流)

二、线性时变模型预测控制(LTV-MPC)的推导过程

接下来我将对线性时变模型控制进行推导,因为相比于非线性模型预测控制,他最大的优点是计算较为简单,实时性好。对于自动驾驶领域来说,控制算法的实时性是至关重要的。

(一)预测方程

在无人驾驶等场景中,直接用控制量u(k)做优化会有问题:

  1. 难以直接约束控制增量(比如方向盘不能突然打死)
  2. 积分控制难以实现因此,标准做法是引入控制增量 ,把模型改写成 "增量形式"。

四、递推预测:推导未来状态与输出

有了增广模型和简化假设,我们就可以从当前状态\(\xi(t|t)\)开始,递推预测未来的状态和输出:


五、矩阵形式整合:式 (3.8) 的由来

(二)优化求解

一、目标函数的两种形式

1、传统以状态 / 控制量为变量的目标函数

2、以控制增量为变量的目标函数(工程中最常用)


二、系统约束条件

在实际控制系统中,必须考虑物理限制,因此目标函数需要加上三类约束:

1、控制量约束

2、控制增量约束

3、输出约束


三、引入松弛因子

实际工程中,当系统存在强约束或模型误差时,带硬约束的优化问题可能出现无可行解 的情况,导致控制器崩溃。为了避免这个问题,需要引入松弛因子


四、将目标函数转化为标准二次规划(QP)形式

我们需要把目标函数整理成标准 QP 的形式:

1. 代入预测方程

之前我们得到了输出预测方程:

定义输出误差向量:

2. 展开目标函数目

标函数的三项分别展开:

(1)跟踪误差项:

(2)控制增量项:

(3)松弛因子

3. 合并成标准 QP 形式

把三项合并,目标函数可以写成:


五、整理约束条件

最终,带松弛因子的 QP 问题包含以下约束:

(三)反馈机制

这部分是模型预测控制(MPC)实现闭环反馈的关键步骤,它的核心逻辑可以拆解为三步。

1. 求解得到最优控制序列

2. 只取第一个控制增量,计算实际控制量

3. 系统执行控制量,进入下一个周期

  • 系统执行 u(t),状态发生变化;
  • 在下一个控制周期 t+1,控制器会根据新的状态信息,重新预测未来的输出,求解新的控制增量序列;
  • 重复上述过程,直到控制任务完成。

4. 为什么说这是 "反馈机制"?

传统的开环控制是 "一次规划,全程执行",而 MPC 通过滚动优化实现了闭环反馈:

  • 状态反馈:每个周期都基于当前最新的系统状态(x(t))重新预测,修正了模型误差和扰动带来的偏差;
  • 误差校正:如果系统因为扰动偏离了期望轨迹,下一个周期的优化会自动调整控制序列,把系统拉回期望轨迹;
  • 鲁棒性提升:滚动优化相当于 "边看边调",比开环控制更能应对不确定性。

三、结语

本次关于模型预测的知识就分享到此了,更多精彩知识敬请关注后续更新!感谢大家一直以来的默默支持!愿我的分享能给你带来不一样的收获!愿我们一起加油,共赴前程~~~~

相关推荐
重庆若鱼文化创意2 小时前
包装设计公司哪家好?价格差很多时,关键看材质、印刷工艺和实际包装成本
人工智能·python·材质
虚神界熊孩儿2 小时前
告别云端依赖!OpenStation 大模型本地部署,携手 OpenCode 重构 AI 编程全流程
人工智能·aicoding·本地大模型部署·opencode
unicrom_深圳市由你创科技2 小时前
为传统工业系统植入“智能体”:AI如何重构采购全流程
人工智能·重构
木雷坞2 小时前
Physical AI 数据工厂怎么落地?先把 CUDA、K8s、Quay 镜像拉取稳定下来
人工智能·容器·kubernetes
QYR-分析2 小时前
高级辅助驾驶系统控制模块行业分析报告
人工智能
STLearner2 小时前
AI论文速读 | QuitoBench:支付宝高质量开源时间序列预测基准测试集
大数据·论文阅读·人工智能·深度学习·学习·机器学习·开源
Lucifer__hell3 小时前
【测试】Axure原型的AI测试用例生成方案
人工智能·测试用例·axure
跨境卫士苏苏3 小时前
清关链路更透明以后跨境卖家如何减少资料反复修改
大数据·人工智能·安全·跨境电商·亚马逊
easy_coder3 小时前
ReAct 进入死循环?用 Harness 把它拉回来
人工智能·架构·云计算