Apollo进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战
原文鏈接:進階課程?丨Apollo實戰——車輛與循跡駕駛能力實戰
循跡自動駕駛是指讓車輛按照錄制好的軌跡線進行自動駕駛,其涉及到自動駕駛中最基本的底盤線控能力、定位能力、控制能力,是自動駕駛系統的一個最小子集。
上周阿波君為大家詳細介紹了「進階課程?丨Apollo實戰——本機演示實戰」。
此課程介紹了Apollo項目的基本代碼結構包括:Docker和Docs(主要放置一些文檔)、Modules(核心模塊算法都在該文件夾下)以及Scripts和Tools等。此外,還介紹了軟件的安裝流程。
本周阿波君將繼續與大家分享Apollo實戰——車輛與循跡駕駛能力實戰的相關課程(本節課程基于Apollo 3.0版本)。下面,我們一起進入進階課程第42期。
在搭建完自動駕駛車輛的軟、硬件環境以后,通常采用循跡測試進行驗證,如圖1所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????圖1 循跡測試涉及的Apollo模塊
循跡測試涉及最底下的幾個模塊,只需要定位、控制以及Canbus這三個模塊,是Apollo的最小子集,通過循跡可以驗證車的線控能力以及模塊的整體集成能力。
那么如何做循跡測試呢?首先在硬件上,我們需要一輛線控車輛、一個工控機以及慣導系統GPS和IMU,如圖2所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????圖2 Apollo循跡測試硬件需求
如果大家使用的是參考硬件搭建的車輛,不需要進行適配,可以直接進行驗證。
如果你不是用參考車輛來做這件事,需要做以下幾步:
首先是要實現一個適配層。通過代碼里的Vehicle模塊添加一個新Vehicle,其實就是從代碼邏輯上添加一個車輛的設備層。具體包括添加一個新車控制器,再實現一個新消息管理器,然后在工廠類中注冊這個新車和更新配置文件,如圖3所示。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????圖3 添加一個新的Vehicle
第二步是Can卡的管理。Canbus通過CAN Card硬件去完成溝通,默認有一個叫ESD的CAN Card。如果我們新添不同的廠家,且它的驅動數據格式不一樣,需要按照以下方式去集成一個新CAN Card。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????圖4 Can卡的集成方法
最后是控制模塊。控制模塊是一個非常開放的模塊,大部分情況下,不需要定制。當然如果整個車輛的控制,底層的車輛有很大的差別,在個別情況下需要用自己的控制算法。新增控制算法的流程如圖5所示。
??????????????????????????????????????????????????????????????????????????????? ????????????????圖5 新增控制算法的流程
接下來就是定位,它是非常核心的一部分,圖6是目前定位整體的邏輯框架。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????????圖6 Apollo中定位模塊的整體邏輯
目前Apollo提供兩種定位方式,一種是RTK定位方式,基于基站的方式,需要GPS和IMU慣導。另一種方案是MSF(多傳感器融合)的定位方式,除了GPS和IMU之外,還通過Lidar的3D點云來做認證匹配定位。循跡測試的定位只需要一個GPS即可。如果使用的不是Apollo推薦的參考硬件,就需要新添加,具體過程就是新建一個GPS解析類去解析GPS 的數據格式,然后再配置就可以實現。
設備搭建完成之后,可以通過HMI界面啟動循跡測試,如圖7所示,包括錄制和執行兩步。在錄制之前,需要確認已經啟動了所有相關的GPS, CAN Card模塊。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????????????????圖7 啟動循跡自動駕駛的步驟
總結
以上是生活随笔為你收集整理的Apollo进阶课程㊷丨Apollo实战——车辆与循迹驾驶能力实战的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kernels32.exe是什么进程 有
- 下一篇: Coursera自动驾驶课程第14讲:L