本文做者:Apollo開發者社區算法
控制模塊:經過生成控制命令(如加速、剎車和轉向)來執行規劃模塊提供的時空軌跡。控制模塊將規劃軌跡做爲輸入,併產生控制指令給Can總線。設計模式
路由模塊:告訴自動駕駛車輛如何通過一系列車道或道路到達目的地。要計算出自動駕駛車輛通過的車道和道路,路由模塊須要知道起點和終點。bash
數據:是計算機與外部物理世界鏈接的橋樑。數據採集模塊由傳感器、控制器等其它單元組成。架構
通用模塊:該模塊包含的代碼並不是專門面向任何模塊,但有助於提高Apollo的功能。app
如下,ENJOY 函數
根據規劃軌跡和汽車的當前狀態, Control模塊使用不一樣的控制算法來生成溫馨的駕駛體驗,Control模塊能夠在正常模式和導航模式下工做。工具
規劃軌跡。google
汽車狀態。spa
定位。設計
Dreamview AUTO模式更改請求。
發送到底盤的控制命令 (轉向、 油門、剎車)。
路由模塊根據需求產生更加高級的導航信息。
路由模塊依賴一個路由拓撲文件,在Apollo中一般以routing_map.* 方式命名。
可使用如下命令生成路由地圖:
bash scripts/generate_routing_topo_graph.sh
地圖數據
路由需求(起始和終止位置)
路由導航信息
本模塊包含Apollo的數據解決方案, 包括進行數據收集、存儲、處理等操做的工具和基礎架構。
apollo_app編譯目標定義抽象類ApolloApp,該類由全部模塊實現,同時它還定義宏APOLLO_MAIN,用於啓動每一個模塊。
log編譯目標將google日誌系統封裝成特定於項目的宏,從而能夠對日誌記錄級別進行更精確的控制。
macro編譯目標定義一些經常使用的特定於類的宏。
適配器用於不一樣模塊之間的通訊。AdapterManager類派生全部專用適配器並對其進行管理。適配器需使用宏REGISTER_ADAPTER進行註冊。適配器類充當Apollo模塊和I / O機制(例如ROS)之間的抽象層。
車輛配置在文件configs/data中指定。
math實現許多有用的數學庫。
monitor定義了日誌記錄系統。
proto定義許多項目範圍的protocol buffers。
status用於肯定某些功能可否成功執行。若是不能,status將提供有用的錯誤消息。
time是與時間相關的輔助函數。
util包含帶有註冊的工廠設計模式的實現,一些字符串解析函數,以及一些用於從文件中解析protocol buffers的函數。
所述vehicle_state classs描述車輛的當前狀態(例如位置、速度、方向等)。