自动驾驶规划算法工程师面试实战题库 - 第4节

4. 搜索与采样规划高频问题

本章聚焦自动驾驶轨迹规划中最常被问到的三类算法:A*(启发式搜索)、RRT(快速随机扩展树)、Lattice Planner(栅格采样)。面试官不仅考察你“知道什么”,更关注你“如何选择”以及“在工程中如何改进”。下面先给出一个通用回答框架,再拆解每个算法的高频问题。

轨迹规划算法面试回答五步框架 1. 问题定性 说清场景 2. 核心原理 30秒讲清 3. 改进点 工程落地 4. 对比选型 优劣分析 5. 边界处理 异常情况 每个节点的关键话术 ① “这是一个高速变道场景,需要实时性,我选择A*。” ② “A*基于启发式f=g+h,RRT通过随机采样+树生长,Lattice在Frenet采样。” ③ “对A*我加了双向搜索和JPS;RRT加了路径平滑和RRT*;Lattice加了冲突检查。” ④ “A*适合静态图,RRT适合高维空间,Lattice适合结构化道路。”

问答卡片 1|A* 算法优缺点与工程改进

面试问题:请说明A*算法的基本原理,以及你在自动驾驶项目中对它做了哪些改进?

面试官考察点:对启发式搜索的理解深度、工程落地能力、改进创新意识。

回答框架:① 一句话定义A* -> ② 三个核心因素:开放列表/关闭列表、f=g+h、启发式函数 -> ③ 在项目中至少给出2项改进(如双向搜索、JPS、跳点剪枝、动态权重等)。

示例回答:A*是结合Dijkstra和贪心搜索的图搜索算法,通过f=g+h评估节点。我在项目中做了三个改进:① 采用Jump Point Search(JPS)加速,只保留关键转角点,搜索节点减少约70%;② 增加双向搜索,缩短搜索时间50%;③ 引入动态权重,高速场景h权重更大,提高实时性。

可能追问:双向搜索如何保证相遇点最优?启发式函数为何选择曼哈顿距离而非欧氏距离?JPS在什么场景下失效?

避坑提醒:不要只背原理,一定要结合具体业务场景(如城市道路vs高速);避免说“我用了A*但没有改进”,面试官期待看到工程优化。

问答卡片 2|RRT / RRT* 在规划中的作用

面试问题:RRT算法在高维规划中有什么优势?RRT*相比标准RRT改进了什么?

面试官考察点:采样与搜索空间平衡、渐进最优性概念、路径质量判断。

回答框架:① 优势:概率完备、适合非完整约束 -> ② 核心步骤:随机采样 -> 最近邻 -> 扩展 -> 碰撞检测 -> ③ RRT*增加了重选父节点和重布线,渐进最优。

示例回答:RRT通过均匀采样在高维空间快速构建树,适合带有运动学约束的规划。RRT*相比标准RRT增加了两步:每次新节点生成后,以半径r内节点重新选择父节点使代价最小,再对邻近节点重布线,保证渐近最优性。我曾在泊车场景中采用RRT*,路径代价降低约20%。

可能追问:RRT*的收敛速度如何优化?如何设置采样偏向区域?在动态环境下如何处理?

避坑提醒:RRT*虽优但收敛慢,不要只说理论;要说明实际工程中采用了“目标偏向采样” + “自适应步长”来加速;避免说“RRT路径振荡”,而应补充平滑后处理。

问答卡片 3|Lattice Planner 思路与适用场景

面试问题:请解释Lattice Planner的采样思路,与A*/RRT相比适用于什么场景?

面试官考察点:Frenet坐标系理解、采样密度与实时性权衡、场景匹配。

回答框架:① Lattice基于Frenet坐标系,沿着道路中心线做横向纵向采样,形成轨迹簇 -> ② 通过代价函数选最优 -> ③ 优势:生成轨迹自然平滑,适合结构化道路;劣势:依赖高精度地图和速度曲线。

示例回答:Lattice Planner在Frenet坐标系下,沿s方向等间隔采样终点状态,用五次多项式生成轨迹簇;再通过cost函数(加速度、曲率、与参考线距离)排序选择。相比A*适合高速路平稳变道,相比RRT更适合有明确车道线的场景,我曾在城区车道保持项目中使用,实时性达到20ms。

可能追问:如何处理横向采样与纵向采样的耦合?在障碍物突然切入时怎么做重规划?五次多项式与三次样条的区别?

避坑提醒:不要只答“采样-选优”四个字;必须讲清楚采样空间(s,d)和轨迹表示(如五次多项式)以及代价函数的设计思路;避免说“Lattice比A*好”,应结合场景客观对比。

面试追问路径图:从“会用”到“懂优化” 算法基本原理 A* 追问方向 RRT 追问方向 Lattice 追问方向 双向搜索 JPS改进 RRT*收敛 动态规划 横向采样 代价函数 面试官会从“你用了什么算法”逐步追问到“具体参数怎么调”

项目案例|基于Lattice Planner的高速公路变道规划

项目名称高速公路自主变道轨迹规划系统
业务背景在L4级自动驾驶卡车项目中,需要实现高速(80-120km/h)下安全、舒适的自动变道。
规模指标覆盖高速路段200km;变道成功率>99.5%;平均变道耗时3.2s;乘客横向加速度峰值<1.5m/s²
技术栈Lattice Planner (Frenet采样) + 五次多项式 + 代价函数(RSS安全距离+舒适度) + 路径平滑 (B样条) + C++ (ROS2节点)
核心难点① 高速下对动态障碍物预测的依赖;② 变道期间目标车道突然出现减速车辆需要紧急撤回;③ 多目标优化(安全、舒适、效率)的权重设计。
面试高频追问
  • 你如何确定采样步长(s方向的粒度)?—— 根据车速和规划周期,通常s步长5-10m,保证每帧生成20-30条轨迹。
  • 撤回策略怎么实现?—— 同时保留原车道轨迹作为Fallback,若新轨迹cost超过阈值,切换到原车道轨迹。
  • 如何验证路径的光滑性?—— 计算曲率变化率 jerk,要求jerk<2m/s³。
  • 跟A*做路径规划再分段拟合有什么区别?—— A*适合静态图,Lattice天然在Frenet系下生成,更契合车道线约束。
可迁移回答话术“在项目中我采用Lattice Planner,通过横向纵向独立采样生成轨迹簇,再结合代价函数评估。针对高速变道场景,我增加了动态障碍物预测模块的接口,当目标车道出现紧急情况时,Fallback策略会立即切换回原车道轨迹,保证安全。这个经验同样适用于城市路口的换道规划,只需要调整采样步长和代价权重。”
💡 面试加分技巧:当面试官问“你会选哪个算法?”时,回答结构参考本章开头的“五步框架”:先定性场景,再陈述原理,然后列出2-3个工程改进,最后对比选型。避免只背算法书,要融入你自己的落地经验。