天天看點

百度Apollo(一):代碼子產品

百度Apollo:https://github.com/ApolloAuto/apollo/tree/master/modules

一級目錄結構重要檔案夾内容:

  1. docker:docker有關的檔案,如啟動docker腳本,進入docker容器腳本。
  2. docs:文檔子產品,有完整英文文檔和部分中文文檔 。
  3. modules:apollo中各個子產品的源代碼,如感覺,決策,規劃等核心子產品。
  4. scripts:啟動腳本,如啟動hmi的腳本。
  5. third_party:第三方的庫。
  6. tools:編譯相關配置檔案。

Apollo項目是用Bazel來做為代碼編譯工具,每個源碼檔案夾下都有一個 BUILD檔案即bazel的編譯配置檔案。

modules目錄内容:

  1. calibration:校準子產品,使用前必須對系統進行校準和标定,包括雷射雷達與攝像頭、毫米波雷達與攝像頭等。所謂校準就是要對齊雷射雷達、攝像頭以及毫米波雷達獲得的資訊,我們知道雷射雷達可以獲得詳細的3D資訊,但是不能獲得顔色資訊,攝像頭可以獲得顔色資訊,但是無法獲得深度等3D資訊,毫米波雷達不能獲得顔色資訊,但是可以獲得3D資訊,三者獲得的資訊對齊後,就可以同時獲得實際環境中的3D資訊和顔色資訊。
  2. canbus:接收控制指令,同時給控制子產品control發送車身狀态資訊。
  3. common:公共源碼子產品如日志,工廠模式的實作,日志系統,監控子產品,數學算法等。
  4. control:控制子產品,基于決策規劃的輸出路徑及車身的狀态使用不同的控制算法來輸出控制指令,如轉向刹車,控制等。
  5. data:收集、存儲、處理收集到的各種資料。
  6. dreamview:可視化子產品,檢視規劃的軌迹及實時的轉向刹車油門資訊。
  7. drivers:GNSS裝置驅動,包括NovAtel, Applanix, u-blox.雷射雷達velodyne驅動,用來讀取傳感器内容并輸出對應的消息。
  8. e2e:end to end,端到端深度學習,所謂e2e指的是由傳感器的輸入,直接決定車的行為,例如油門,刹車,方向等。也就是機器學習的算法直接學習人類司機的駕駛行為。這部分在代碼中需要另外下載下傳,學習的資料主要來源于傳感器的原始資料,包括圖像、雷射雷達、雷達等。end-to-end輸入以圖像為主。 輸出是車輛的控制決策指令,如方向盤角度、加速、刹車。 連接配接輸入輸出的是深度神經網絡,即通過神經網絡直接生成車輛控制指令對車輛進行橫向控制和縱向控制,中間沒有人工參與的邏輯程式。橫向控制,主要是指通過方向盤控制車身橫向移動,即方向盤角度。縱向控制,是指通過油門和刹車控制車身縱向的移動,即加速、刹車等。橫向模型的輸出沒有采用方向盤角度,而是使用要行駛的曲率(即拐彎半徑的倒數)。
  9. elo:利用高精地圖的自定位子產品。這部分的代碼也是另外下載下傳。前向的攝像頭會采集車道資料以實作更精确的定位,輸出的位置資訊包括車輛的x y z坐标,還有就是在百度高精度地圖中的ID。
  10. localization:定位子產品,輸入GPS和IMU資訊輸出自車定位資訊。
  11. map:高精地圖子產品,輸出結構化地圖資訊,如車道線,十字路口等。
  12. monitor:監控子產品,監控硬體狀态,同時把狀态發給hmi。
  13. perception:感覺子產品,輸入雷射點雲,高精地圖,變換坐标,輸出3D障礙物包括速度大小和方向。
  14. planning:決策規劃子產品,apollo1.0中決策各規劃是分開的子產品decision和planning子產品,現在decision子產品合并在planning裡了。
  15. prediction:預測子產品,輸出感覺的障礙物資訊及自定位資訊輸出障礙物未來的軌迹。
  16. routing:全局導航子產品,輸入包括地圖資訊各起點終點位址,輸出一個全局的導航資訊。
  17. third_party_perception:第三方感覺。
  18. tools:工具子產品。

首先,使用者輸入目的地,routing子產品就可以根據終點位置計算出具體的導航資訊。雷射雷達、毫米波雷達和攝像頭拍攝到的資料配合高精度地圖由percepting子產品計算出3D的障礙物資訊并識别交通标志及交通信号,這些資料進入perdiction子產品,計算出障礙物的可能軌迹,如此就可以結合以上資訊并根據車輛定位子產品localizationg提供的車輛位置由planning子產品得到車輛應該走的具體車道。

得到車道後車輛control子產品結合車輛的目前狀态計算加速、刹車和方向的操作信号,此信号進入CAN卡後輸出到車内,如此實作了車輛的自動駕駛。

繼續閱讀