课程导论与预备知识:MPC在自动驾驶中的角色

各位同学,欢迎来到《MPC控制在自动驾驶中的落地实践》的第一章。

我是你们这门课的主讲。在自动驾驶行业摸爬滚打了快十年,从最早的L2车道保持,到后来的L4城区领航,我几乎每天都在跟控制算法打交道。说实话,MPC(模型预测控制)是我个人最偏爱的一个算法框架。为什么?因为它够聪明,够有远见。

这一章,我们不急着写代码,也不推公式。先把地图摊开,看看MPC在整个自动驾驶系统里到底站在什么位置,以及你该怎么学、需要哪些底子。

1.1 MPC在自动驾驶中的角色

自动驾驶系统通常分为感知、决策、规划、控制四大模块。控制模块在最下游,负责把规划出来的轨迹,转化成方向盘转角、油门刹车开度。

传统的控制方法,比如PID,简单粗暴。它只看当前偏差,不管未来。你想想看,如果前方有个急弯,PID要到弯道口才开始猛打方向,乘客早就被甩到车窗上了。

MPC不一样。它会“往前看”。

核心思想:MPC在每个控制周期,都会基于当前状态,预测未来一段时间的系统行为,然后求解一个带约束的优化问题,找到最优的控制序列。它只执行第一个控制量,然后下一周期重新来过。

我在项目中遇到过这样一个场景:高速上跟车,前车突然急刹。PID控制器反应慢了半拍,导致AEB(自动紧急制动)介入,体验极差。换成MPC后,它提前预测到前车的减速趋势,提前松油门、轻踩刹车,整个过程平顺得像老司机。

说白了,MPC在自动驾驶里扮演的角色,就是一个“有预判能力的执行者”。它把规划层的意图,转化为物理世界能执行的指令,同时保证安全、舒适、不违反车辆物理极限。

1.2 课程目标与学习路径

这门课的目标很明确:让你能独立在实车上部署一套MPC控制器。

不是纸上谈兵,不是调个仿真就完事。我们要讲的是落地——那些在论文里看不到的坑,那些标定时的血泪史。

整个课程分为四个阶段:

  1. 基础夯实(第1-5章):数学工具、车辆模型、MPC原理
  2. 算法进阶(第6-15章):约束处理、非线性MPC、求解器选型
  3. 工程实战(第16-25章):纵向控制、横向控制、联合控制、标定流程
  4. 系统集成(第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核心:预测模型 + 优化求解 代价函数 J = (x-x_ref)^T Q (x-x_ref) + u^T R u 约束:转向极限 | 加速度限值 | 安全边界 输出:方向盘转角 + 油门/刹车 下一周期:状态更新 → 重新预测 感知层 决策层 规划层 执行层

这张图把MPC的输入、核心、约束、输出串起来了。你会发现,整个控制过程就是一个“预测-优化-执行-再预测”的闭环。每一章的内容,都会落在这个框架的某个节点上。

好了,第一章就到这里。数学基础部分,如果你觉得生疏,建议花一周时间复习一下线性代数的二次型、矩阵求导,以及凸优化的基本概念。后面我们会反复用到。

下一章,我们开始搭建车辆动力学模型——这是MPC预测能力的根基。


专注资料整理