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