自动驾驶控制高级工程师高阶面试宝典 - 第4节
第4章 控制算法核心:MPC模型预测控制面试专题
MPC(模型预测控制)是自动驾驶纵向与横向控制的核心算法,面试高频覆盖原理推导、约束处理、调参策略、数值求解四大板块。本章通过3个问答卡片+1个真实项目模板,帮你在面试中系统展现“模型-约束-优化-落地”闭环能力。
💡 面试官期待你从“为什么用 MPC”→“如何建模”→“如何求解”→“如何调优”自顶向下阐述,并能在白板上推导基础代价函数。
1. 面试问答:MPC 基本原理与三大要素
| 面试问题 | 请简述模型预测控制(MPC)的基本原理,并说明其三大核心要素。 |
| 考察点 | 是否理解预测模型、滚动优化、反馈校正三者关系;能否用简洁语言讲清“前瞻性控制”本质。 |
| 回答框架 | ① 预测模型:基于车辆运动学/动力学模型预测未来Np步状态 → ② 滚动优化:在每个采样时刻求解有限时域最优控制问题,仅执行第一步 → ③ 反馈校正:下一时刻用真实状态更新预测起点,实现闭环鲁棒性。 |
| 示例回答 | MPC 核心是“用模型预测未来,滚动求解最优,反馈修正误差”。三大要素:预测模型(如自行车模型),滚动优化(每个周期解 QP,仅执行第一控制量),反馈校正(用当前实测状态重初始化预测)。 |
| 可能追问 |
|
| 避坑提醒 | ❌ 不要把 MPC 简单说成“PID 的升级版”;✅ 强调“约束处理”和“前瞻性”是 MPC 相比 LQR 的核心优势。 |
2. 面试问答:约束处理方法(硬约束 vs 软约束)
| 面试问题 | MPC 中如何处理各种约束?硬约束和软约束分别适用于哪些场景? |
| 考察点 | 是否理解约束可行性问题;能否区分硬/软约束适用边界;是否了解松弛变量技巧。 |
| 回答框架 | ① 约束类型:状态约束(如横向偏差≤0.3m)、控制约束(加速度±3m/s²)、输出约束(速度≤限速)→ ② 硬约束:物理限制(如执行器行程),不可违背 → ③ 软约束:优先满足但允许轻微超出(如舒适性边界),引入松弛变量和惩罚权重 → ④ 工程实践:先软后硬,防止优化无解。 |
| 示例回答 | 硬约束用于执行器限幅、安全边界(如方向盘转角±40°),必须满足;软约束用于平顺性指标(如加速度变化率≤2m/s³),引入 ε≥0 和惩罚项,使优化始终有解。实际中通常对部分状态先设软约束,避免因模型误差导致无解。 |
| 可能追问 |
|
| 避坑提醒 | ❌ 不要只说“用库函数加约束”;✅ 主动提松弛变量和可行域判定,体现对数值求解的理解。 |
3. 面试问答:调参策略(Np、Nc、权重矩阵)
| 面试问题 | MPC 中预测时域 Np、控制时域 Nc 以及代价权重 Q/R 如何调参?有什么经验性规律? |
| 考察点 | 是否理解各参数对性能与实时性的 trade-off;是否有实际调参经验;能否量化说明。 |
| 回答框架 | ① Np(预测时域):控制“前瞻多远”——Np越大越平滑但计算量增大,通常取1~3秒的步数 → ② Nc(控制时域):控制“自由度”——Nc增大使优化更灵活但抖动风险上升,一般Nc≤Np的1/3 → ③ Q/R权重:Q大→跟踪误差小但控制剧烈;R大→动作平顺但响应慢;先调Q再微调R → ④ 实践:通过仿真扫描+实车微调,或使用贝叶斯优化。 |
| 示例回答 | 通常设采样周期 Ts=0.1s,Np=20(对应2秒),Nc=5~8。Q 先让稳态误差达标,再提高 R 抑制抖动。例如纵向控制中,位置误差权重设为5,加速度权重设为0.1,起步超调可控。 |
| 可能追问 |
|
| 避坑提醒 | ❌ 不要只背公式不说具体数值范围;✅ 给出可落地的调参顺序(先 Np 再权重),展示工程直觉。 |
项目案例:基于 MPC 的自适应巡航(ACC)纵向控制
| 项目名称 | 高速场景 ACC MPC 控制器设计与实车部署 |
| 业务背景 | 车厂 L2+ 功能要求:前车巡航、跟停、起步,需兼顾安全性(避撞)与舒适性(加加速度≤2m/s³)。 |
| 规模指标 | 车速 0~120km/h;跟车距离误差 < 1m;加速度误差 < 0.5m/s²;加加速度 < 2m/s³;50ms 控制周期。 |
| 技术栈 | C++17、OSQP 求解器、ROS2 / CyberRT、Carla 仿真 + 实车 dSPACE |
| 核心难点 |
|
| 面试高频追问 |
|
| 可迁移回答话术 | “在该 ACC 项目中,我主要负责 MPC 控制器设计与调优。通过将加速度和加加速度设为软约束并增加松弛因子,解决了紧急工况下的无解问题;同时利用热启动和剪枝策略将求解耗时压到 8ms,满足 50ms 周期要求。这个经验让我可以快速迁移到横向 LKA 或路径跟踪控制中。” |
📌 面试中提及项目时,务必用 STAR 逻辑(Situation, Task, Action, Result)展开,重点突出“你做了什么”以及“量化结果”。
⚠️ 不要低估实时性(求解时间)问题——面试官尤其关注你是否考虑过工程落地的性能瓶颈。