自動駕駛相關的軟體工具有不少,作為汽車工程師,我們最熟悉的可能是MATLAB/Simulink。如何從MATLAB/Simulink入手,系統地學習自動駕駛?
本文來源:自動駕駛仿真
自動駕駛相關的軟體工具有不少,作為汽車工程師,我們最熟悉的可能是MATLAB/Simulink。如何從MATLAB/Simulink入手,系統地學習自動駕駛?
今天我們主要來介紹兩部分内容:1、如何精準擷取MATLAB/Simulink關于自動駕駛方面的學習資料;2、從MATLAB/Simulink可以學習到哪些自動駕駛知識。
特别聲明,以下有部分圖檔引自MATLAB/Simulink的幫助文檔以及MathWorks公開課(尤其感謝MathWorks中國公司員工的公開課視訊),如果MathWorks公司認為存在侵權,可聯系删除。另外,以下内容主要是基于MATLAB R2020a和R2019b,低版本可能略有出入。
01.如何精準擷取MATLAB/Simulink關于自動駕駛方面的學習資料
MathWorks官網是個寶藏,有事沒事上去逛逛興許就能學到東西。MATLAB使用者很多,但我相信會去逛MathWorks官網的人并不多。官網有不少好東西,在不熟悉官網架構的情況下要找到自己想要的東西有時候挺費勁的,是以我會把有用的欄目都用浏覽器收藏了,下回再翻就很友善了。
1.1強烈推薦MathWorks官網的Videos and Webinars
Videos and Webinars提供了一些很有價值的學習視訊,可以幫助使用者快速地了解相關工具箱。
Videos and Webinars在MathWorks官網的位置
MATLAB/Simulink工具箱很多,與其相關的視訊也就更多了,有中文的、英文的、日語的、漢語的還有俄語的……有圖像處理的、有自動駕駛的、有新能源的、還有功能安全的……隻要在搜尋框中輸入自己感興趣的關鍵詞,就能找到相關的學習視訊。比如對于自動駕駛,我牆裂推薦的“小邁步”系列。
小邁步系列視訊
小邁步的第一課和第二課,就有介紹怎麼用MATLAB去設計、訓練神經網絡,并将網絡模型用MATLAB Coder和GPU Coder生成代碼,并部署到CPU/GPU中。
如果你搜尋“自動駕駛”或者将Videos and Webinars的範圍縮小至Automate Driving Toolbox(在搜尋頁面左側選中這個工具箱),就可以找到直接跟自動駕駛相關的視訊。
自動駕駛相關視訊
比如上圖框起來的視訊,也是牆裂推薦的,是MathWorks中國工程師在MATLAB EXPO CHINA 2019大會上介紹MATLAB R2019a的自動駕駛工具箱(Automated Driving Toolbox)的新特性,看過視訊之後能對自動駕駛工具箱有個大概的了解。以上僅僅是部分内容,大家可以按興趣去搜尋查找。
1.2直接檢視相關工具箱的幫助文檔和參考示例
與自動駕駛相關的工具箱如下:
學習類
- Statistics and Machine Learning Toolbox
- Deep Learning Toolbox
- Reinforcement Learning Toolbox
感覺類
- Image Acquisition Toolbox
- Image Processing Toolbox
- Computer Vision Toolbox
- Vision HDL Toolbox
- Automated Driving Toolbox
- Sensor Fusion and Tracking Toolbox
規劃控制類
- Automated Driving Toolbox
- Navigation Toolbox
- Stateflow
- Fuzzy Logic Toolbox
- Robust Control Toolbox
- Model Predictive Control Toolbox
車輛類
- Powertrain Blockset
- Vehicle Dynamics Blockset
- Simscape
其他
- ROS Toolbox
- Vehicle Network Toolbox
- MATLAB Coder
- Simulink Coder
- Embedded Coder
- HDL Coder
- GPU Coder
- Simulink Real-Time
不僅有各種工具箱,還有各種app,與自動駕駛相關的主要有
- Classification Learner
- Deep Network Designer
- Ground Truth Labeler
- Camera Calibrator
- Driving Scenario Designer
這些app還是挺有用和有趣的,MathWorks的工具幾乎已經覆寫了自動駕駛開發測試的各個環節,有做資料标注的Ground Truth Labeler,有專門做相機标定的app——Camera Calibrator…… 工具箱和app都有詳盡的幫助文檔,幫助文檔中也會有參考示例。比如不同版本自動駕駛工具箱的這些demo:
MATLAB提供的自動駕駛demo 1.3借助MATLAB Answers解決問題 MATLAB/Simulink使用過程中遇到了解決不了的問題,可以上官網的MATLAB Answers去搜尋問題關鍵詞,很可能就能找到答案。MATLAB Answers是使用者提問以及解決問題的版塊。 有一回我在做Simulink和Unreal Engine的自動駕駛仿真時,遇到了一個bug,怎麼都解決不了。後來上MATLAB Answers找到了原因,竟然是Windows更新導緻的,這種問題真的很難自己debug。 02.從MATLAB/Simulink可以學習到哪些自動駕駛知識 簡化而言,自動駕駛開發測試涉及以下環節。涉及感覺、規劃、控制等算法,以及對算法的測試。
自動駕駛算法開發測試 如果按V型開發流程,又涉及以下。先按感覺、規劃、控制、仿真測試以及對應的MATLAB工具箱/app來說明,同時部分糅合V型開發流程。
V流程 2.1感覺 自動駕駛的傳感器主要有攝像頭、雷射雷達、毫米波雷達、超音波雷達、IMU等等,這邊主要介紹前兩者相關内容。 2.1.1 攝像頭與MATLAB/Simulink 涉及工具箱:
- Statistics and Machine Learning Toolbox
- Deep Learning Toolbox
- Reinforcement Learning Toolbox
- Image Acquisition Toolbox
- Image Processing Toolbox
- Computer Vision Toolbox
- Vision HDL Toolbox
- Automated Driving Toolbox
- Sensor Fusion and Tracking Toolbox
- MATLAB Coder
- HDL Coder
- GPU Coder
涉及app:
- Classification Learner
- Deep Network Designer
- Ground Truth Labeler
- Camera Calibrator
整個鍊條大緻如下。
1、采集圖像 采集圖像的同時,有一個很重要的工作就是做相機标定。何謂相機标定: 在圖像測量過程以及機器視覺應用中,為确定空間物體表面某點的三維幾何位置與其在圖像中對應點之間的互相關系,必須建立相機成像的幾何模型,這些幾何模型參數就是相機參數。在大多數條件下這些參數必須通過實驗與計算才能得到,這個求解參數的過程就稱之為相機标定(或錄影機标定)。無論是在圖像測量或者機器視覺應用中,相機參數的标定都是非常關鍵的環節,其标定結果的精度及算法的穩定性直接影響相機工作産生結果的準确性。 MathWorks提供了相機标定的工具——Camera Calibrator。
Camera Calibrator 2、标注圖像 MathWorks提供了資料标注工具——Ground Truth Labeler。
Ground Truth Labeler 之前的版本中,Ground Truth Labeler隻能标注圖像資料,從2020a開始支援同時标注代表同一場景的多個信号,比如對圖像和雷射雷達點雲同時标注。可以加載來自單個來源(例如rosbag)的信号集合。也支援将标記的雷射雷達資料用作深度學習模型的訓練資料。 Ground Truth Labeler可以手動标注,也可以根據内置的自動标注算法或者自定義的标注算法來進行自動标注。 3、設計和訓練網絡
- Classification Learner
- Deep Network Designer
小邁步的第一課第二課有介紹如何用Deep Network Designer來設計網絡。
Deep Network Designer MATLAB提供了直接導入Caffe和Tensorflow-Keras模型的接口。
同時支援通過ONNX導入其他架構的模型。
ONNX 如果你想用Simulink去做圖像處理,可以關注下這兩個工具箱。
- Image Processing Toolbox
- Computer Vision Toolbox
Computer Vision Toolbox 4、自動生成代碼及部署到硬體 MATLAB的厲害之處不僅在于提供了覆寫各個領域的工具箱,你可以快速友善地實作模型在環測試Model-in-lop(MIL),而且有各種代碼生成工具,幫助實作快速控制原型Rapid Control Prototype(RCP)、軟體在環測試Software-in-lop(SIL)、硬體在環測試Hardware-in-lop(HIL),還可以部署到硬體(CPU、GPU、FPGA)。 這些代碼生成工具有:
- MATLAB Coder
- Simulink Coder
- Embedded Coder
- HDL Coder
- GPU Coder
對于前三個Coder,做傳統汽車控制器的同仁們應該都有所了解,基于模型設計(Model Based Design,MBD)會涉及。另外兩個Coder,HDL Coder和GPU Coder分别用以将MATLAB/Simulink的代碼、模型生成FPGA的代碼(VHDL或Verilog)和CUDA代碼。 小邁步第二課主要介紹了MATLAB Coder和GPU Coder的應用。
自動生成代碼,部署深度學習模型
MATLAB Coder和GPU Coder 小邁步第四課主要介紹了HDL Coder的應用。
我平常用HDL Coder比較多,因為隻會Simulink,不會寫VHDL或Verilog……HDL Coder最大的優勢就是——用簡便的Simulink模組化方式代替了晦澀的硬體描述語言程式設計方式,使得FPGA算法開發回歸到了汽車工程師熟悉的Simulink模組化。 使用者按照傳統的Simulink模組化方式搭建圖像處理和計算機視覺算法,調用MATLAB的HDL Coder将Simuink模型生成VHDL或Verilog代碼,然後部署到FPGA闆卡上,整個流程可以無需編寫代碼。 使用HDL Coder進行FPGA圖像處理算法開發,可以使用Vision HDL Toolbox。
Vision HDL Toolbox 對于這塊内容,牆裂推薦一個視訊——MathWorks HDL Coder産品負責人趙志宏經理的演講《從MATLAB到FPGA: 視訊和圖像處理》。喜歡他那種如數家珍、遊刃有餘的狀态,職業生涯中能打造出如此出色的産品,真是值得驕傲。 不僅做基于FPGA的圖像處理可以用HDL Coder,做電機電網電力電子以及其他高頻應用的控制或仿真都可以用到HDL Coder。 2.1.2雷射雷達與MATLAB/Simulink
- Computer Vision Toolbox > Lidar and Point Cloud Processing
- Automated Driving Toolbox > Perception with Computer Vision and Lidar
- Navigation Toolbox > SLAM
MATLAB目前支援導入PCAP、PLY和PCD等格式的點雲檔案,提供了雷射雷達點雲分簇、配準、融合等函數,可用于目标檢測、建構高精地圖等。
R2020a的Ground Truth Labeler支援和雷射雷達點雲标注,也支援将标記的雷射雷達資料用作深度學習模型的訓練資料。MATLAB提供了一些exmples。
MATLAB提供的雷射雷達相關example 2.1.3傳感器融合
- Automated Driving Toolbox
- Sensor Fusion and Tracking Toolbox
Automated Driving Toolbox和Sensor Fusion and Tracking Toolbox提供了相關的子產品和函數。
來看看基于攝像頭和毫米波雷達傳感器融合的ACC:
ACC示例模型 基于攝像頭和毫米波雷達傳感器融合的ACC視訊 2.2規劃控制
- Automated Driving Toolbox
- Navigation Toolbox
- Stateflow
- Fuzzy Logic Toolbox
- Robust Control Toolbox
- Model Predictive Control Toolbox
Automated Driving Toolbox>Planning and Control Simulink從MATLAB R2017a開始推出了Automated Driving Toolbox,提供了Longitudinal Controller Stanley、Lateral Controller Stanley等子產品,還提供了RRT*等路徑規劃算法。
規劃相關demo 控制方面可以了解一下MPC工具箱。 2.3仿真測試 算法或者ECU開發完畢後,需要形成閉環來測試。為了構成閉環,還需要車輛模型、駕駛場景和傳感器模型。
仿真測試架構 2.3.1車輛模型
- Powertrain Blockset
- Vehicle Dynamics Blockset
- Simscape
2.3.1.1車輛動力總成 參考Powertrain Blockset。
動力總成工具箱
動力總成子產品
輪系子產品
轉向系子產品
懸架子產品
車身子產品
行駛場景子產品 工具箱還提供了動力總成參考模型,如下圖,有燃油車、純電車、混動車(P0/ P1/ P2/ P3/ P4 )。
參考模型彙總 參考模型是類似這樣的:
參考模型示例
P2混動模型 另外,也可以用Simscape來搭建動力總成模型。官網Videos and Webinars也有不少關于PT工具箱的。 2.3.1.2車輛動力學模型 參考Vehicle Dynamics Blockset,提供了3自由度、7自由度和14自由度車輛動力學參考模型。
3自由度、7自由度和14自由度車輛動力學模型 MathWorks将車輛動力學模型和動力總成模型結合,又提供了幾個完整車輛的參考應用模型如下圖,包括:雙移線模型、正弦掃頻轉向模型、慢增量轉向模型等。
參考模型示例 官網Videos and Webinar有不少關于VD工具箱的視訊。
官網學習視訊 除此之外,如果你習慣用代碼寫車輛動力學模型,也可以直接把代碼封裝在s-function中。 2.3.2駕駛場景和傳感器模型 市面上大多數的場景軟體都提供了MATLAB/Simulink的接口,這些軟體在這咱們就不着重提了。這裡介紹下MathWorks自己開發的場景建構工具Driving Scenario Designer以及與它合作緊密的另一個軟體Unreal Engine。這兩個軟體各有特點,針對不同的需求。
Driving Scenario Designer和Unreal Engine 總的來說,Driving Scenario Designer使用拖放操作建立道路和交通參與者,可快速建構場景,用作Control-in-loop應用的測試和驗證,但無法提供逼真的場景和傳感器資料。 Unreal Engine能提供高保真度的場景和傳感器模型,能夠合成逼真的圖像和雷射雷達點雲資料等等,适用于Perception-in-loop的應用。 2.3.2.1Driving Scenario Designer
Driving Scenario Designer
Driving Scenario Designer有這些特點:
- 1、使用拖放操作建立道路和交通參與者,快速建構場景
- 2、使用低保真度的視覺和雷達傳感器模型,直接輸出檢測到的目标清單
- 3、支援将場景導出成MATLAB Function,再通過修改MATLAB Function實作批量化生成場景
- 4、支援将場景和傳感器導出成Simulink子產品
- 5、支援導入OpenDrive路網檔案,支援基于記錄的實車資料建構場景
放一個Driving Scenario Designer操作視訊 Driving Scenario Designer操作視訊 2.3.2.2Unreal Engine MathWorks結合遊戲引擎Unreal Engine建構駕駛場景,并提供了與Unreal Engine場景互動的攝像頭、雷射雷達、毫米波雷達等傳感器模型,去覆寫Perception-in-loop的應用。
Unreal Engine與Simulink互動 Unreal Engine(虛幻引擎,簡稱Unreal),由Epic開發,是世界知名的遊戲引擎之一,占有全球商用遊戲引擎很高的市場佔有率。Unreal開發的遊戲,代表作有《戰争機器》系列,《品質效應》系列,《絕地求生》…… 使用者在Unreal中建構場景,MathWorks提供了場景中的傳感器模型。
自動駕駛工具箱中與Unreal Engine互動的傳感器模型 這些傳感器能輸出圖像RGB資料、雷射雷達點雲資料等等。
傳感器輸出的資料類型 每個傳感器都提供了相關的參考示例,放一個用Unreal建構的場景來做高速公路車道跟随的參考示例。 高速公路車道跟随 以上是我對從MATLAB/Simulink入手學習自動駕駛的一點經驗,希望對感興趣的朋友有所幫助。
【歡迎大家提供行業新聞熱點,商業合作請聯系:18562613430】
推薦閱讀
▼
免責聲明:
凡本公衆号注明“來源:XXX(非智車科技)”的作品,均轉載自其它媒體,轉載目的在于傳遞和分享更多資訊,并不代表本平台贊同其觀點和對其真實性負責,版權歸原作者所有,如有侵權請聯系我們删除。