從R2017a開始,MathWorks發布了自動駕駛工具箱——Automated Driving Toolbox。今天我們來聊一下Simulink——>Automated Driving Toolbox中一個很有趣的工具——Driving Scenario Designer,主要針對MATLAB R2019b。
本文來源:自動駕駛仿真
從R2017a開始,MathWorks發布了自動駕駛工具箱——Automated Driving Toolbox。今天我們來聊一下Simulink——>Automated Driving Toolbox中一個很有趣的工具——Driving Scenario Designer,主要針對MATLAB R2019b。
在一眾場景軟體中,它應該是屬於一朵奇葩——定位獨特的輕量化場景構建工具。文中涉及MathWorks公司的一些圖片和視頻,如果MathWorks公司覺得不妥,可以聯繫刪除。
我們先來看一段用Driving Scenario Designer構建場景和傳感器的視頻。
Driving Scenario Designer操作視頻
總結下Driving Scenario Designer的主要特點,稍後再仔細分析。
1、使用拖放操作創建道路和交通參與者,快速構建場景
2、使用低保真度的視覺和雷達傳感器模型,直接輸出檢測到的目標列表
3、支持將場景導出成MATLAB Function,再通過修改MATLAB Function實現批量化生成場景
4、支持將場景和傳感器導出成Simulink模塊
5、支持導入OpenDrive路網文件,支持基於記錄的實車數據構建場景
6、提供了預構建場景,可供用戶直接使用,包括:
01. 拖放操作,塊狀參與者
從視頻中可以發現,Driving Scenario Designer中所有的交通參與者(汽車、卡車、行人等)幾乎都是以長方體塊狀形式來表現的,而且場景中的元素種類比較少,沒有紅綠燈、綠化帶、交通標誌等等。可以這麼說,與其他大多數的場景軟體相比,Driving Scenario Designer真的是簡單到簡陋的程度。不過,這種極簡設計反倒體現了MathWorks在產品定位方面的獨特之處,MathWorks設計這款場景軟體針對的是Control-in-loop的算法驗證(融合、規劃、決策、控制),而非Perception-in-loop的算法驗證。對於Perception-in-loop的應用,MATLAB提供了另外一套方案(與虛幻引擎Unreal Engine結合),此文我們暫且不詳述。
Control-in-loop的應用,比如驗證AEB、ACC、LKA或者自動變道的控制算法,目前的Driving Scenario Designer基本上能夠滿足需求。針對此類應用,Driving Scenario Designer的優勢是可以非常高效地構建場景,有效提升測試效率。
02. 低保真度的傳感器模型,輸出目標列表
Driving Scenario Designer提供兩種傳感器模型——單目相機Camera和毫米波雷達Radar。
Driving Scenario Designer的傳感器模型
Driving Scenario Designer中交通參與者被稱為Actor,本車被稱為Ego Vehicle,具體如何在本車上添加傳感器,可見上面的視頻。在軟體中,可以設置Camera和Radar的內參外參,以及人為加上一些測量誤差以儘量模擬真實傳感器的狀態。這兩個傳感器模型直接輸出目標列表,因此除了驗證控制算法,也可以基於Driving Scenario Designer來驗證目標層的傳感器融合算法。
基於傳感器融合和車道檢測的車道跟隨demo視頻
03. 支持批量生成場景
對於某個算法的測試,可能需要多至上百個測試場景進行全面的測試。如果要逐一手動搭建這麼多場景,那將會是非常巨大的工作量,這時候就很需要批量生成場景的功能。比如AEB算法,需要從不同的碰撞覆蓋面積,不同的碰撞角度來對算法進行測試。如果能在場景中設置變量(比如碰撞中前車的橫向坐標),通過循環修改該變量來批量生成碰撞場景,那就太棒了。
不同碰撞覆蓋面積的AEB場景
Driving Scenario Designer構建的場景可導出成MATLAB Function,我們通過修改這個Function以及使用MATLAB提供的函數來批量生成場景。具體的教程請見下面連結及操作視頻。
https://www.mathworks.com/help/releases/R2019b/driving/ug/create-driving-scenario-variations-programmatically.html
批量生成場景的操作
對於2019b,略有遺憾的一點是,傳感器是沒法通過這種方法自動生成的。不過好在,不同測試場景中傳感器的內參外參一般是不變的,可以提前把傳感器導出成mat文件,然後在批量生成的場景中加載這個文件,即可構建完整的場景了。雖然不是完全自動化,但也能大幅提高效率。據說在2020a中傳感器模型也可以批量自動生成,還待驗證。
04. 支持將場景和傳感器模型導出成Simulink模型
場景構建完畢後,我們可在軟體中將場景和傳感器模型導出成Simulink模塊,使之與融合、規劃、控制等算法形成閉環。實際上導出的就是下圖的三個模塊。
場景和傳感器模型的Simulink模塊
Scenario Reader用於加載Driving Scenario Designer的場景數據。Vision Detection Generator和Radar Detection Generator是配合Driving Scenario Designer使用的視覺傳感器模型和雷達傳感器模型,實際上Vision Detection Generator和Radar Detection Generator對應的就是Driving Scenario Designer中的Camera和Radar,這兩個模塊輸出的就是檢測到的目標列表。
場景和傳感器導出成Simulink模塊不算是一個稀奇的功能,很多場景軟體都提供了與Simulink交互的接口。但有兩點值得一提:
1、這三個模塊是可以完全脫離Driving Scenario Designer運行的,因為場景和傳感器模型都已經導出成了mat文件,這三個模塊只要加載mat文件就獲得了相關的信息,此時不再需要Driving Scenario Designer。
2、這三個模塊都支持C代碼生成,不僅支持在PC上離線仿真,而且支持編譯後下載到實時硬體中實時運行。也就意味著,當我們進行HIL硬體在環仿真測試時,不僅車輛模型可以在實時平臺中實時運行,而且場景和傳感器模型也可以在實時平臺中實時運行。像Unreal Engine等需要強大GPU來渲染的場景軟體,很難將場景和傳感器模型在實時平臺中運行,往往需要專門的高性能電腦來跑場景,然後通過網絡通訊等形式實現與實時平臺中車輛模型的交互。
這也是Driving Scenario Designer這種輕量化場景的優勢。
05. 支持導入OpenDrive路網文件,支持基於記錄的實車數據構建場景
基於實車數據構建場景
具體的demo請見以下連結。
https://www.mathworks.com/help/releases/R2019a/driving/examples/scenario-generation-from-recorded-vehicle-data.html