元戎啟行自動駕駛控制算法面試經歷:MPC+車輛動力學+軌跡跟踪全考察

自動駕駛作者: 美歷團隊

2年控制算法經驗,詳細復盤元戎啟行三輪技術面試:一面控制理論與MPC、二面車輛動力學與軌跡跟踪、三面項目深挖與實車調試,含真題彙總與心得建議

背景介紹

我是在一家自動駕駛公司做了2年控制算法工程師,主要做MPC和軌跡跟踪。元戎啟行一直是我特別想去的公司,他們在L4自動駕駛控制方面的技術積累非常深厚,尤其是MPC和車輛動力學的結合做得很好。今年5月看到他們在招控制算法工程師,我馬上就投了。

準備這個面試我花了差不多三週時間,把控制理論、MPC、車輛動力學、軌跡跟踪這些知識點全部過了一遍。尤其是MPC的各種變種(線性MPC、非線性MPC、時變MPC)和車輛動力學模型(運動學模型、動力學模型、輪胎模型),這些是面試的重點。

面試流程是三輪技術面,下面詳細復盤每一輪。

面試流程復盤

一面:控制理論+MPC

一面是個看起來很年輕的工程師,後來知道是控制組的。開場先讓我自我介紹,然後直接開始問控制理論。

1. PID控制和MPC的區別?MPC有什麼優勢?

我說PID是反饋控制,根據當前誤差計算控制量,無法處理約束和預見未來;MPC是預測控制,通過模型預測未來狀態,在滿足約束的前提下優化控制序列。MPC的優勢主要有三個:一是可以顯式處理輸入和狀態約束;二是可以預見未來參考軌跡,提前做出響應;三是可以處理多輸入多輸出(MIMO)系統。

2. MPC的預測時域和控制時域怎麼選擇?

我說預測時域Np決定了MPC能「看到」多遠的未來,Np越大控制性能越好但計算量也越大;控制時域Nc決定了優化變量的數量,Nc通常小於Np,Nc之後的控制量保持不變。一般Np取3-5秒,Nc取1-2秒,具體需要根據控制頻率和系統動態特性來調。在實際項目中,我們用的是Np=50步、Nc=20步,控制頻率50Hz。

3. 線性MPC和非線性MPC的區別?什麼時候用非線性MPC?

我說線性MPC用線性模型做預測,優化問題是凸的,可以用QP求解器高效求解;非線性MPC用非線性模型做預測,優化問題是非凸的,需要用SQP或內點法求解,計算量更大。非線性MPC適用於系統動態非線性較強的場景,比如高速大曲率轉彎、極限工況等。我們在實際項目中,低速場景用運動學模型+線性MPC就夠了,高速場景需要動力學模型+非線性MPC。

4. MPC的求解器有哪些?你們用的哪個?

我說常用的求解器有OSQP(QP問題)、qpOASES(QP問題)、IPOPT(NLP問題)、ACADOS(快速NMPC框架)等。我們用的是OSQP做線性MPC,ACADOS做非線性MPC。ACADOS的優勢是可以生成C代碼,在嵌入式平台上運行效率很高。

5. MPC的穩定性怎麼保證?

我說MPC的穩定性保證主要有兩種方法:一是終端約束法,在預測時域末端加入終端約束和終端代價,保證閉環穩定性;二是足夠長的預測時域,當Np足夠大時,MPC的穩定性可以自然保證。我們實際用的是終端約束法,在預測時域末端加入一個終端橢圓約束,保證狀態收斂到目標點附近。

6. MPC的計算延遲怎麼處理?

我說計算延遲是MPC在實際應用中的一個重要問題。如果求解時間超過控制週期,控制量就不能及時更新。我們的處理方式有兩個:一是用warm start,用上一時刻的解作為當前時刻的初始值,大幅減少迭代次數;二是設置最大求解時間,如果超時就用上一步的解做一步前向傳播作為當前控制量。另外我們也在探索顯式MPC,把優化問題離線求解成分段仿射函數,在線只需要查表。

一面大概1小時,面試官對MPC問得很細,幸好我之前做過不少MPC項目,答得還算流暢。

二面:車輛動力學+軌跡跟踪

二面是個資深工程師,一上來就問車輛動力學和軌跡跟踪。

1. 車輛運動學模型和動力學模型的區別?

我說運動學模型只考慮幾何關係,不考慮力和力矩,假設車輪無側滑。最常用的是自行車運動學模型,狀態量是[x, y, ψ, v],控制量是[δ, a]。動力學模型考慮了輪胎力、側偏角等物理量,能更準確地描述車輛動態。最常用的是自行車動力學模型,狀態量多了側偏角β和橫擺角速度r,控制量還是[δ, a]。

2. 輪胎模型有哪些?Pacejka魔術公式怎麼用?

我說輪胎模型主要有線性輪胎模型、Pacejka魔術公式、Dugoff模型等。線性輪胎模型假設側偏力與側偏角成正比,適用於小側偏角工況;Pacejka魔術公式是經驗模型,用正弦函數擬合輪胎力特性,精度高但參數多;Dugoff模型是解析模型,考慮了輪胎力的飽和特性。我們在MPC中用的是Pacejka魔術公式做非線性MPC,用線性輪胎模型做線性MPC。

3. 軌跡跟踪的誤差怎麼定義?

我說軌跡跟踪誤差主要有橫向誤差、航向誤差和曲率誤差。橫向誤差是車輛質心到參考軌跡的最短距離;航向誤差是車輛航向角和參考航向角的差值;曲率誤差是車輛實際曲率和參考曲率的差值。在Frenet坐標系下,橫向誤差就是d,航向誤差就是Δψ。

4. Stanley方法和Pure Pursuit方法的區別?

我說Stanley方法是前輪反饋控制,根據前輪到參考軌跡的橫向誤差和航向誤差計算轉向角,優點是低速跟踪精度高,缺點是高速容易振蕩;Pure Pursuit方法是後輪跟隨控制,根據後輪到前方一個預瞄點的橫向誤差計算轉向角,優點是高速穩定性好,缺點是低速跟踪精度差、轉彎有內切現象。我們在實際項目中,低速用Stanley,高速用Pure Pursuit,中間速度做平滑切換。

5. MPC做軌跡跟踪和Stanley/Pure Pursuit相比有什麼優勢?

我說MPC的優勢主要有三個:一是可以顯式處理約束(轉向角限幅、加速度限幅等),Stanley和Pure Pursuit只能事後限幅;二是可以預見未來參考軌跡,提前做出響應,在曲率變化大的地方表現更好;三是可以同時優化縱向和橫向控制,Stanley和Pure Pursuit只能做橫向控制。但MPC的缺點是計算量大,實時性不如Stanley和Pure Pursuit。

6. 高速場景下的軌跡跟踪有什麼特殊挑戰?

我說高速場景的特殊挑戰有三個:一是車輛動態的非線性增強,大側偏角下輪胎力會飽和,線性模型不再適用;二是控制延遲的影響更大,高速下很小的延遲都會導致明顯的跟踪誤差;三是安全性要求更高,高速下控制失誤的後果更嚴重。我們在高速場景下用非線性MPC+動力學模型,並且加入了輪胎力飽和約束,保證控制量不超過輪胎的物理極限。

二面大概1小時15分鐘,面試官對車輛動力學問得很深入,尤其是輪胎模型和高速場景的處理,我答得還行但有些細節不太確定。

三面:項目深挖+實車調試

三面是控制組的tech lead,很有經驗,面試更像技術交流。

他先讓我講了一個最複雜的項目,我講了我們在高速場景下的MPC軌跡跟踪項目。然後他開始深挖:

1. 你們MPC的控制頻率是多少?求解時間是多少?

我說控制頻率是50Hz,即每20ms需要完成一次MPC求解。實際求解時間大概5-8ms(線性MPC)和10-15ms(非線性MPC),留了足夠的餘量。如果求解超時,會回退到上一幀的解做一步前向傳播。

2. 實車調試和仿真調試有什麼區別?

我說最大的區別是仿真是確定性的,同樣的輸入總是得到同樣的輸出;但實車有很多不確定性,比如路面附著係數變化、風阻變化、車輛參數偏差等。仿真調好的參數在實車上往往需要微調,尤其是MPC的權重矩陣和約束參數。另外實車調試還需要考慮安全性,不能直接上極限工況,需要循序漸進。

3. 實車調試中遇到最難的問題是什麼?

我說最難的是低附著路面(冰雪路面)的控制。在低附著路面上,輪胎力很容易飽和,MPC的模型預測會嚴重偏離實際,導致控制失效。我們的解決方案是在MPC中加入了路面附著係數的在線估計,根據估計值調整輪胎力約束。另外在檢測到低附著路面時,會自動降低目標速度和加速度,增加安全餘量。

4. 你們怎麼處理不同駕駛員的駕駛風格?

我說我們提供了舒適、標準、運動三種駕駛模式,通過調整MPC的權重矩陣來改變駕駛風格。舒適模式加大加速度和jerk的懲罰,運動模式減小這些懲罰但增加跟踪精度的權重。另外我們也在探索個性化MPC,根據駕駛員的歷史操作數據自動調整權重。

5. 控制系統的安全性怎麼保證?

我說安全性保證主要靠三層:第一層是MPC內部的約束,保證控制量不超過物理極限;第二層是監控層,實時檢查控制量和狀態量是否在安全範圍內,如果越界就觸發安全響應;第三層是硬件安全層,有獨立的ASIL-D級別監控芯片,在控制層失效時執行緊急停車。三層安全架構確保即使軟件出bug,車輛也不會失控。

6. 你覺得自動駕駛控制最大的挑戰是什麼?

我說我覺得最大的挑戰是極端工況的控制。正常工況下MPC已經做得很好了,但在極端工況(低附著、高速急轉、緊急避障)下,車輛動態高度非線性,模型預測的準確性大幅下降,控制性能也跟著下降。如何在極端工況下保證安全性和穩定性,是控制算法最大的挑戰。

三面聊了1個多小時,面試官對實車調試和安全設計特別感興趣。最後他問我有什麼問題,我問了元戎啟行在極端工況控制方面的最新進展,他提到了一些關於模型預測控制和強化學習結合的工作,很有意思。

真題彙總

控制理論部分:

1. PID和MPC的區別?MPC的優勢?

2. MPC的預測時域和控制時域選擇?

3. 線性MPC和非線性MPC的區別和適用場景?

4. MPC的求解器和選擇?

5. MPC的穩定性保證方法?

6. MPC的計算延遲處理?

車輛動力學部分:

7. 運動學模型和動力學模型的區別?

8. 輪胎模型和Pacejka魔術公式?

軌跡跟踪部分:

9. 軌跡跟踪誤差的定義?

10. Stanley和Pure Pursuit方法的區別?

11. MPC做軌跡跟踪的優勢?

12. 高速場景軌跡跟踪的挑戰?

實車調試部分:

13. MPC的控制頻率和求解時間?

14. 實車調試和仿真調試的區別?

15. 低附著路面的控制挑戰?

16. 不同駕駛風格的處理?

17. 控制系統的安全性保證?

18. 自動駕駛控制的最大挑戰?

心得建議

1. MPC必須深入理解:不只是會用求解器,還要理解MPC的數學原理(優化問題建模、約束處理、穩定性分析),面試官會從原理層面追問。

2. 車輛動力學是重點:運動學模型、動力學模型、輪胎模型這些必須能推導,面試官會讓你現場推導公式。

3. 軌跡跟踪方法要對比:Stanley、Pure Pursuit、MPC三種方法的優缺點和適用場景必須清楚,面試官喜歡問對比題。

4. 實車經驗是加分項:如果你有實車調試經驗,一定要講出來,面試官非常看重實際工程能力。

5. 安全性設計是必考:自動駕駛控制的安全性怎麼保證,這個問題幾乎必問,一定要準備好。

6. 準備時間建議3週:如果你有2年左右的控制算法經驗,3週的集中準備應該夠了。重點復習MPC、車輛動力學、軌跡跟踪三個方向。

FAQ

Q:元戎啟行的控制算法面試難度怎麼樣?

A:挺難的,尤其是二面和三面。一面偏理論,二面偏動力學深度,三面偏實車調試和安全設計。整體難度在自動駕駛公司裡屬於中上水平。

Q:面試官會讓我現場推公式嗎?

A:會的,二面讓我推導了自行車動力學模型的狀態空間方程。建議把關鍵模型的推導過程練幾遍,能流利地寫出來。

Q:需要有實車經驗嗎?

A:不是必須的,但有實車經驗會加分很多。如果沒有實車經驗,至少要對實車調試的流程和挑戰有所了解。

Q:薪資大概什麼水平?

A:控制算法崗的base大概在35-50k之間,具體看級別和談的情況。

Q:面試結果多久出來?

A:我是一面後3天收到二面通知,二面後5天收到三面通知,三面後1週多收到offer。

#自動驾驶#控制算法#MPC#车辆動力学#轨迹跟踪#面試經歷