4. 轨迹跟踪控制高频问题

本节覆盖自动驾驶控制算法面试的三大核心算法——PID、LQR、MPC。你需要掌握每个算法的核心原理、适用场景以及横向对比(实时性、稳定性、约束处理、模型依赖)。面试中常以追问链方式考察深度理解。

PID / LQR / MPC 核心对比

维度PIDLQRMPC
原理模型无模型(误差比例+积分+微分)线性二次型最优(状态反馈)模型预测+滚动优化
实时性极高(微秒级)高(毫秒级)中(需在线优化)
稳定性保证需手动整定理论最优(Riccati方程)约束下可达稳态
约束处理无无显式支持
典型场景高速车道保持、油门控制横向控制(如车辆侧向运动)避障、轨迹跟踪
① 明确问题 ② 核心原理 PID:误差调节 ③ 适用场景 模型有无/约束多少 ④ 对比维度 实时/稳定/约束 ⑤ 总结选择 实际工程怎么选? PID参数如何整定? LQR权重Q/R怎么设计? MPC约束处理细节? 抗积分饱和? LQR与极点配置关系? QP求解器选型?
面试常见开场:“请对比 PID、LQR、MPC,并说明在自动驾驶中分别用于哪些场景。” —— 本节所有问答均围绕这一核心问题展开。

📌 面试问题 1

“请简述 PID、LQR、MPC 的核心原理,并说明各自适用场景。”

面试官考察点

  • 对三种算法本质的理解(模型依赖 vs 无模型)
  • 能否快速匹配场景(实时性、约束、线性/非线性)
  • 语言表达的结构化(先原理、后场景、再对比)

回答框架

  1. 分层回答:分别给出 PID、LQR、MPC 一句话原理
  2. 场景注射:PID 用于低速/简单系统(如油门),LQR 用于线性模型(如横向控制),MPC 用于有约束/非线性(如避障)
  3. 一句话总结选型逻辑

简短示例回答

PID 基于误差的 P-I-D 调节,无需模型,实时性高,适合高速车道保持中的油门控制。LQR 基于线性模型和二次型最优,适合车辆横向动力学控制。MPC 基于模型预测和滚动优化,能显式处理约束,适合轨迹跟踪和避障,但计算量大。

可能追问

  • “MPC 比 LQR 的优势到底是什么?”
  • “LQR 需要模型,模型不准怎么办?”
  • “三种算法在实车上的采样周期分别是多少?”
避坑提醒:不要只说原理而忽略场景。面试官期望看到你“知道什么时候用什么”,而不是背公式。

📌 面试问题 2

“你在实际项目中如何整定 PID 参数?有没有遇到过积分饱和问题?”

面试官考察点

  • 工程实践经验(非理论)
  • PID 参数调试流程(Ziegler‑Nichols 或手动)
  • 对积分饱和的理解和处理方式

回答框架

  1. 先说明整定方法(先 P 后 I 再 D,或 Z‑N 临界比例法)
  2. 具体案例:如纵向控制中先调 P 使响应快速,再调 I 消除稳态误差
  3. 积分饱和:原因(积分累积过大),解决方法(抗积分饱和、条件积分)

简短示例回答

我用临界比例法对横向控制器整定:先加大 P 使系统进入等幅振荡,记录临界增益和周期,再按经验公式计算 PID 参数。遇到 throttle 长时间饱和时会出现积分饱和,我采用 clamping 法——输出限幅时冻结积分项。

可能追问

  • “条件积分与抗积分饱和的区别?”
  • “在发动机非线性区域 PID 如何自适应?”
  • “调试过程中如何观察响应曲线?”
避坑提醒:不要只说“手动调参”这么模糊。要有具体步骤或算法名称(如 Z‑N 规则、Simulink 响应分析)。

📌 面试问题 3

“在自动驾驶中,LQR 和 MPC 分别用于哪些控制环?请从稳定性和实时性角度对比。”

面试官考察点

  • 系统级理解(控制环分层)
  • 稳定性分析能力(LQR 的 Riccati 解 vs MPC 的约束鲁棒)
  • 实时性权衡(计算延迟 vs 控制性能)

回答框架

  1. 先说分层结构:路径规划 -> 运动控制(横向+纵向)
  2. LQR 常用于横向控制(侧向动力学),MPC 用于纵向+横向耦合或避障
  3. 稳定性:LQR 理论无限时域稳定,MPC 需验证终端约束
  4. 实时性: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 仿真 + 实车路试

核心难点

  1. 模式切换抖动:从 LQR 切换到 MPC 时控制量跳变,加入线性插值和切换逻辑
  2. 参数实时适配:LQR 权重 Q/R 随车速变化,建立查表策略
  3. 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 线性化具体怎么做?能展开一下雅可比矩阵的推导吗?”

💡 提示:专家答案体现了“分层思维”和“工程权衡”,这是大厂非常看重的。不要只给出一个答案,要给出“在不同条件下如何决策”的逻辑。