定位技術橫跨好幾個專業,包括測繪、導航、計算機視覺知識、以及點云處理的知識。業界所說的“多傳感器融合”,都是指對攝像頭、激光雷達、毫米波雷達、超聲波雷達等多種傳感器各自分別收集到的數據所做的「數據融合」。
其中,Apollo3.0多傳感器融合定位模塊的框架有:
定位模塊依賴的硬件以及數據,包括慣性測量單元 IMU、車端天線、基站、LiDAR、以及定位地圖;
GNSS定位以及激光點云定位模塊,GNSS定位(基站和車端天線輔助)輸出位置及速度信息,點云定位(LiDAR和定位地圖)輸出位置及航向角信息;
融合框架:慣性導航解算、Kalman濾波(卡爾曼濾波器是核心模塊);融合定位輸出是一個6-dof的位置和姿態,以及協方差矩陣,其結果會反過來用于GNSS定位和點云定位的預測。
由于無人車的感知和決策能力并沒有達到像「人」一樣聰明的程度,而定位系統可以與高精地圖配合提供靜態場景感知,可將感知得到的動態物體正確放入靜態場景,而位置和姿態用于路徑規劃和車輛控制。因此定位系統對于無人駕駛至關重要。
In brief,一個無人汽車感知系統成功并不能保證整個系統成功,而感知系統有瑕疵足以讓使用它的軟件工程師持續陷入苦惱。
對大多數涉足自動駕駛的公司來說,搞定一套傳感器方案,這個看似簡單的工作,卻往往需要耗費一個小團隊至少6-8個月的寶貴研發時間,才能勉強做到“不拖后腿”,而這又僅僅是“重復發明輪子”的一個過程。
百度Apollo所開發的自動駕駛套件已可做到在硬件層面就將攝像頭、激光雷達集成到一起,然后再將采集到的數據統一輸送到計算平臺。
Apollo作為一個開放的平臺,目的是將開發者從繁瑣的重復性工作中解放出來,更加專注于算法迭代本身,加快自動駕駛技術的迭代速度,推進整個無人駕駛行業的進程。面對復雜多變、快速迭代的開發環境,只有開放才會帶來進步,Apollo社區正在被開源的力量喚醒。
從GitHub網站下載Apollo源代碼
按照教程設置Docker環境并搭建Apollo工程
從Apllo數據平臺下載多傳感器融合定位數據(僅限美國地區)
為了使定位模塊正確運行,需要對地圖路徑和傳感器外參進行配置。假設下載的定位數據的所在路徑為DATA_PATH。在進行以下步驟前,首先確定你在docker容器中。
2.1 配置傳感器外參:
將定位數據中的傳感器外參拷貝至指定文件夾下。
cpDATA_PATH/params/ant_imu_leverarm.yaml/apollo/modules/localization/msf/params/gnss_params/cpDATA_PATH/params/velodyne64_novatel_extrinsics_example.yaml/apollo/modules/localization/msf/params/velodyne_params/cpDATA_PATH/params/velodyne64_height.yaml/apollo/modules/localization/msf/params/velodyne_params/
各個外參的意義:
ant_imu_leverarm.yaml: 桿臂值參數,GNSS天線相對Imu的距離
velodyne64_novatel_extrinsics_example.yaml:Lidar相對Imu的外參
velodyne64_height.yaml: Lidar相對地面的高度
2.2 設置地圖路徑:
在/apollo/modules/localization/conf/localization.conf中添加關于地圖路徑的配置:
#Redefinethemap_diringlobal_flagfile.txt--map_dir=DATA_PATH
這將會覆蓋global_flagfile.txt中的默認值。
./scripts/localization.sh
定位程序將在后臺運行,可以通過以下命令進行查看。
ps-e|greplocalization
在/apollo/data/log目錄下,可以看到定位模塊輸出的相關文件。
localization.INFO : INFO級別的log信息
localization.WARNING : WARNING級別的log信息
localization.ERROR : ERROR級別的log信息
localization.out : 標準輸出重定向文件
localizaiton.flags : 啟動localization模塊使用的配置
cdDATA_PATH/bag rosbagplay*.bag
從播放數據到定位模塊開始輸出定位消息,大約需要30s左右。
5.1記錄定位結果
該腳本會在后臺運行錄包程序,并將存放路徑輸出到終端上。
./scripts/record_bag.sh
5.2可視化定位結果
./scripts/localization_online_visualizer.sh
該可視化工具首先根據定位地圖生成用于可視化的緩存文件,存放在/apollo/data/map_visual目錄下。
然后接收以下topic并進行可視化繪制。
/apollo/sensor/velodyne64/compensator/PointCloud2
/apollo/localization/msf_lidar
/apollo/localization/msf_gnss
/apollo/localization/pose
5.3可視化效果如下:
如果發現可視化工具運行時卡頓,可使用如下命令重新編譯可視化工具:
cd/apollo bazelbuild-copt//modules/localization/msf/local_tool/local_visualization/online_visual:online_local_visualizer
編譯選項-c opt優化程序性能,從而使可視化工具可以實時運行。
./scripts/localization.shstop
如果之前有運行步驟5的錄包腳本,還需執行
./scripts/record_bag.sh stop
假設步驟5中錄取的數據存放路徑為OUTPUT_PATH,桿臂值外參的路徑為ANT_IMU_PATH
7.1 運行腳本:
./scripts/msf_local_evaluation.shOUTPUT_PATHANT_IMU_PATH
該腳本會以RTK定位模式為基準,將多傳感器融合模式的定位結果進行對比。注意只有在GNSS信號良好,RTK定位模式運行良好的區域,這樣的對比才是有意義的。
7.2 獲得如下統計結果:
可以看到三組統計結果,第一組是組合導航(輸出頻率200hz)的統計結果,第二組是點云定位(輸出頻率5hz)的統計結果,第三組是GNSS定位(輸出頻率約1hz)的統計結果。
表格中各項的意義:
error: 平面誤差,單位為米
error lon: 車前進方向的誤差,單位為米
error lat: 車橫向方向的誤差,單位為米
error roll: 翻滾角誤差,單位為度
error pit: 俯仰角誤差,單位為度
error yaw: 偏航角誤差,單位為度
mean: 誤差的平均值
std: 誤差的標準差
max: 誤差的最大值
<30cm: 距離誤差少于30cm的幀所占的百分比
<1.0d: 角度誤差小于1.0d的幀所占的百分比
con_frame(): 滿足括號內條件的最大連續幀數
-
傳感器
+關注
關注
2553文章
51390瀏覽量
756568 -
LIDAR
+關注
關注
10文章
328瀏覽量
29530
原文標題:技術文檔│本地如何運行多傳感器融合定位模塊
文章出處:【微信號:Apollo_Developers,微信公眾號:Apollo開發者社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論