4. 轨迹跟踪控制高频问题
本节覆盖自动驾驶控制算法面试的三大核心算法——PID、LQR、MPC。你需要掌握每个算法的核心原理、适用场景以及横向对比(实时性、稳定性、约束处理、模型依赖)。面试中常以追问链方式考察深度理解。
PID / LQR / MPC 核心对比
| 维度 | PID | LQR | MPC |
|---|---|---|---|
| 原理模型 | 无模型(误差比例+积分+微分) | 线性二次型最优(状态反馈) | 模型预测+滚动优化 |
| 实时性 | 极高(微秒级) | 高(毫秒级) | 中(需在线优化) |
| 稳定性保证 | 需手动整定 | 理论最优(Riccati方程) | 约束下可达稳态 |
| 约束处理 | 无 | 无 | 显式支持 |
| 典型场景 | 高速车道保持、油门控制 | 横向控制(如车辆侧向运动) | 避障、轨迹跟踪 |
面试常见开场:“请对比 PID、LQR、MPC,并说明在自动驾驶中分别用于哪些场景。” —— 本节所有问答均围绕这一核心问题展开。
📌 面试问题 1
“请简述 PID、LQR、MPC 的核心原理,并说明各自适用场景。”
面试官考察点
- 对三种算法本质的理解(模型依赖 vs 无模型)
- 能否快速匹配场景(实时性、约束、线性/非线性)
- 语言表达的结构化(先原理、后场景、再对比)
回答框架
- 分层回答:分别给出 PID、LQR、MPC 一句话原理
- 场景注射:PID 用于低速/简单系统(如油门),LQR 用于线性模型(如横向控制),MPC 用于有约束/非线性(如避障)
- 一句话总结选型逻辑
简短示例回答
PID 基于误差的 P-I-D 调节,无需模型,实时性高,适合高速车道保持中的油门控制。LQR 基于线性模型和二次型最优,适合车辆横向动力学控制。MPC 基于模型预测和滚动优化,能显式处理约束,适合轨迹跟踪和避障,但计算量大。
可能追问
- “MPC 比 LQR 的优势到底是什么?”
- “LQR 需要模型,模型不准怎么办?”
- “三种算法在实车上的采样周期分别是多少?”
避坑提醒:不要只说原理而忽略场景。面试官期望看到你“知道什么时候用什么”,而不是背公式。
📌 面试问题 2
“你在实际项目中如何整定 PID 参数?有没有遇到过积分饱和问题?”
面试官考察点
- 工程实践经验(非理论)
- PID 参数调试流程(Ziegler‑Nichols 或手动)
- 对积分饱和的理解和处理方式
回答框架
- 先说明整定方法(先 P 后 I 再 D,或 Z‑N 临界比例法)
- 具体案例:如纵向控制中先调 P 使响应快速,再调 I 消除稳态误差
- 积分饱和:原因(积分累积过大),解决方法(抗积分饱和、条件积分)
简短示例回答
我用临界比例法对横向控制器整定:先加大 P 使系统进入等幅振荡,记录临界增益和周期,再按经验公式计算 PID 参数。遇到 throttle 长时间饱和时会出现积分饱和,我采用 clamping 法——输出限幅时冻结积分项。
可能追问
- “条件积分与抗积分饱和的区别?”
- “在发动机非线性区域 PID 如何自适应?”
- “调试过程中如何观察响应曲线?”
避坑提醒:不要只说“手动调参”这么模糊。要有具体步骤或算法名称(如 Z‑N 规则、Simulink 响应分析)。
📌 面试问题 3
“在自动驾驶中,LQR 和 MPC 分别用于哪些控制环?请从稳定性和实时性角度对比。”
面试官考察点
- 系统级理解(控制环分层)
- 稳定性分析能力(LQR 的 Riccati 解 vs MPC 的约束鲁棒)
- 实时性权衡(计算延迟 vs 控制性能)
回答框架
- 先说分层结构:路径规划 -> 运动控制(横向+纵向)
- LQR 常用于横向控制(侧向动力学),MPC 用于纵向+横向耦合或避障
- 稳定性:LQR 理论无限时域稳定,MPC 需验证终端约束
- 实时性:LQR 解析解(微秒级),MPC 在线 QP(毫秒级)
简短示例回答
LQR 适合横向控制环,因为车辆动力学在低速时可线性化,Riccati 方程离线求解,实时性高;MPC 用于纵横向耦合或避障,因为能处理转向/油门约束,但需在线优化,采样频率通常在 20‑50 Hz。稳定性上 LQR 保证全局渐近稳定,MPC 需通过终端代价函数保证递归可行性。
可能追问
- “LQR 的多变量耦合如何处理?”
- “MPC 的预测时域怎么选?”
- “能不能用 LQR 代替 MPC?什么时候会失败?”
避坑提醒:不要混淆“最优控制”和“模型预测控制”。LQR 也是最优控制,但无限时域;MPC 是有限时域滚动优化。
🚀 项目案例:自动驾驶纵向与横向联合控制
项目名称
基于 LQR+MPC 的混合控制策略在园区低速无人车上的应用
业务背景
园区封闭道路无人接驳车,需要平顺的纵向加减速和精确的横向跟踪,同时避免碰撞障碍物。纵向采用 PID 油门/刹车,横向采用 LQR + 前馈;紧急避障时切换至 MPC。
规模指标
- 车辆数:30 辆
- 最高速度:8 m/s (30 km/h)
- 跟踪误差:< 0.1 m (横向),< 0.3 m/s (纵向)
- 控制频率:纵向 100 Hz,横向 50 Hz,MPC 20 Hz
技术栈
- 算法:PID(纵向)、LQR(横向)、MPC(避障)
- 工具:MATLAB / Simulink 建模,C++ 实车部署
- 求解器:OSQP(MPC 的 QP 求解)
- 测试:CARLA 仿真 + 实车路试
核心难点
- 模式切换抖动:从 LQR 切换到 MPC 时控制量跳变,加入线性插值和切换逻辑
- 参数实时适配:LQR 权重 Q/R 随车速变化,建立查表策略
- MPC 计算延迟:优化 horizon 为 10,采用热启动加速求解
面试高频追问
- “为什么横向不用 PID 而用 LQR?”
- “MPC 切换时如何保证平滑?请讲具体实现。”
- “查表的 Q/R 表是如何标定的?”
可迁移回答话术
“本案例中我们采用分层混合控制:纵向简单用 PID,保证实时性;横向用 LQR 获得最优跟踪;当预测到碰撞风险时切换至 MPC 显式处理转向和刹车约束。切换采用插值缓变,避免跳变。这体现了‘简单场景用简单算法,复杂场景用复杂算法’的工程哲学。”
🏢 大厂模拟面试
面试官提问:“我们在做 L4 级自动驾驶的轨迹跟踪控制,车辆动力学较强非线性,你打算用 LQR 还是 MPC?为什么?”
候选人回答:“嗯……我觉得都可以吧,LQR 更快,MPC 更精确。”
普通答案:“我选择 MPC,因为能处理非线性。LQR 适合线性系统。”
优秀答案:“如果实时性允许(控制频率>20Hz),我优先用 MPC,因为能在预测步中考虑轮胎摩擦圆等非线性约束。如果硬件受限(例如只有工业级 MCU),我会用 LQR 配合前馈补偿以及自适应增益调度来处理部分非线性。”
专家答案:“我会先评估车辆行驶工况。低速(<5 m/s)下轮胎几乎线性,LQR 足以应付且实时性极高;中速(5-15 m/s)非线性增强,此时用 LTV‑MPC(线性时变 MPC),在每个采样点线性化车辆模型;高速则必须使用 NMPC 或学习模型预测控制。另外,如果控制器需要硬实时保证,我倾向于 LQR + 前馈 + 抗扰动观测器,因为 MPC 求解时间不确定。”
面试官追问:“你说的 LTV‑MPC 线性化具体怎么做?能展开一下雅可比矩阵的推导吗?”
💡 提示:专家答案体现了“分层思维”和“工程权衡”,这是大厂非常看重的。不要只给出一个答案,要给出“在不同条件下如何决策”的逻辑。