自動駕駛是目前比較熱門的話題,包含的技術領域五花八門,例如:雷達、攝像頭、汽車電控、激光雷達、物體識別、高精度地圖、導航技術等等。小編特邀 MathWorks 行業技術專家來聊一聊 MathWorks 這幾年的自動駕駛之路,分享最新的技術投入和應用亮點。
◆◆◆◆
MathWorks 對自動駕駛技術的投入可以總結為以下幾個階段:
2015:SCANIA AEB 系統
2015 年,瑞典著名的重卡生產商 SCANIA 發布了用 MATLAB/Simulink 設計的 AEB(自動緊急剎車)系統,看動畫:
在這個案例中,SCANIA 利用 MATLAB/Simulink 做了兩件大事:
一是設計了數據融合(Sensor Fusion)系統。AEB 把攝像頭和雷達采集的數據進行整合,同時使用車輛前部安裝的雷達和攝像頭來掃描前方區域的物體。系統利用每個傳感器的獨特優勢獲取更精確的環境模型。
雷達的優勢在于確定物體的距離、相對速度,但在確定物體的形狀或橫向位置方面較弱。攝像頭主要優勢在于辨識物體類別,主要缺點在于在黑暗環境下難以工作,以及對速度估計不準確。SCANIA 構建了一個傳感器融合系統,可將兩個傳感器中的數據進行匹配合并。傳感器融合系統一旦在主道上發現物體,會將該物體的位置和預計路徑傳遞給 AEB,AEB 將確定何時警告駕駛員或采取制動措施。
二是設計了整個回放測試系統。SCANIA 的車隊在超過 150 萬公里的駕駛里程中,所記錄的實際交通數據超過了 80TB。這 150 萬公里的實測數據,為每次更新發布的新功能提供了海量測試場景和數據。
為了進一步提高仿真運行速度,研發團隊編寫了 MATLAB 腳本,在服務器集群進行多核并行計算和仿真,最多同時可以運行300個仿真實例。通過這一方法,將仿真 150 萬公里交通數據的時間減少到 12 小時。在仿真中發現值得關注的新場景時,會在 Simulink 中重新運行仿真并進行深度分析。
2016:傳感器融合示例
坦率地講,SCANIA 的這個案例激發了 MathWorks 的開發靈感。2016 年在波士頓的年度大會上,來自美國底特律的應用工程師展示了他用 MATLAB 腳本開發的一個前車碰撞預警(FCW)的演示案例。這個演示案例就是后來 ADST(自動駕駛工具箱)的原型。這個原型中包含的 2 個關鍵點:可視化、數據融合,都成了 ADST 的產品亮點。
還有一家公司——德國大陸集團(Continental)——用 MATLAB 也是爐火純青。MATLAB 既然是好工具,我就用工具來代替大量人工重復勞動。2014 年,Continental 在研發一款自動駕駛攝像頭的時候,使用 MATLAB 來自動化標注物體和道路標志,這些自動化的方法顯著地提高了攝像頭的機器學習效率。這一靈感也最終由 MathWorks 工程師實現在 ADST 的功能中:GroundTruth Labelling (真值標定)。
R2017a:ADST - 自動駕駛系統工具箱
2017 年 3 月,MathWorks 在 MATLAB R2017a 發布了 ADST(自動駕駛系統工具箱),包括 3 個核心功能點:
-
可視化
-
數據融合
-
真值標定
行業技術專家強調:可視化是數據分析的第一步。
大家先一起看看汽車雷達和攝像頭的數據長什么樣。以雷達為例:下面兩個數據表格顯示了在什么時間戳,有多少個識別物體,物體的方位、速度等數據信息。
讓我們看一段 MATLAB 處理數據并實現可視化的動畫:
通過 MATLAB 自帶的 API 和函數,用戶可以比較容易地將雷達和攝像頭的傳感器數據,進行人眼可視化。上圖左邊是原始的攝像頭畫面,右邊藍色的三角代表攝像頭識別的目標,紅顏色代表雷達識別的目標。通過可視化,人眼可以看到雷達和攝像頭的信號有一定的偏差,那么自然就會問另外一個問題,車載電子設備到底以哪個為準呢?這就自然引入 ADST 的另外一個功能 – Sensor Fusion(傳感器融合)。
理解傳感器融合有幾個關鍵詞:多目標追蹤(Multi-ObjectTracking),卡爾曼濾波器(KalmanFilter)和代價矩陣(CostMatrix)。
上圖簡單介紹了一個傳感器融合的過程——從傳感器的捕獲(detection)到最終被確認為追蹤物體(track):
-
物體被傳感器(視覺、雷達等)捕獲,形成 detection
-
Track manager 先為該detection分配一個 track
-
Tracking filter 通過卡爾曼濾波器不斷估計 detection 的 track
-
Track manger 通過代價矩陣將 detection 分配更新到 track
-
目標 detection 消失后,track 被刪除
MATLAB 自帶的多目標追蹤,可以追蹤最多 120 個運動中的目標。每個目標的最終的 track 可能既不是雷達的位置,也不是視覺的位置,而是最終 track 算出來的位置。下圖展示了代價矩陣的示意圖,將 detection 分配到 track 的過程用到了 Hungarian Assignment Algorithm。
MATLAB 自帶了前向碰撞告警(FCW)例子可以幫助用戶理解傳感器融合的使用。
上圖為 FCW 的數據融合處理流程,基本的邏輯是將雷達雜波信號濾除后,進行多目標的追蹤和更新,在識別到最關鍵目標(Most Important Object)后,根據前向距離進行剎車告警。
讓我們看看該樣例的運行動畫:
藍色三角形的視覺識別目標和紅色圓形的雷達識別目標,在消除了雷達雜波(大部分為只有紅色圓型的目標,以及在其他車道的目標)后,通過數據融合形成目標追蹤??吹降幕疑娇蚣礊檫\動物體的追蹤。
上圖左邊的視頻錄像是一個實際路況的采集視頻,樣例還提供了相應的視覺和雷達的object list。有人會問:在數據融合設計早期的時候,我只有一個 idea,還沒有具體的 object list ,那如何才能驗證我的算法呢?MATLAB 還提供了另外一個 Sensor Fusion 的樣例,看動圖:
這個樣例和上面有實際環境的樣例有幾點不同:
-
車輛和道路都是可以像搭積木一樣,通過 MATLAB 腳本快速搭建測試場景
-
在這個模擬環境中可以模擬雷達(radar Detection Generator)和視覺(vision Detection Generator)的傳感器。
好處不言而喻:快速驗證idea。
隨著自動駕駛工具箱發布的,還有一個廣受歡迎的功能——真值標定(ground truth labelling)。
首先給出定義:在機器學習中 ground truth 表示有監督學習的訓練集的分類準確性,用于證明或者推翻某個假設。很多視覺識別算法是用的機器學習。機器學習的認知基礎就是真值。真值標定的功能有兩點:
-
采用大量真值來訓練機器學習算法
-
利用真值來檢驗現有的識別算法
真值標定的輸入一般是視頻文件。真值標定既可以手動一幀一幀地標定,也可以半自動化標定后再手工修正,最終可以將結果保存成真值數據庫。讓我們看一段半自動標定的動畫:
最終標定出來的真值數據如下圖所示:就像電影的字幕類似,幾分幾秒,在畫面的什么方位,是什么物體:
ADST 在發布后,受到汽車電控工程師和自動駕駛研發人員的廣泛使用。MathWorks 工程師在和他們交流后發現,他們有一個共同的興趣點:ADST 的功能大部分集中于前端(可視化、真值標定、傳感器融合),有沒有將前端的識別和融合結果和后端的汽車電控結合起來的案例?其實這也反映了市場熱點從 ADAS(高級駕駛輔助系統)向 AD(自動駕駛)過渡。ADAS 側重于告警,而 AD 側重于控制。
R2017b:閉環控制示例
隨著MATLAB R2017b的發布,MathWorks推出了一個自適應巡航(ACC)的案例,包括:
-
Simulink 模型:包含傳感器融合、傳感器模型、可視化、控制器模型、車輛模型、模擬道路場景和環境模型
-
控制器引入了兩種參考設計:PID 和 MPC(Model Predictive Control)
-
代碼自動生成
讓我們看一下運行的動畫:由于紫車車輛強行并線到藍色車輛(被控車輛),在 ACC 的作用下藍色車輛的速度下降直到紫色車輛離開本車道。
這里用到的速度控制是經典的 PID 控制。眾所周知,PID 的好處是簡單、易懂、占用資源少,但是在自動駕駛的復雜環境下,想要對車輛進行精準控制,可以考慮更加復雜的先進控制方法,比如 MPC(ModelPredictive Control)。從另外一個角度來看,MPC 過去沒有流行的原因之一就是受限于硬件資源和成本。目前,在自動駕駛技術和需求的推動下,汽車控制器必須變得越來越強大,使得 MPC 變得可能。下圖給出了在 ACC 的環境下,使用 PID 和 MPC 的對比:MPC 比 PID 控制的更加精準、快速。
有了 ACC 這個例子,用戶可以在 MATLAB/Simulink 統一平臺下做如下事情:傳感器融合、傳感器模型、可視化、控制器設計和代碼生成、車輛模型、模擬道路場景和環境模型。但在實踐中發現,用戶對模擬道路場景和環境模型要求其實很高:
-
MATLAB 雖然可以創建道路場景,但是必須用腳本編程,比較麻煩。
-
更希望看到虛擬現實場景。
R2018a:unreal 集成
2018 年 3 月,針對第一點,MATLAB R2018a 推出了 Driving Scenario Designer的 App,直接可以畫道路、車輛和簡單傳感器模型:
針對第二點需求,MATLAB R2018a 推出的 Vehicle Dynamics Blockset 可以和 unreal 游戲引擎集成,并自帶了一個免費版的 unreal。當然 Vehicle Dynamics Blockset 主要功能是提供了車輛橫向動力學的模塊,免費版 unreal 只是用于 3D 顯示。相信對于自動駕駛控制器設計人員,在設計例如 ACC(自適應巡航),LKA(自動車道保持)等自動駕駛功能時候,Vehicle Dynamics Blockset 一定能發揮強大的作用。
◆◆◆◆
讓我們再回頭看看 MATLAB的自動駕駛之路:從用戶案例中的啟發,到推出自動駕駛工具箱;通過和用戶的溝通逐步加入的車輛控制部分和 unreal 集成。
當然,自動駕駛永遠在路上,MATLAB/Simulink 也在激光雷達點云處理、駕駛路徑規劃和跟隨等方面持續推出更多的功能和應用案例,例如:
實時車輛數據融合和顯示。通過和用戶的深入交流,技術專家了解到用戶的興趣點多集中于:車輛上安裝了攝像頭和雷達后,在實時運行的同時,如何實現數據融合并顯示結果?
MathWorks工程師通過 Automated Driving System Toolbox、Vehicle Network Toolbox、Instrument Control Toolbox、MATLAB Coder、Embedded Coder 等工具箱,已經實現在車輛上做實時駕駛的數據融合和數據顯示:
-
matlab
+關注
關注
185文章
2980瀏覽量
230836 -
Simulink
+關注
關注
22文章
536瀏覽量
62576 -
自動駕駛
+關注
關注
784文章
13923瀏覽量
166844
原文標題:MATLAB 的自動駕駛之路
文章出處:【微信號:IV_Technology,微信公眾號:智車科技】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論