蔚來自動駕駛高精地圖面試經歷: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#点云处理#在線建图#面試經歷