Apollo星火计划学习笔记——第四讲Part2 Apollo定位模块详解与实践
引言
內容概要,學習目標
1. 定位的作用
1.1 定位及其相關知識點
定位: 獲取當前的地理位置信息,通常要通過地圖來記錄和表示。
一般情況下通過定位來繪制地圖,而通過地圖來表示車輛當前的位置。
參考系:
- 相對位置:通過標示目標物與其他事物之間的關系以表達事物位置的標示法。
- 絕對位置:表達標記事物在空間中單一、不會因觀察者所在位置改變而更改的標示法,一般基于特定的地理坐標(例如經緯度)來引用地球表面的某個位置
1.2 自動駕駛定位模塊的作用
如圖所示,定位模塊在自動駕駛系統中需要明確汽車當前位置,以及車輛當前運動狀態(車的航向、速度、加速度、角速度等)信息。
1.3 本章小節
- 為什么要定位?
- 定位和地圖的關系,以及參考系
- 定位在自動駕駛中的作用
2. 定位用到的算法
2.1 全球定位系統
概念: 全球定位系統(Global Positioning System, GPS)是一種以人造地球衛星為基礎的高精度無線電導航的定位系統,可以在全球任何地方以及近地空間能夠提供準確的地理位置、車輛行駛速度及精確的時間信息。用戶可以憑借(手機、智能手環或智能汽車)通過無線電和衛星進行實時通訊,從而得到自身準確的位置信息,即經緯度信息。
GPS的特點: 高精度、全天候、全球覆蓋、方便靈活
全球四大導航系統:
- 美國全球定位系統
- 歐盟“伽利略”系統
- 俄羅斯“格洛納斯”系統
- 中國北斗衛星導航系統
GPS的組成部分: 空間部分(GPS衛星)、地面監測部分和用戶部分
GPS定位的基本原理: 至少測出當前位置與4顆衛星(這里至少四顆是因為需要三顆衛星來確定(x, y, z)三個位置信息,第四顆衛星提供相對零點時間從而消除時間誤差)的距離和對應時間,通過解方程即可求得當前位置在地球坐標系下的位置。
2.2 GPS的擴展(RTK)
RTK(Real-time kinematic, 實時動態) 載波相位差分技術是實時處理兩個測量站載波相位觀測量的差分方法,將基準站采集的載波相位機發給用戶接收機,進行求差解算坐標。
衛星定位誤差:衛星信號穿透電離層和對流層產生誤差、衛星高速移動產生的多普勒效應引起誤差、多徑效應誤差、通道誤差、衛星鐘誤差、星歷誤差、內部噪聲誤差等
RTK 技術流程:
2.3 慣性測量單元
慣性測量單元(Inertial measurement unit, IMU)是測量物體三軸姿態角(或角速率)以及加速度的裝置
IMU內會裝有三軸陀螺儀和三個方向的加速度計來測量物體在三維空間的角速度和加速度,以此解算出物體姿態。
2.4 組合導航(GNSS)
GPS+IMU的局限性:在一些特殊場景,例如城市高樓、樹蔭以及比較長的隧道等,定位精度會受到影響
2.5 先驗地圖定位
由于GNSS的局限性,引入了先驗地圖定位,通過離線方式,事先建好當前區域的三維地圖,即高精度地圖定位圖層。
先驗地圖的兩大核心問題:
(1)特征提取和特征匹配:尋找下一個時刻可能的位置
- ICP(iterative closest point)
- NDT(Normal Distributions Transform):快速和準確,適合大規模數據;但是初始化敏感,需要足夠準確的初始猜測,通常應用于從粗到細的對齊策略。三種特征類型:球形特征、線性特征、面型特征
- 基于優化的方法
(2)重定位:在環境中找到自己的初始坐標
2.6 實時定位和建圖
隨著周圍的環境變化,地圖沒有更新,則會得到錯誤的定位信息,因此需要進行SLAM(Simultaneous locatization and mapping, 同步定位與建圖)。
SLAM 類型: 視覺SLAM算法、激光SLAM算法
視覺SLAM算法:
- ORB-SLAM
- LSD-SLAM
- VINS-Mono
激光SLAM算法:
- Cartographer
- LOAM系列
上圖是SLAM的大體框架,前端接收傳感器數據后進行一些特征提取與特征匹配,后端根據算法做一些優化。
SLAM特點: 精度足夠、魯棒性有待加強、可用于大規模分布式實施建圖
2.7 本章小結
目前定位的主流方法:
- GPS + IMU組合導航
- 先驗地圖
- SLAM
目前主流的方法是GPS + IMU,結合先驗地圖實現復雜場景定位,SLAM不依賴事先建好的地圖,是未來發展的方向。
3. Apollo定位框架介紹
RTK模塊作用: RTK模塊接收GPS+IMU的消息,發布定位消息和定位狀態給其他模塊使用
輸入:
- Iocalization::Gps
- localization:CorrectedImu
- drivers::gnss:InsStat
輸出:
- LocalizationEstimate
- LocalizationStatus
RTK模塊底層邏輯: 模塊的核心在于GPS+IMU設備給出結果的精度,信息的解算由GPS和IMU設備提供,也可以直接用GPS和IMU原始數據解算。
NDT 模塊作用: 接收GPS、IMU和借光雷達點云信息,通過和事先建好的NDT地圖進行匹配,得到車輛當前的定位消息和定位狀態發布給其他模塊使用。
輸入:
- localization:Gps
- drivers::gnss::InsStat
- drivers::PointCloud
輸出:
- LocalizationEstimate
- LocalizationStatus
NDT 模塊底層邏輯:
- NDT模塊依賴實現建好的定位地圖,地圖構建可以通過SLAM框架得到,之后保存到本地,根據車當前位置加載地圖,進行NDT匹配得到當前的位置信息
- 當前的NDT模塊對GPS和NDT做了簡單融合,在NDT失效的情況下,輸出GPS的定位結果
- 定位地圖的制作通過nde_map_creator來完成
NDT 地圖構建
準備工作:準備錄制好的數據包,從包中解壓出點云和點云當前的pose, 對pose進行校正,保存在指定的文件夾中
MSF 模塊作用: 接收GPS、IMU和激光雷達點云消息,通過NDT輸出的結果和組合導航輸出的結果進行融合,得到當前的定位消息和定位狀態,發布給其他模塊使用
輸入:
- grivers::gnss::GnssBestPose
- drivers::gnss::Heading
- gnss::Imu
- drivers::PointCloud
輸出:
- LocalizationEstimate
- LocalizationStatus
MSF模塊底層邏輯: MSF模塊對GPS和NDT的結果進行融合,從而提高系統的魯棒性,因此如何融合是MSF的關鍵。
本章小節
- Apollo定位模塊的目錄結構
- Apollo中三種定位算法的輸入、輸出以及原理
4. 實踐案例
云實驗室地址:Apollo Studio云實驗室
參考文章及視頻
星火第四講 Part2——Apollo 定位模塊詳解與實踐
總結
以上是生活随笔為你收集整理的Apollo星火计划学习笔记——第四讲Part2 Apollo定位模块详解与实践的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用mybatis的Vo对象简单完成需求
- 下一篇: AD中PCB布局与布线的一般原则