為什麼要構建駕駛員在環系統?

一則,L4之前的汽車都是需要駕駛員的,對這些汽車的智慧駕駛演算法或控制器進行測試,其中一個測試環節就可以是駕駛員在環測試。二則是好玩,可以搭一個這樣的系統來自娛自樂。

根據不同的需求,可以搭建不同級別的駕駛員在環系統,逐一來介紹。

1、Demo版

MATLAB/Simulink提供了一個可用於駕駛員在環的基礎demo模型。

這個模型簡單明瞭,如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

左上角是駕駛操縱控制元件,透過操縱這些控制元件可以去控制轉向、油門、剎車等。這些控制元件模組來自Simulink——->Dashboard工具箱。如下圖

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

可以將這些控制元件模組與模型中引數關聯,從而更方便地調節引數。

因為是基礎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冥王峽谷(執行的時候會顯示一個骷髏頭……,如下圖)。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

GPU是AMD RX Vega M GH,效能挺強的,很流暢。

demo版實操影片如下:

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

https://www。zhihu。com/video/1239458424326934528

這套系統All in Simulink,不需要別的裝置,簡單明瞭,能清晰地呈現駕駛員在環系統的架構。

2、遊戲版

demo版有兩個肉眼可見的不足:

1、沒有真實的車輛操縱裝置,駕駛體驗欠缺

2、車輛模型比較簡單,無法較好地呈現車輛的特性

讓我們來做個升級:增加遊戲手柄+提高車輛複雜度。

遊戲手柄,採用的是HORI FPS PLUS。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

手柄介面是USB的,直接插到電腦上即可。

手柄上有很多操作按鍵,要將這些按鍵訊號讀到Simulink中。Simulink提供了手柄的驅動模組(羅技手柄也適用),驅動模組就是Simulin 3D Animation工具箱的Joystick Input。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

Joystick Input的輸出Axes和Buttons包含了很多個訊號,需要預先標定下手柄按鍵和這些訊號的對應關係。標定方式很簡單,把Joystick Input拖到Simulink模型中,按下手柄的某個按鍵,看Joystick Input的哪個輸出訊號有變化。標定結果如下

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

車輛模型,在MATLAB中找一個合適的參考模型,比如這個

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

需要對這個模型做些調整,比如將變步長改成定步長、將駕駛員模型替換成Joystick Input、調整3D場景等。

整個架構如下圖

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

涉及的MATLAB工具箱有:

Automated Driving Toolbox——用以構建3D場景,實現Simulink與Unreal場景的互動。

Vehicle Dynamics Blockset和Powertrain Blockset——用以構建車輛模型。

一切ready之後,就可以愉快地玩起來了。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

https://www。zhihu。com/video/1239472261654413312

3、入門版

以上兩個版本,純屬自娛自樂。車輛模型跑在電腦中,實時性無法保證;遊戲手柄與真實的駕駛臺相去甚遠。我們再來做個升級,讓車輛模型跑在實時模擬硬體中,遊戲手柄用羅技G29代替。

羅技G29是一個入門級的駕駛模擬器,介面是USB的,有方向盤有踏板。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

同樣的,G29也需要一個驅動模組將訊號接入到Simulink。Joystick Input依然適用。另外,Simulink提供了專門的G29驅動模組——Steering Wheel Read,在Simulink Real-Time工具箱。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

對G29和Steering Wheel Read進行標定。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

實時模擬硬體一般都不便宜,考慮到要降低成本,特意選了辦公室一個最便宜的實時模擬硬體,如下圖。這個裝置原本是做RCP用的,跑控制演算法;結果試了下跑MATLAB參考車輛模型時算力也綽綽有餘。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

需要注意的是,demo版和遊戲版的場景、車輛模型都是執行在電腦中的。在入門版中,我們將車輛模型轉移到實時模擬硬體中,但場景相關部分仍然執行在上位機電腦中,原因在於一則實時模擬硬體一般都沒有強大的GPU去支援執行3D場景,二則實時模擬硬體中的實時作業系統不一定支援3D場景軟體。

上位機電腦和實時模擬硬體的連線如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

羅技G29的USB介面插到上位機電腦上。上位機電腦和實時模擬平臺用兩根網線連線。

藍色網線是用以將Simulink車輛模型下載到實時模擬平臺中,並進行實時線上調參、觀測等

黃色網線是實現兩者之間其他訊號的通訊,比如車輛位姿、滾阻風阻

整套裝置是這樣的:

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

入門版的架構如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

實時模擬平臺和上位機PC中各跑了一個Simulink模型,前者是跑車輛模型,後者主要是跑場景相關模型。入門版中,Unreal構建的場景在Simulink中是以介面的形式呈現的,所以場景包含在上位機PC的Simulink模型中。圖中訊號流:

①、②:羅技G29的介面是USB的,插在上位機PC後,PC中的Simulink模型可以接收到駕駛員操縱訊號(轉向、油門、剎車等),PC再透過網口的UDP通訊把操縱訊號傳輸給實時模擬平臺。

③:上位機PC將場景中的滾阻風阻等資訊透過UDP傳送給實時模擬平臺中的車輛模型,實時模擬平臺基於駕駛操縱訊號、滾阻風阻等資訊、車輛模型等等去計算車輛的狀態

④:實時模擬平臺將計算出來的車輛狀態(主要是位置、姿態)傳送給上位機PC,上位機PC將當前位置、姿態的車輛在場景中渲染出來。

下圖是完整的模型及訊號流動。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

接下來,又可以愉快地玩耍了。G29方向盤帶反饋,駕駛體驗槓槓的。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

https://www。zhihu。com/video/1239825533174951936

MathWorks官網有影片專門介紹這種型別的駕駛員在環。

4、升級版

遊戲版有一個不足:場景軟體是可以輸出感測器的檢測結果的,而實時模擬平臺中主要執行車輛模型,沒有運用到這些檢測結果。

升級版中,我們可以引入感測器融合、決策控制演算法。架構如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

升級版相比入門版,主要的改動是實時模擬平臺不僅執行車輛模型,還運行了感測器融合、決策控制演算法。值得注意的是,這樣一來,計算量會增加不少,所以需要把實時模擬平臺也升級成效能更強的硬體。

另外,升級版中,多增加了一個訊號流動⑤,這是上位機PC將感測器模型檢測結果傳送給實時模擬平臺,這個檢測結果是object list級別的,不是影象、鐳射雷達點雲等。

升級版中多涉及了一個工具箱:

Sensor Fusion and Tracking Toolbox——用以感測器融合和目標跟蹤。

5、實戰1版

接下來,升級到更加專業的、更接近實際狀態的實戰版本。架構如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

羅技G29只是入門級的駕駛模擬器,我們將它升級成專業的駕駛模擬器或者駕駛操縱平臺。

實時模擬平臺(HIL裝置)只執行車輛模型

另增加原型控制器(RCP裝置),用以執行融合決策控制演算法。這主要是應用在前期階段,我們還沒開發出自己的控制器,用原型控制器來代替。

駕駛操縱訊號直接進入原型控制器;原型控制器計算得到的控制訊號透過CAN傳送給實時模擬平臺

6、實戰2版

以上所有版本,沒有包含感知演算法,因此沒法做Perception-in-loop的測試驗證。Perception-in-loop的測試驗證應該類似以下框架。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

因此,實戰2版加入了感知演算法。實戰2版中,用NVIDIA Drive PX2或Xavier代替實戰1版中的原型控制器。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

訊號流⑤是上位機PC傳送給NVIDIA Drive PX2/Xavier的影象、鐳射雷達點雲等資料。NVIDIA Drive PX2/Xavier處理的是更加原始的資料,而不是object list級別的資料。

為了讓場景軟體更流暢地合成影象、點雲等,推薦給上位機PC的GPU做一個升級。

7、實戰3版

最終,我們希望將真實的控制器納入到整個閉環中,如下圖。

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統

要想把模擬的感測器訊號接入到域控制器,需要各種感測器模擬裝置,比如影片注入裝置、影片暗箱、雷達模擬器等等。

實戰1~3版本中,駕駛操縱平臺已經可有可無,取決於驗證的自動駕駛功能級別。

關於駕駛員在環的實戰版本,可以看看

公眾號——【自動駕駛模擬】

如何用MATLABSimulink快速構建一個低成本的駕駛員在環系統