第3章:PID与MPC控制算法面试高频问题
本章聚焦自动驾驶控制方向最常考的两种算法——PID与MPC。面试官通过基础原理、工程细节、场景选择三个维度考察候选人的理论深度和实战判断力。
知识结构:PID vs MPC对比表
| 维度 | PID | MPC |
|---|---|---|
| 模型依赖 | 无模型(仅误差) | 需要预测模型 |
| 约束处理 | 不直接支持 | 天然支持(输入/状态约束) |
| 计算开销 | 低(kHz级) | 高(Hz~几十Hz) |
| 适用场景 | 低速、简单路径跟踪 | 高速、复杂工况、有安全约束 |
| 调试难度 | 经验调参 | 需要模型标定 + 优化求解 |
| 面试频率 | ★★★★★ | ★★★★★ |
面试问题 1
请描述PID控制器的基本原理及其在自动驾驶中的应用。
考察点:基础理论理解、工程直觉、能否联系实际场景。
回答框架:3句话:① 比例消除当前误差,积分消除稳态误差,微分抑制振荡;② 举例:纵向速度环用PI,横向用PD;③ 说明局限性(无模型、无约束、调参依赖经验)。
示例回答:PID通过比例、积分、微分三个分量控制。在自动驾驶中,纵向上常用PI控制车速(积分克风阻),横向上常用PD控制前轮转角(D项抑制振荡)。但PID无法处理动力学约束和时延,高速场景需搭配前馈或模型补偿。
可能追问:① 积分饱和怎么处理?② 微分项对噪声敏感怎么解决?③ 前馈如何设计?
面试问题 2
MPC相比于PID有哪些优势和挑战?在什么场景下你会选择MPC?
考察点:算法对比能力、工程落地认知、场景判断力。
回答框架:① 优势:显式约束处理、多目标优化、滚动预测;② 挑战:计算实时性、模型精度、标定成本;③ 场景:高速避障、窄路通行、有人-无人混行等需安全约束的场景。
示例回答:MPC能同时优化跟踪精度、平顺性和控制能耗,并硬性约束转向/制动极限。我在L4泊车项目中用MPC处理曲率突变,避免PID引起的方向急变。代价是求解延迟,常见策略是降维(简化轮胎模型)或用嵌入式求解器(ACADO)。
可能追问:① MPC的预测时域如何选取?② 非线性MPC和线性MPC的区别?③ 遇到模型失配怎么鲁棒设计?
面试问题 3
设计一个车辆横向控制器时,你会选择PID还是MPC?请说明你的设计流程。
考察点:系统设计能力、模型认知、工程取舍。
回答框架:① 分析需求:车速范围、曲率变化、精度要求;② 若低速且简单路径,选PID+前馈(省算力);③ 若高速/大曲率/有安全约束,选MPC;④ 给出仿真验证指标(横向误差±15cm,横摆率振荡< 3°/s)。
示例回答:假定车速≤30km/h且路径曲率≤0.2,我会用PD+前馈:PD负责反馈误差,前馈根据曲率计算稳态转角,最后用低通滤波抑制微分噪声。若车速>60km/h,改用MPC,预测时域设为15步,约束前轮角±30°、横摆角速度±5°/s。
可能追问:① 前馈量怎么算(基于阿克曼模型)?② 如何验证控制器鲁棒性(改变路面附着系数)?③ 你的控制器在“下着雨的匝道”上表现如何?
项目案例模板:MPC路径跟踪控制器
| 要素 | 内容 |
|---|---|
| 项目名称 | 基于线性时变MPC的自主泊车路径跟踪控制器 |
| 业务背景 | 解决地下停车库中曲率< 8m的连续弯道,要求全程横向误差< 15cm |
| 规模指标 | 10辆车×1000次泊车测试,通过率98.6%,平均求解时间6.3ms |
| 技术栈 | LTV-MPC、CasADi、IPOPT、ROS2、Matlab/Simulink |
| 核心难点 | 轮胎非线性饱和+泊车终点精度要求±5cm;使用近似线性化+终端代价函数 |
| 面试高频追问 | ① 为什么不用NMPC?② 求解失败怎么处理?③ 如何标定轮胎模型参数? |
| 可迁移回答话术 | “我从简单线性MPC开始,逐步加入滑移角补偿;失败时启用fallback PID+降速策略确保安全。” |