無人駕駛汽車系統入門(二十二)——使用Autoware實踐激光雷達與攝像機組合標定
單目相機分辨率高,我們可以使用各種深度學習算法完成對目標檢測,但是缺乏深度,座標等信息。激光雷達能夠獲得目標相當精確的三維座標信息,但是分辨率低,目前主流的爲64線和32線,稀疏的電雲數據爲模式識別帶來了困難。一種簡單的思路是融合相機和激光雷達對目標障礙物完成檢測,在圖像層面使用深度學習方法將目標檢測識別,然後將目標從二維圖像映射到三維電雲,從而畫出目標在三維空間的位置以及邊界(3維的bounding box)。實現這一映射的前提是完成Camera到激光雷達的組合標定。本文即講解如何使用開源無人駕駛軟件Autoware實踐組合標定。
1. 標定準備
在進行標定之前,需要有如下硬件準備:
* 標定板:規格爲 A0 尺寸的硬紙板(841 1189mm) 9行7列,注意一定要是硬紙板,如下圖所示:
已驅動的攝像機:推薦FLIR的Grasshopper3 相機,ROS下驅動簡單,幀率高,可是距離遠,全局快門。如下圖所示:
已驅動的激光雷達: 推薦使用Velodyne VLP-32C或者HDL-64
確定舉標定板人的站位及動作:標定板在攝像頭下一般有6個站位,每個位置做相同的一組5個動作。5個動作分別爲:正向; 下俯; 上仰; 左偏; 右偏。如下圖所示:
6個站位分別爲:
1). 近距離鏡頭左邊(近距離一般爲5m)
2). 近距離鏡頭中間
3). 近距離鏡頭右邊
4). 遠距離鏡頭左邊(遠距離依照攝像機和激光雷達真實情況而定)
5). 遠距離鏡頭中間
6). 遠距離鏡頭右邊
以上位置和動作的順序均不固定,可自行決定
2. 錄製標定包
- 啓動Autoware,打開ROSBAG,Autoware下用來錄包的一個工具
- 勾選/image_raw和/velodny_points兩個話題
- start啓動
- 錄製,保存
3. 使用Calibration Tool Kit標定
(1) 加載包, 在終端輸入:
$ rosbag play bagName。bag /velodyne_points:=/points_raw
加載成功後,立即空格暫停。
(2) 配置Tool Kit:
第一個對話框選取話題/image_raw
第二個對話框選取camera-velodyne
(3) Calibration Tool Kit打開後,參數設置:
- Pattern Size(m)爲0。108和0。108;
- Pattern Number爲6和8
如果使用的標定板不是上文中的規格,請自行設定參數
(4) 參數設置之後關閉Calibration Tool Kit,重啓加載配置
(5) 加載數據:
Calibration Tool Kit打開後, 取消暫停繼續運行包; 當MainWindow出現畫面後,暫停包,調整MainWindow中畫面位置
右上角爲激光雷達數據, 首先點擊圖像, 使用鍵盤上’b’鍵調淺背景顏色
使用鍵盤上各個功能鍵調整角度。使得激光雷達圖像下可以看到棋盤
結果如下:
(6) 進行標記:
運行包,當進行到合適位置角度時,暫停包, 點擊MainWindow右上角”Grab”,生成下半部分的攝像機和激光雷達信息的兩個圖像,調整位置
在右下方的圖像中找到標定板對應的位置,鼠標左鍵標記。如果標記有誤,鼠標右鍵取消
效果如圖:
(7) 不斷重複(6)內容,直至錄像結束
(8) 標定計算
點擊MainWindow右上角”Calibrate”進行計算。由於計算量很大,這個過程可能會突然佔滿所有計算資源,但是時間很短。
(9) 驗證標定
點擊MainWindow右上角”Project”進行驗證, 左下方圖像中會出現根據計算結果和激光雷達數據生成的圖像對應位置,以紅色散點表示。如果散點分佈在標定板上,說明標定正確;如果散點不在標定板上,則對右下方激光圖像重新點選。
正確情況
錯誤情況
(10) 如果有需要更新的標記,重新點選後,重複以上內容,直至驗證通過
(11) 保存結果:
點擊MainWindow左上方的”Save”,將結果保存到合適位置。對於下面的兩個彈窗,都選擇”NO”。
到這裏,我們的標定就做好啦♪(^∇^*)
4.標定結果
我們使用Autoware自帶的Calibration Publisher和Point Image節點獲得點雲-圖像融合的point-image,在Autoware/Sensing/中打開Calibration Publisher,並將保存好的內外參文件讀取進來,打開Autoware/Sensing下的Point Image節點,在Rviz中,Panels/Add New Panel內添加ImageViewerPlugin,填寫Image Topic,本例爲/image_raw,Point Topic,本例爲/point_image,得到如下融合圖:
我們加上定位和地圖,以及YOLO檢測,vision_klt_track,range_fusion,obj_reproj等節點,並在Rviz中添加行人的3維Bounding Box,即可得到檢測結果:
查看對應的camera到velodyne的TF可視化結果如下: