课程导论与预备知识:MPC在自动驾驶中的角色
各位同学,欢迎来到《MPC控制在自动驾驶中的落地实践》的第一章。
我是你们这门课的主讲。在自动驾驶行业摸爬滚打了快十年,从最早的L2车道保持,到后来的L4城区领航,我几乎每天都在跟控制算法打交道。说实话,MPC(模型预测控制)是我个人最偏爱的一个算法框架。为什么?因为它够聪明,够有远见。
这一章,我们不急着写代码,也不推公式。先把地图摊开,看看MPC在整个自动驾驶系统里到底站在什么位置,以及你该怎么学、需要哪些底子。
1.1 MPC在自动驾驶中的角色
自动驾驶系统通常分为感知、决策、规划、控制四大模块。控制模块在最下游,负责把规划出来的轨迹,转化成方向盘转角、油门刹车开度。
传统的控制方法,比如PID,简单粗暴。它只看当前偏差,不管未来。你想想看,如果前方有个急弯,PID要到弯道口才开始猛打方向,乘客早就被甩到车窗上了。
MPC不一样。它会“往前看”。
核心思想:MPC在每个控制周期,都会基于当前状态,预测未来一段时间的系统行为,然后求解一个带约束的优化问题,找到最优的控制序列。它只执行第一个控制量,然后下一周期重新来过。
我在项目中遇到过这样一个场景:高速上跟车,前车突然急刹。PID控制器反应慢了半拍,导致AEB(自动紧急制动)介入,体验极差。换成MPC后,它提前预测到前车的减速趋势,提前松油门、轻踩刹车,整个过程平顺得像老司机。
说白了,MPC在自动驾驶里扮演的角色,就是一个“有预判能力的执行者”。它把规划层的意图,转化为物理世界能执行的指令,同时保证安全、舒适、不违反车辆物理极限。
1.2 课程目标与学习路径
这门课的目标很明确:让你能独立在实车上部署一套MPC控制器。
不是纸上谈兵,不是调个仿真就完事。我们要讲的是落地——那些在论文里看不到的坑,那些标定时的血泪史。
整个课程分为四个阶段:
- 基础夯实(第1-5章):数学工具、车辆模型、MPC原理
- 算法进阶(第6-15章):约束处理、非线性MPC、求解器选型
- 工程实战(第16-25章):纵向控制、横向控制、联合控制、标定流程
- 系统集成(第26-30章):与规划模块对接、故障诊断、功能安全
我建议你按顺序来,尤其是前几章的数学基础,跳过去后面会很痛苦。我曾经带过一个实习生,上来就调MPC参数,结果连状态空间方程都写不对,折腾了两周毫无进展。
学习建议:每章结束后,自己动手推导一遍核心公式。不要只看代码,要理解为什么这么写。遇到不懂的优化概念,先记下来,后面会反复用到。
1.3 所需数学基础回顾
做MPC控制,数学是绕不开的。但别怕,我们不需要成为数学家,只需要掌握三个工具:线性代数、优化理论、系统动力学。
1.3.1 线性代数
MPC里到处都是矩阵。状态向量、控制向量、预测矩阵、代价函数里的二次型矩阵……
你需要熟练掌握:
- 矩阵乘法与转置:尤其是批量运算,MPC的预测步长一长,矩阵维度就上去了
- 特征值与特征向量:判断系统稳定性时用得到
- 二次型:代价函数的核心,
x^T Q x这种形式你会看到吐
举个例子,MPC的代价函数通常长这样:
J = (x - x_ref)^T Q (x - x_ref) + u^T R u
这里的Q和R就是权重矩阵。Q越大,系统越“在意”状态偏差;R越大,控制动作越“吝啬”。
避坑指南:我曾经在标定Q矩阵时,把对角线元素设得太大,导致控制器过于激进,方向盘高频抖动。后来发现,Q矩阵的非对角线元素也很重要,它们描述了不同状态量之间的耦合关系。
1.3.2 优化理论
MPC本质上是一个在线求解的优化问题。你需要理解:
- 凸优化 vs 非凸优化:线性MPC是凸优化,求解快;非线性MPC是非凸的,求解慢但更精确
- 约束处理:等式约束(车辆动力学)、不等式约束(转向极限、加速度上限)
- QP求解器:二次规划是MPC最常用的求解形式。常用的有OSQP、qpOASES、ACADO
嗯,这里要注意:不要试图自己写求解器。我在早期项目中犯过这个错,写出来的求解器又慢又不稳定,最后老老实实用了开源库。
1.3.3 系统动力学
MPC需要知道“给一个控制量,系统会怎么响应”。这就是模型。
最简单的模型是单车模型(Bicycle Model),它把车辆简化为前后两个轮子,忽略侧倾、俯仰。虽然简单,但在中低速场景下足够用。
状态量通常包括:
| 符号 | 含义 | 单位 |
|---|---|---|
| x, y | 车辆位置 | m |
| ψ | 航向角 | rad |
| v | 纵向速度 | m/s |
| δ | 前轮转角 | rad |
控制量通常是:
- 加速度 a(油门/刹车)
- 前轮转角变化率 δ̇(转向速率)
为什么用变化率而不是直接转角?因为真实车辆的转向系统有惯性,直接给转角会导致冲击。这也是我在实车测试中踩过的坑——一开始用转角作为控制量,结果转向电机嘎嘎响。
1.4 本章知识体系总览
下面这张图,是我自己画的MPC知识体系框架。你可以把它当作整个课程的地图。
这张图把MPC的输入、核心、约束、输出串起来了。你会发现,整个控制过程就是一个“预测-优化-执行-再预测”的闭环。每一章的内容,都会落在这个框架的某个节点上。
好了,第一章就到这里。数学基础部分,如果你觉得生疏,建议花一周时间复习一下线性代数的二次型、矩阵求导,以及凸优化的基本概念。后面我们会反复用到。
下一章,我们开始搭建车辆动力学模型——这是MPC预测能力的根基。