0. 簡介
之前作者主要是基于ROS2,CyberRT還有AutoSar等中間件完成搭建的。有一說一,這種從頭開發當然有從頭開發的好處,但是如果說絕大多數的公司還是基于現成的Apollo以及Autoware來完成的。這些現成的框架中也有很多非常好的方法。目前作者打算抽一些時間來整理這部分資料,并根據自己學習內容進行介紹。
目前使用的主流的無人駕駛開源項目框架,主要是Autoware和百度的Apollo。百度Apollo的版本迭代十分迅速,起初的幾個版本也是基于ROS1開發的,但由于ROS的局限性(主要是其機制所造成的無人系統響應時間相對較慢等問題,不適用于高速無人駕駛),Apollo貌似從3.5開始就棄用ROS1改用自己研發的CyberRT中間件了,但Apollo也有一定的局限性,比如需要購買百度提供的高精度地圖服務等,Apollo在SLAM定位建圖這方面開放性不是很高。如果你對自己移動平臺行駛速度的要求不是很高,僅僅是在小片公共區域(類似廠區、園林等)實現自動駕駛,Autoware足夠滿足使用需求。博主是做園林環衛機器人的,所以主要在用Autoware框架,Apollo只了解一點點。目前,Autoware已經推出了基于ROS2的 Autoware.Auto,感興趣的朋友可以看一下。
1. Autoware自動駕駛框架介紹
Autoware.AI是世界上第一個用于自動駕駛技術的“All-in-One”開源軟件。它ROS1操作系統,并在Apache2.0許可下使用。主要包含以下模塊:
- 定位(Localization ):通過結合GNSS和IMU傳感器的3D地圖和3D地圖、SLAM算法來實現定位。
- 檢測(Detection ):通過傳感器融合算法和深度神經網絡使用攝像機和激光雷達完成檢測。
- 預測和規劃(Prediction and Planning ):基于概率機器人模型和基于規則的系統,部分還使用深度神經網絡。
- 控制(Control):Autoware向車輛輸出的是速度和角速度的扭曲量。盡管控制量的主要部分通常位于車輛的線控控制器中,但這些是Control的一部分。
2. Apollo和Autoware的異同
2.1 硬件區別
以NXP的二代藍盒子為硬件基礎,這兩個自動駕駛軟件開源平臺最大的區別在于底層,最上層的應用模塊差別不大。硬件系統方面,Apollo推薦64位x86指令集的CPU加英偉達GPU架構。Autoware主要使用英偉達的AGX Xavier或PX2,也就是推薦ARM的V8指令集架構CPU。當然,也支持64位x86指令集的CPU加英偉達GPU架構。
2.2 框架區別
Autoware的框架主要包含感知(Perception)、決策(Planning)兩個部分,感知部分包含定位(Localization)、檢測(Detection)、預測(Prediction)三個模塊,決策包含全局運動規劃(Mission)、局部運動規劃(Motion)兩個模塊
相比Autoware,Apollo的框架更加豐富和復雜,整個框架包括云服務平臺、開源軟件平臺、參考硬件平臺和參考軟件平臺四部分。
云服務平臺包括:
-
高精地圖服務:高精度地圖是實現無人駕駛汽車高精度定位、路徑導航、路徑規劃的基礎;
-
仿真引擎:通過海量實際路況及自動駕駛場景數據,促進自動駕駛系統的開發快速迭代進行;
-
數據平臺:包括傳感器數據、車輛行駛數據等;安全:數據安全、通信安全、服務安全;
-
OTA:空中下載技術(Over-the-Air Technology)是遠程升級系統的必備技能;
-
DuerOS:百度的語音交互平臺,未來可通過語音與車實現交互。
開源軟件平臺是Apollo自動駕駛系統的核心部分,包括功能模塊、運行框架和實時操作系統三部分。功能模塊可細分為:
- 地圖引擎:運行高精度地圖;
- 定位模塊:通過GPS、V-SLAM、L-SLAM、里程計等多種定位源融合,結合高精度地圖,實現精準定位;
- 感知:通過激光雷達、毫米波雷達、攝像頭,精確感知車輛周圍的環境路況,包括車輛、行人、交通標志等等;
- 規劃:主要包括路徑規劃、運動障礙物的預測等;
- 控制:實現控制車輛的轉向、油門、剎車等操作;End-to-End:基于深度學習的橫向和縱向駕駛模型;
- HMI:人機交互模塊。
硬件平臺主要是無人駕駛系統的計算硬件和各種傳感器硬件,包括GPS/IMU、攝像頭、激光雷達、毫米波雷達、HMI設備、黑盒子等。
車輛平臺,可實現線控轉向、線控油門和線控制動等線控功能。
2.3 中間件區別
相比Ros,CyberRT增加了Component組件,組件之間通過 Cyber channel 通信。Cyber RT 中用Message實現模塊間通信,其實現基于 protobuf。同時,CyberRT也支持異步計算任務,優化線程使用與系統資源分配,同時支持定義模塊拓撲結構的配置文件
3. Autoware安裝
下面我們就來看一下Autoware的安裝, Autoware 官網給出了兩種安裝方式:源碼編譯安裝Source Build 和 Docker 方式,使用 Docker 方式更為簡單。
3.1 安裝OpenCV(以 4.0.0 為例)
Ubuntu 18.04 安裝 OpenCV 網上的教程比較多,就不寫具體的步驟了,推薦幾個不錯的:
Ubuntu 18.04安裝OpenCV4.0和環境配置
OpenCV+Ubuntu18.04環境搭建
ubuntu18.04 安裝opencv4.2
注意,如果使用 anaconda 管理 python 環境的話,也要將編譯好的 opencv 庫鏈接到 anaconda 下的 site-packages 目錄下。