蔚来自动驾驶高精地图面试经历:SLAM+点云处理+地图构建全考察

自动驾驶作者: 美历团队

2年SLAM经验,详细复盘蔚来三轮技术面试:一面SLAM基础与特征提取、二面点云处理与地图构建、三面项目深挖与在线建图,含真题汇总与心得建议

背景介绍

我是在一家自动驾驶公司做了2年SLAM工程师,主要做高精地图构建和定位。蔚来一直是我特别向往的公司,他们在量产车上的高精地图应用做得非常成熟,而且蔚来的技术氛围在造车新势力里是出了名的好。今年4月看到他们在招高精地图工程师,我二话不说就投了简历。

说实话准备这个面试我压力挺大的,因为蔚来的高精地图不只是离线建图,还涉及在线建图和地图更新,这块我之前接触不多。我花了差不多三周时间,把SLAM基础、点云处理、地图构建、在线建图这些知识点全部过了一遍,尤其是LOAM系列、Cartographer、HD Map构建流程这些重点内容。

面试流程是三轮技术面,下面详细复盘每一轮。

面试流程复盘

一面:SLAM基础+特征提取

一面是个看起来很沉稳的工程师,是定位建图组的。开场先让我自我介绍,然后直接开始问SLAM基础。

1. 说一下你对SLAM的理解?前端和后端分别做什么?

我说SLAM的核心问题是同时估计机器人位姿和构建环境地图。前端负责数据关联,即从传感器数据中提取特征并建立帧间对应关系,包括特征提取和匹配;后端负责状态估计,即根据前端的观测约束优化位姿和地图,包括滤波和图优化两种方法。

2. 特征点法和直接法各有什么优缺点?

我说特征点法的优点是对光照变化鲁棒、匹配精度高,缺点是特征提取和匹配耗时、在弱纹理区域容易失败;直接法的优点是不需要特征提取速度快、可以在弱纹理区域工作,缺点是对光照变化敏感、需要好的初始值、相机标定要求高。

3. LiDAR SLAM中的特征提取和视觉SLAM有什么不同?

我说LiDAR SLAM的特征提取主要基于几何特征,比如边缘点和平面点。LOAM就是提取边缘点和平面点分别做匹配,边缘点对应线特征,平面点对应面特征。和视觉SLAM不同的是,LiDAR特征不需要描述子,直接用几何属性(曲率、法向量)就能区分。另外LiDAR点云的密度不均匀(近处密远处疏),需要做范围归一化处理。

4. LOAM的边缘点和平面点是怎么提取的?

我说LOAM对每条扫描线上的点计算曲率,曲率大的点作为边缘点候选,曲率小的点作为平面点候选。然后做非极大值抑制,在每个局部区域只保留曲率最大的几个点作为边缘点,曲率最小的几个点作为平面点。另外还会剔除一些不可靠的点,比如被遮挡的点、平行于扫描线的点等。

5. 回环检测在SLAM中为什么重要?你们怎么做的?

我说回环检测是消除累积漂移的关键。没有回环检测,SLAM的轨迹会随着时间不断漂移,地图也会越来越不准。我们用的是基于Scan Context的回环检测方法,把每帧点云编码成一个二维描述子,通过描述子匹配找候选回环,再用ICP验证。Scan Context的优势是旋转不变性好,计算速度快。

6. 图优化中的鲁棒核函数有哪些?为什么需要?

我说鲁棒核函数是为了处理outlier的。常见的有Huber核、Cauchy核、DCS核等。如果没有鲁棒核,一个outlier的误差平方项会很大,会严重影响优化结果。Huber核对小误差保持二次项,对大误差降为一次项;Cauchy核更激进,对大误差的抑制更强。我们在实际中用Huber核比较多,因为它在抑制outlier的同时对inlier的影响较小。

一面大概1小时,面试官问得很细,尤其是LOAM的特征提取部分,幸好我之前手撸过LOAM代码,答得还算流畅。

二面:点云处理+地图构建

二面是个资深工程师,一上来就问点云处理和地图构建。

1. 点云配准有哪些方法?ICP的原理和变种?

我说点云配准主要分粗配准和精配准。粗配准用特征匹配或随机采样(RANSAC、FGR等)获取初始变换;精配准最经典的是ICP。ICP的原理是交替进行最近点搜索和变换估计直到收敛。ICP的变种有很多:Point-to-Plane ICP用点到面的距离代替点到点距离,收敛更快;Generalized ICP结合了点到点和点到面;NDT用正态分布变换表示点云,做概率配准。

2. 大规模点云地图怎么管理?

我说我们用的是分块管理策略,把大地图分成若干个子地图(submap),每个submap独立优化,全局再做图优化。存储上用八叉树或KD树做空间索引,查询时只加载当前区域附近的submap。另外点云还会做体素滤波降采样,减少存储和计算量。

3. 高精地图包含哪些要素?构建流程是怎样的?

我说高精地图主要包含车道线、道路边界、交通标志、信号灯、路面标记等语义要素,以及道路的几何信息(曲率、坡度、高程)。构建流程一般是:先采集多趟点云和图像数据,然后做点云配准和融合生成全局点云地图,再从点云中提取语义要素,最后人工质检和修正。

4. 车道线提取是怎么做的?

我说车道线提取有两条路线:一是从点云中提取,先做地面分割,然后在地面点云上做聚类和拟合;二是从图像中提取,用语义分割网络检测车道线像素,再根据相机标定投影到3D空间。我们实际用的是融合方案,图像检测提供语义信息,点云提供精确几何信息,两者融合得到高质量的车道线。

5. 地图的精度怎么保证?

我说精度保证主要靠三个方面:一是采集时用高精度IMU+RTK GNSS保证轨迹精度;二是多趟数据融合消除单趟的随机误差;三是后处理做全局图优化消除累积漂移。我们最终地图的绝对精度能做到10cm以内,相对精度5cm以内。

6. 地图更新的频率怎么定?怎么检测地图变化?

我说地图更新频率取决于道路变化的频率和自动驾驶系统对地图时效性的要求。我们目前是季度更新,但关键区域会做月度更新。变化检测主要靠对比新采集数据和现有地图,如果差异超过阈值就标记为变化区域。具体方法是把新点云和地图做配准,计算差异点云,然后做聚类分析判断是真实变化还是噪声。

二面大概1小时10分钟,面试官对地图构建的流程问得很详细,尤其是车道线提取和地图更新,我答得还行但有些细节不太确定。

三面:项目深挖+在线建图

三面是建图组的tech lead,很健谈,面试更像技术交流。

他先让我讲了一个最复杂的项目,我讲了我们在城区道路的高精地图构建项目。然后他开始深挖:

1. 你们建图过程中遇到最大的挑战是什么?

我说最大的挑战是动态障碍物的处理。城区道路上有大量车辆和行人,这些动态物体会污染点云地图,导致地图质量下降。我们的解决方案是在点云配准前先做动态物体剔除,用3D检测模型识别车辆和行人,把对应的点云去掉后再做配准。但这个方法不是完美的,远处的小目标可能检测不到,还是会留下一些噪点。

2. 在线建图和离线建图的区别?在线建图有什么特殊挑战?

我说离线建图是采集完数据后回办公室处理,可以用全局优化、多趟融合等方法保证精度;在线建图是车端实时构建局部地图,计算资源有限,不能做全局优化,只能做局部sliding window优化。在线建图的特殊挑战有三个:一是算力限制,必须在有限时间内完成;二是延迟要求高,地图必须实时可用;三是没有全局信息,局部地图可能有漂移。

3. 在线建图的车端部署怎么做的?

我说我们用的是轻量化SLAM方案,前端用特征点法(减少计算量),后端用sliding window优化(控制优化变量数量),回环检测用轻量化的Scan Context。整个SLAM模块在Orin平台上跑到30Hz没问题。地图输出是局部BEV地图,范围大概200m×200m,包含车道线、道路边界等要素。

4. 在线建图和离线地图怎么配合?

我说在线建图是离线地图的补充。正常情况下车辆使用离线高精地图导航,当检测到地图和实际环境不一致时(比如道路施工、临时封路),在线建图会实时构建局部地图,覆盖离线地图的对应区域。等离线地图更新后,再切回离线地图。这种方案的好处是既有离线地图的高精度,又有在线建图的实时性。

5. 你觉得高精地图的未来发展方向是什么?

我说我觉得有两个方向:一是从静态地图到动态地图,不仅包含道路的静态结构,还包含实时的交通状态(拥堵、事故等);二是从人工制作到自动制作,目前高精地图的制作还需要大量人工,未来希望通过AI大幅减少人工参与。另外,随着BEV感知的发展,有些公司开始探索"无图"方案,用实时感知替代高精地图,但我觉得在L4级别,高精地图仍然是必要的。

三面聊了1个多小时,面试官对在线建图特别感兴趣,问了很多车端部署的细节。最后他问我有什么问题,我问了蔚来在在线建图方面的最新进展,他提到了一些关于NeRF建图和语义SLAM的工作,很有意思。

真题汇总

SLAM基础部分:

1. SLAM的前端和后端分别做什么?

2. 特征点法和直接法的优缺点?

3. LiDAR SLAM和视觉SLAM的特征提取区别?

4. LOAM的边缘点和平面点提取方法?

5. 回环检测的重要性和实现方法?

6. 图优化中的鲁棒核函数?

点云处理部分:

7. 点云配准方法和ICP原理及变种?

8. 大规模点云地图的管理策略?

地图构建部分:

9. 高精地图的要素和构建流程?

10. 车道线提取的方法?

11. 地图精度的保证方法?

12. 地图更新频率和变化检测?

在线建图部分:

13. 动态障碍物对建图的影响和处理?

14. 在线建图和离线建图的区别和挑战?

15. 在线建图的车端部署方案?

16. 在线建图和离线地图的配合?

17. 高精地图的未来发展方向?

心得建议

1. SLAM基础必须扎实:特征提取、状态估计、回环检测、图优化这些核心概念必须能讲清楚,面试官会从基础概念开始逐步深入。

2. 点云处理是重点:ICP及其变种、点云滤波、动态物体剔除这些是高频考点,建议把经典论文和代码都过一遍。

3. 了解高精地图的完整流程:从数据采集到地图发布,每个环节都要清楚,尤其是车道线提取和地图更新这些实际工程问题。

4. 在线建图是加分项:如果你能讲清楚在线建图的挑战和车端部署方案,面试官会非常感兴趣,因为这是目前行业的热点方向。

5. 关注行业趋势:无图方案vs有图方案的争论、NeRF建图、语义SLAM等前沿方向要有自己的思考。

6. 准备时间建议3周:如果你有2年左右的SLAM/建图经验,3周的集中准备应该够了。重点复习SLAM基础、点云处理、地图构建三个方向。

FAQ

Q:蔚来高精地图岗的面试难度怎么样?

A:整体中等偏上。一面偏基础,二面偏工程实践,三面偏系统设计和前沿思考。如果你有扎实的SLAM基础和建图项目经验,应该能应对。

Q:面试官风格怎么样?

A:三个面试官都很专业,一面比较严谨,二面比较务实,三面更像技术讨论。整体氛围不错,不会故意刁难。

Q:需要手写SLAM代码吗?

A:没有让我手写代码,但会问代码实现细节,比如ICP的迭代过程、图优化的H矩阵构建等。建议把关键算法的伪代码能写出来。

Q:薪资大概什么水平?

A:高精地图工程师的base大概在35-50k之间,蔚来还有股票,整体package还不错。

Q:面试结果多久出来?

A:我是一面后5天收到二面通知,二面后4天收到三面通知,三面后1周收到offer。

#自动驾驶#高精地图#SLAM#点云处理#在线建图#面试经历