百度Apollo解析——1.總介紹


1. 概括

Apollo源碼主要是c++實現的,也有少量python,主要程序在apollo/modules目錄中,共18個包,功能包17個:

 

 

其中每個模塊的作用如下:

apollo/modules/calibration : 校准模塊,使用前必須對系統進行校准和標定,包括激光雷達與攝像頭、毫米波雷達與攝像頭等。所謂校准就是要對齊激光雷達、攝像頭以及毫米波雷達獲得的信息,我們知道激光雷達可以獲得詳細的3D信息,但是不能獲得顏色信息,攝像頭可以獲得顏色信息,但是無法獲得深度等3D信息,毫米波雷達不能獲得顏色信息,但是可以獲得3D信息,三者獲得的信息對齊后,就可以同時獲得實際環境中的3D信息和顏色信息。
apollo/modules/canbus:汽車can總線控制模塊。接收控制指令,同時給控制模塊control發送車身狀態信息。
apollo/modules/common:公共源碼模塊。包括如日志,工廠模式的實現,日志系統,監控模塊,數學算法等。
apollo/modules/control:控制模塊。基於決策規划的輸出路徑及車身的狀態使用不同的控制算法來輸出控制命令,如轉向剎車,控制等。
apollo/modules/data:數據模塊。收集、存儲、處理收集到的各種數據的。
apollo/modules/dreamview:可視化模塊。查看規划的軌跡及實時的轉向剎車油門信息
apollo/modules/drivers:驅動模塊。各種傳感器驅動。
apollo/modules/e2e:end to end,端到端強化學習。
所謂e2e指的是由傳感器的輸入,直接決定車的行為,例如油門,剎車,方向等。也就是機器學習的算法直接學習人類司機的駕駛行為。這部分在代碼中需要另外下載,學習的數據主要來源於傳感器的原始數據,包括圖像、激光雷達、雷達等。end-to-end輸入以圖像為主。 輸出是車輛的控制決策指令,如方向盤角度、加速、剎車。 連接輸入輸出的是深度神經網絡,即通過神經網絡直接生成車輛控制指令對車輛進行橫向控制和縱向控制,中間沒有人工參與的邏輯程序。橫向控制,主要是指通過方向盤控制車身橫向移動,即方向盤角度。縱向控制,是指通過油門和剎車控制車身縱向的移動,即加速、剎車等。橫向模型的輸出沒有采用方向盤角度,而是使用要行駛的曲率(即拐彎半徑的倒數)。
apollo/modules/elo:利用高精地圖的自定位模塊。這部分的代碼也是另外下載。前向的攝像頭會采集車道數據以實現更精確的定位,輸出的位置信息包括車輛的x y z坐標,還有就是在百度高精度地圖中的ID。
apollo/modules/localization:定位模塊。輸入GPS和IMU信息輸出自車定位信息
apollo/modules/map:高精地圖模塊。輸出結構化地圖信息,如車道線,十字路口等。
apollo/modules/monitor:監控模塊。監控硬件狀態,同時把狀態發給交互界面。
apollo/modules/perception:感知模塊。輸入激光點雲,高精地圖,變換坐標,輸出3D障礙物包括速度大小和方向。
apollo/modules/planning:局部決策規划模塊。
apollo/modules/prediction:預測模塊。輸出感知的障礙物信息及自定位信息輸出障礙物未來的軌跡。
apollo/modules/routing:全局規划模塊。輸入包括地圖信息各起點終點地址,輸出一個全局的導航信息。
apollo/modules/third_party_perception:第三方感知模塊。
apollo/modules/tools:通用監控與可視化模塊。

2. 分類

2.1 感知:

感知當前位置,速度,障礙物等等
– Apollo/modules/perception

三方感知器支持
– Apollo/modules/third_party_perception

2.2 預測:

對場景下一步的變化做出預測
– Apollo/modules/prediction

2.3 規划:


全局路徑規划:通過起點終點計算行駛路徑
– Apollo/modules/routing
規划當前軌道:通過感知,預測,路徑規划等信息計算軌道
– Apollo/modules/planning
規划轉換成命令:將軌道轉換成控制汽車的命令(加速,制動,轉向等)
– Apollo/modules/control


2.4 定位:


輸入GPS和IMU信息輸出自車定位位置信息
– Apollo/modules/localization
高精地圖模塊
– Apollo/modules/map
利用高精地圖的自定位模塊,利用前向的攝像頭會采集車道數據以實現更精確的定位
– Apollo/modules/elo


2.5 交互:


可視化模塊,用戶交互信息
– Apollo/modules/dreamview


2.6 驅動


設備驅動
– Apollo/modules/drivers
監控模塊
– Apollo/modules/monitor
汽車硬件交互
– Apollo/modules/canbus


2.7 工具程序


標注工具
–Apollo/modules/calibration
Apollo/modules/common
–通用公共工具
Apollo/modules/data
– 數據工具
Apollo/modules/tools
– Python工具


2.8 強化學習


Apollo/modules/e2e


3. 工作流程


自動駕駛系統先通過起點終點規划出全局路徑(routing);然后在行駛過程中感知(perception)當前環境(識別車輛行人路況標志等),並預測下一步發展;然后把已知信息都傳入規划模塊(planning),規划出之后的軌道;控制模塊(control)將軌道數據轉換成對車輛的控制信號,通過汽車交互模塊(canbus)控制汽車.

流程圖如下:

 



原文:https://blog.csdn.net/DinnerHowe/article/details/79936038
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM