10月27日,Mathworks資深應用工程師王鴻均在2018全球智能駕駛峰會上發表主題為《以仿真加速自動駕駛功能的設計、實現與驗證》的演講,分享頂尖軟件開發商和供應商眼中仿真加速自動駕駛所需要的功能,以及如何實現、驗證。
他主要介紹了Mathworks的MATLAB和SIMUlink兩個主要產品,以及它們是如何在自動駕駛中發揮作用的,并介紹了兩個實際應用案例。
以下是王鴻鈞演講全部內容,新智駕進行了不改變原意的編輯:
Mathworks作為工具軟件提供商,在系統供應商的背后以自己的力量默默推動著自動駕駛系統的發展。包括整機產品里面,或多或少都有Mathworks參與的成分。
Mathworks和MATLAB、SIMUlink
Mathworks公司來自美國,公司的宗旨是加速工程與科學的進程。不管是做科研還是做產品,在各種各樣的系統開發過程中Mathworks的這種基于仿真的工程軟件越來越多地發揮作用。Mathworks主要產品是MATLAB、SIMUlink。
MATLAB作為一個領先數學計算軟件,距今已有35年的歷史了。MATLAB語言已經成為一個工業標準的高級編成語言,它被廣泛的應用于算法開發數據計算,數據的可視化以及數據的分析當中。
SIMUlink是基于車輛控制系統框圖對動態系統建模和仿真。然后去分析系統的特性、完成系統的設計。同時SIMUlink軟件支持模型到嵌入式代碼的自動轉化,可以將建立的系統模型轉換成C或者C++的代碼,把這些代碼直接用到嵌入式系統當中,省去了手寫手動編碼的一個過程,同時SIMUlink提供了非常多的工具箱,可以使用它去進行自動控制系統的設計、信號處理和通訊系統的設計,以及各種物理對象的建模。
MATLAB和SIMUlink如何用于開發自動駕駛功能
王鴻鈞介紹,Mathworks可以作用于自動駕駛開發的三個分析:
第一個方面是控制,MATLAB、SIMUlink是一個自動控制的行業標準的軟件,可以使用MATLAB、SIMUlink去進行系統的建模,進行控制算法,以及先進控制算法的開發,包括在自動駕駛里面經常用到模型預測控制算法的開發。可以進行仿真、進行算法的設計等等,同時用SIMUlink自動對進行進行回歸測試。
第二個方面是感知,在感知層Mathworks可以開發視覺算法,雷達算法,包括激光雷達算法,可以對采集到的數據進行可視化,對傳感器收集到的數據進行分析,包括去設計深度學習的算法。Mathworks可以直接在MATLAB當中完成深度學習神經網絡的設計、網絡的訓練以及網絡的部署。也可以生成用于GPO的代碼或者是FPGA的代碼,可以直接把它部署到相應的硬件。
第三個方面是導航,Mathworks可以使用MATLAB進行路徑規劃的算法的仿真,同時和機器人操作系統之間有良好的連接性。
此外,作為一個通用的數學平臺,MATLAB還提供了非常多的其它功能,比如數據分析,大數據或者基于大數據的機器學習等等。
功能安全方面,自動駕駛系統是高安全性等級要求的系統,Mathworks對系統功能安全方面有一系列認證的要求,比如ISO26262的認證,Mathworks提供了一整套的驗證和測試的工具鏈,可以幫忙完成認證的工作。
Mathworks和Scania的應用案例
合作伙伴Scania是Mathworks工具應用的典型案例,它用Mathworks工具開發部署,用AEB的傳感器融合算法。目前AEB也是已經開始作為一個歐盟的標準,強制安裝在貨車上面,在國內也是很快會成為下一個需要強制安裝的對象。
在系統原理上,傳感器融合的算法是從兩類傳感器采集到周圍的環境感知數據。第一類傳感器是毫米波雷達,第二類傳感器是攝像頭的圖像數據,Mathworks針對這兩個傳感器采集到周圍車輛目標檢測的結果去進行一個融合,然后獲得周圍環境的一個準確感知。
需要通過搭載了雷達傳感器和視覺傳感器的實驗車輛進行大量公路的實驗,然后區別采集到傳感器第一手原始的數據,把這些數據使用數存儲下來。傳統上來說,如果設計了一個新的算法,進行了一輪新的迭代,需要從頭進行路試,然后把新的算法再進行整個100多萬公里的公路測試,但是顯然這個效率是非常低的,所以Mathworks采用一種重復仿真的工作流程,這中間最關鍵的核心環節就是仿真,也就是采集到了150萬公里的實車數據之后,不需要再去進行公路測試了,可以把這些數據放到數據庫里面去,使用設計算法去運行這些數據。Mathworks通過仿真的環節進行一個虛擬的測試,可以進行快速的迭代,每修改一輪算法之后只需要在服務器上面運行仿真的環境,然后在這個仿真的環境里面測試算法就可以了。
Scania統計的結果是:每運行一次150萬公里的仿真需要的時間是12個小時,只需要12個小時就可以替代150萬公里的公路測試,這是一個非常高效率的行為。
MATLAB在整個傳感器融合算法的開發過程中提供了一個完整可視化開發的環境,以及一個圓形算法。MATLAB提供的功能包括:視頻的播放、視頻上的一些疊加顯示,包括目標框的識別、車道線的識別以及右邊鳥瞰圖的繪圖,把這些部分組合起來就可以獲得一個圖形化的傳感器融合的開發界面,同時Mathworks提供了MATLAB Coder,這是是從MATLAB代碼轉換成C或者是C++嵌入式代碼的一個工具。直接使用MATLAB Coder就可以將其轉換為C或者C++代碼。得到C代碼以后,就可以把這些算法用于計算機或者一些嵌入式系統,只要獲得了C或者C++代碼就可以很容易進行移植工作。
Mathworks和Voyage的應用案例
Voyage是美國一個比較新興的自動駕駛公司。Voyage在2017年公開了一些自動駕駛出租車運行的信息。Voyage是怎樣使用MATLAB 和Simulink來開發他們的車輛縱向控制的呢?
首先Voyage用Simulink進行縱向模型控制器的仿真。然后生成一個ROS節點,和ROS這類系統是有一個比較好的互通性,因為Mathworks提供了相應的支持,可以生成C++代碼,用于生成ROS的節點,同時生成的ROS節點,用戶可以把它集成到ROS開源軟件的框架里面去。框架里面還有其它的組件,包括感知與規劃算法在內,可以很方便的把其中一部分功能用MATLAB和SIMUlink去補,通過模型開發,然后再進行代碼生成。
Voyage的一個硬件負責人說:“我們一直在尋找一種快速原型產品的開發方式,我們發現用SIMUlink進行控制器的開發和代碼生成,同時使用MATLAB實現開發任務的自動化,可以幫助我們進行快速的迭代,能夠大大提高我們整個產品的開發效率。”
Voyage很快速的從MATLAB當中提供一個參考事例的基礎上進行仿真,并且生成控制器的C++代碼,在三天之內就集成到了實車上進行測試。其實它存在非常多的問題,實在功能上,對它需求的定義也不是很完善,需要在實車上進行大量的實驗,去完善控制器的設計需求。
對起停這兩個狀態分別做設計,分別設一個獨立的控制算法,然后組合起來,形成一個完整的縱向控制器,Voyage在實車測試的時候,發現了這些新需求,針對這些新的需求完善設計,去修改控制器。反復加入了這類需求之后,Voyage再去修改SIMUlink,和SIMUlink里的算法設計。最后去完成模型預測控制的參數迭代,以及一些邊界約束條件迭代等等,使得整個控制器的性能越來越好,就可以往產品化的方向繼續努力。
Mathworks提供一系列仿真自動駕駛功能的參考程序
目前絕大多數已有的汽車產品處于L1-L2階段,在歐盟的標準里面,2020年是L1普及甚至成為強制標準的階段。L2在一些車輛上已經實裝了,現在有些產品已經有了L2的功能,比如說TGA、交通擁堵輔助這類功能就是典型L2的功能。
L3以上的技術目前為止并不成熟,Mathworks的demo也在不斷優化完善中,目前提供了一個簡單的仿真框架,就是使用雷達和視覺傳感器,傳感器融合模型預測控制等等模塊進行系統閉環仿真的MATLAB。這個框架當中包含了控制器、傳感器模型,可以在這個基礎上快速進行原型系統的仿真。可以通過SIMUlink當中一些樸實無華的功能去對仿真過程當中的信號進行分析。
控制器包括兩塊內容:第一塊是傳感器融合與目標跟蹤;第二塊是右邊ACC控制算法。使用模型預測控制可以把這部分分別生成C++代碼。對于車輛建模,車輛屬于被控對象,需要用到車輛動力學模型,所以Mathworks也推出了車輛動力學模塊庫,同時也支持3D顯示,仿真過程可以通過3D畫面顯示出來。
同時Mathworks也支持批量的自動化測試,因為個自動駕駛功能的測試需要用到大量場景,甚至是幾十萬上百萬公里的測試場景。Mathworks提供了一個駕駛場景設計器可以去畫一些簡單的測試場景,也提供了一些預制的駕駛場景,AEB、ACC等等的測試場景,Mathworks也支持Open driver道路文件的導入,用戶可以去導入一些已有的道路去進行場景設計,去進行仿真。
還可以使用SIMUlink Test去運行自動化的批量測試,載入測試運行測試,分析結果,所有的這些動作都是自動化的,最后可以生成一份測試報告,在測試報告中可以分析哪些測試通過,哪些測試不通過。
最后如果還想把圖像算法或者是激光雷達算法等集成到整個閉環的仿真當中,Mathworks還提供了一種是可以和“虛幻”引擎的3D道路場景進行協同和仿真的方法。MATLAB通過插件可以使用虛幻編輯器去創造一些自定義的場景,并與SIMUlink進行協同和仿真。
“虛幻”引擎這一類的場景設計工具,有著相對豐富的資源和素材。同樣Mathworks的三維游戲引擎也可以用來去進行雷達傳感器或者激光雷達傳感器的建模,整個系統仿真環境也可以把它放到硬件在環、甚至是車輛在環仿真里面去。因為Mathworks的車輛模型傳感器模型都是可以生成C或者是C++代碼的,可以分到仿真機這種實時計算機里面去運行。
“虛幻”引擎可以在桌面上運行,把嵌入式控制器連接起來就可以形成一個硬件在環仿真的環境。在傳統上,MATLAB和SIMUlink本身提供了一套基于模型設計的微開發流程完整的工具鏈。
在整個需求定義模型設計完成之后,還要做相應的軟件設計和代碼生成,Mathworks擁有Simulink Coder這類基于模型的驗證工具,包括代碼驗證工具、進行實時仿真測試的工具等等,這些工具都可以幫助用戶進行一個實際產品的開發。
Mathworks最后都是面向嵌入式的處理器或者嵌入式的系統進行產品的實現。同時Mathworks也提供了大量的經過認證的工具,幫助用戶滿足功能安全標準。