為什麼要構建駕駛員在環系統?
一則,L4之前的汽車都是需要駕駛員的,對這些汽車的智慧駕駛演算法或控制器進行測試,其中一個測試環節就可以是駕駛員在環測試。二則是好玩,可以搭一個這樣的系統來自娛自樂。
根據不同的需求,可以搭建不同級別的駕駛員在環系統,逐一來介紹。
1、Demo版
MATLAB/Simulink提供了一個可用於駕駛員在環的基礎demo模型。
這個模型簡單明瞭,如下圖。
左上角是駕駛操縱控制元件,透過操縱這些控制元件可以去控制轉向、油門、剎車等。這些控制元件模組來自Simulink——->Dashboard工具箱。如下圖
可以將這些控制元件模組與模型中引數關聯,從而更方便地調節引數。
因為是基礎demo,所以車輛模型做了很大的簡化。
3D場景部分,渲染引擎用的是Unreal Engine。MathWorks結合遊戲引擎Unreal Engine構建高保真度的駕駛場景,Automated Driving Toolbox提供了與Unreal Engine場景互動的攝像頭、鐳射雷達、毫米波雷達等感測器模型以及車輛模型。
該demo中,預設的3D場景是密歇根大學的MCity,我改成了大型停車場的場景,同時也把車型換了。
關於怎麼結合MATLAB和Unreal Engine去構建駕駛場景,可以參看之前的文章。
另外,還在車身上放了一個攝像頭(下面影片左下角的影象就是該攝像頭產生的),僅做顯示用,不做處理。
以上是Simulink模型部分,除此之外,因為需要執行Unreal Engine的3D場景,所以我們需要準備一個高效能的電腦。Unreal Engine對電腦效能的最低要求:
Graphics card (GPU) — Virtual reality-ready with 8 GB of on-board RAM
Processor (CPU) — 2。60 GHz
Memory (RAM) — 12 GB
實際體驗下來,如果想要獲得不錯的體驗,電腦效能要遠高於這個配置,尤其是GPU。我工作電腦的GPU是NVIDIA GeForce MX150,基本湊活著能跑Unreal的場景,但執行時間稍微長一點,場景顯示會卡頓。公司有一個專門用來跑場景的遊戲本——英特爾(Intel) NUC8I7HVK4 酷睿I7-8809G冥王峽谷(執行的時候會顯示一個骷髏頭……,如下圖)。
GPU是AMD RX Vega M GH,效能挺強的,很流暢。
demo版實操影片如下:
https://www。zhihu。com/video/1239458424326934528
這套系統All in Simulink,不需要別的裝置,簡單明瞭,能清晰地呈現駕駛員在環系統的架構。
2、遊戲版
demo版有兩個肉眼可見的不足:
1、沒有真實的車輛操縱裝置,駕駛體驗欠缺
2、車輛模型比較簡單,無法較好地呈現車輛的特性
讓我們來做個升級:增加遊戲手柄+提高車輛複雜度。
遊戲手柄,採用的是HORI FPS PLUS。
手柄介面是USB的,直接插到電腦上即可。
手柄上有很多操作按鍵,要將這些按鍵訊號讀到Simulink中。Simulink提供了手柄的驅動模組(羅技手柄也適用),驅動模組就是Simulin 3D Animation工具箱的Joystick Input。
Joystick Input的輸出Axes和Buttons包含了很多個訊號,需要預先標定下手柄按鍵和這些訊號的對應關係。標定方式很簡單,把Joystick Input拖到Simulink模型中,按下手柄的某個按鍵,看Joystick Input的哪個輸出訊號有變化。標定結果如下
車輛模型,在MATLAB中找一個合適的參考模型,比如這個
需要對這個模型做些調整,比如將變步長改成定步長、將駕駛員模型替換成Joystick Input、調整3D場景等。
整個架構如下圖
涉及的MATLAB工具箱有:
Automated Driving Toolbox——用以構建3D場景,實現Simulink與Unreal場景的互動。
Vehicle Dynamics Blockset和Powertrain Blockset——用以構建車輛模型。
一切ready之後,就可以愉快地玩起來了。
https://www。zhihu。com/video/1239472261654413312
3、入門版
以上兩個版本,純屬自娛自樂。車輛模型跑在電腦中,實時性無法保證;遊戲手柄與真實的駕駛臺相去甚遠。我們再來做個升級,讓車輛模型跑在實時模擬硬體中,遊戲手柄用羅技G29代替。
羅技G29是一個入門級的駕駛模擬器,介面是USB的,有方向盤有踏板。
同樣的,G29也需要一個驅動模組將訊號接入到Simulink。Joystick Input依然適用。另外,Simulink提供了專門的G29驅動模組——Steering Wheel Read,在Simulink Real-Time工具箱。
對G29和Steering Wheel Read進行標定。
實時模擬硬體一般都不便宜,考慮到要降低成本,特意選了辦公室一個最便宜的實時模擬硬體,如下圖。這個裝置原本是做RCP用的,跑控制演算法;結果試了下跑MATLAB參考車輛模型時算力也綽綽有餘。
需要注意的是,demo版和遊戲版的場景、車輛模型都是執行在電腦中的。在入門版中,我們將車輛模型轉移到實時模擬硬體中,但場景相關部分仍然執行在上位機電腦中,原因在於一則實時模擬硬體一般都沒有強大的GPU去支援執行3D場景,二則實時模擬硬體中的實時作業系統不一定支援3D場景軟體。
上位機電腦和實時模擬硬體的連線如下圖。
羅技G29的USB介面插到上位機電腦上。上位機電腦和實時模擬平臺用兩根網線連線。
藍色網線是用以將Simulink車輛模型下載到實時模擬平臺中,並進行實時線上調參、觀測等
黃色網線是實現兩者之間其他訊號的通訊,比如車輛位姿、滾阻風阻
整套裝置是這樣的:
入門版的架構如下圖。
實時模擬平臺和上位機PC中各跑了一個Simulink模型,前者是跑車輛模型,後者主要是跑場景相關模型。入門版中,Unreal構建的場景在Simulink中是以介面的形式呈現的,所以場景包含在上位機PC的Simulink模型中。圖中訊號流:
①、②:羅技G29的介面是USB的,插在上位機PC後,PC中的Simulink模型可以接收到駕駛員操縱訊號(轉向、油門、剎車等),PC再透過網口的UDP通訊把操縱訊號傳輸給實時模擬平臺。
③:上位機PC將場景中的滾阻風阻等資訊透過UDP傳送給實時模擬平臺中的車輛模型,實時模擬平臺基於駕駛操縱訊號、滾阻風阻等資訊、車輛模型等等去計算車輛的狀態
④:實時模擬平臺將計算出來的車輛狀態(主要是位置、姿態)傳送給上位機PC,上位機PC將當前位置、姿態的車輛在場景中渲染出來。
下圖是完整的模型及訊號流動。
接下來,又可以愉快地玩耍了。G29方向盤帶反饋,駕駛體驗槓槓的。
https://www。zhihu。com/video/1239825533174951936
MathWorks官網有影片專門介紹這種型別的駕駛員在環。
4、升級版
遊戲版有一個不足:場景軟體是可以輸出感測器的檢測結果的,而實時模擬平臺中主要執行車輛模型,沒有運用到這些檢測結果。
升級版中,我們可以引入感測器融合、決策控制演算法。架構如下圖。
升級版相比入門版,主要的改動是實時模擬平臺不僅執行車輛模型,還運行了感測器融合、決策控制演算法。值得注意的是,這樣一來,計算量會增加不少,所以需要把實時模擬平臺也升級成效能更強的硬體。
另外,升級版中,多增加了一個訊號流動⑤,這是上位機PC將感測器模型檢測結果傳送給實時模擬平臺,這個檢測結果是object list級別的,不是影象、鐳射雷達點雲等。
升級版中多涉及了一個工具箱:
Sensor Fusion and Tracking Toolbox——用以感測器融合和目標跟蹤。
5、實戰1版
接下來,升級到更加專業的、更接近實際狀態的實戰版本。架構如下圖。
羅技G29只是入門級的駕駛模擬器,我們將它升級成專業的駕駛模擬器或者駕駛操縱平臺。
實時模擬平臺(HIL裝置)只執行車輛模型
另增加原型控制器(RCP裝置),用以執行融合決策控制演算法。這主要是應用在前期階段,我們還沒開發出自己的控制器,用原型控制器來代替。
駕駛操縱訊號直接進入原型控制器;原型控制器計算得到的控制訊號透過CAN傳送給實時模擬平臺
6、實戰2版
以上所有版本,沒有包含感知演算法,因此沒法做Perception-in-loop的測試驗證。Perception-in-loop的測試驗證應該類似以下框架。
因此,實戰2版加入了感知演算法。實戰2版中,用NVIDIA Drive PX2或Xavier代替實戰1版中的原型控制器。
訊號流⑤是上位機PC傳送給NVIDIA Drive PX2/Xavier的影象、鐳射雷達點雲等資料。NVIDIA Drive PX2/Xavier處理的是更加原始的資料,而不是object list級別的資料。
為了讓場景軟體更流暢地合成影象、點雲等,推薦給上位機PC的GPU做一個升級。
7、實戰3版
最終,我們希望將真實的控制器納入到整個閉環中,如下圖。
要想把模擬的感測器訊號接入到域控制器,需要各種感測器模擬裝置,比如影片注入裝置、影片暗箱、雷達模擬器等等。
實戰1~3版本中,駕駛操縱平臺已經可有可無,取決於驗證的自動駕駛功能級別。
關於駕駛員在環的實戰版本,可以看看
公眾號——【自動駕駛模擬】