0. 簡介
作為無人車以及智能機器人而言,在裝配過程中各個傳感器之間的外參標定一直是比較頭疼的問題。這里作者也系統(tǒng)的學習了一下,傳感器的外參標定和在線標定問題。
下圖是我們常用的幾個坐標系,而對于常用的外參問題經(jīng)常是IMU/GNSS與車體坐標的外參、Lidar和Camera的外參、Lidar和Lidar的外參、Lidar和IMU/GNSS的外參。
1. 離線外參標定
1.1 IMU/GNSS與車體外參標定
這個IMU/GNSS與車體外參標定如下圖所示,主要需要獲取$T_{car}^{imu}$坐標系,這一類IMU/GNSS設備通過內部的緊耦合可以綜合輸出一系列校準后的位姿信息。
同時IMU的輸出頻率是很高的,所以通過插值的形式可以有效地提高整體綜合的頻率輸出。
為了去標定外參,一般的方法是獲取位姿運動的位姿序列,并通過GNSS/IMU來觀測車輛自身的運動(有的時候我們可以通過繞圈的形式+手持點測繪來對車輛自身坐標和GNSS坐標進行匹配計算)。
通過獲取很多個觀測和gnss的轉換可以得到cost fuction參與到里面去優(yōu)化。
這里我們也給出了基于車體坐標系odom和IMU的位姿聯(lián)合矯正的相關代碼,考慮到IMU和輪速計的數(shù)據(jù)收集過程中本身在時間上就很難做到完全對齊,此時引入時間偏移(delta_t)用于表示兩者采集時間片之間的誤差,通過循環(huán)標定新產生的輪速計數(shù)據(jù)和原先的IMU 數(shù)據(jù),選取誤差最小的結果作為最終兩者之間的標定,相應的(delta_t)即認為兩者采集時間的偏差。
參考鏈接:
https://github.com/smallsunsun1/imu_veh_calib
其實作為車輛來說,在平面測量后,其實只需要觀測$x,y,yaw$即可。所以可以將用直線來做約束和校準,得到下圖的公式:
?
1.2 Camera 與 Camera 外參標定
作為相機與相機之間的標定,其本質和雙目攝像頭的標定步驟類似,通過拿到的圖像信息來還原點在3D空間下的位置。如果獲取兩個相機與點的轉換關系就可以得到$T_{cam_a}^{cam_b}$的坐標系變換。
然后根據(jù)棋盤格的坐標系轉換就可以得到同一個點通過內參+外參后轉到的$uv$坐標系下的情況,然后利用PNP非線性優(yōu)化得到旋轉平移矩陣$T_{camera}^{chessboard}$。然后通過多幀來綜合約束$T_{cam_a}^{cam_b}$。
這里是經(jīng)常使用的方法,Opencv也有自帶的方法,代碼如下:
參考鏈接:
https://github.com/sourishg/stereo-calibration
1.3 Lidar 與 Camera 外參標定
雷達和相機的校準作為自動駕駛中最為重要的部分,其主要分為雷達的三維點位姿估計和相機的像素點的三維點位姿估計。
這里我們可以看到其核心思想仍然是獲取三維點的方式來完成對應。這里當然會因為Lidar存在掃描導致的誤差造成的角點提取不準的原因,例如我們使用這類方法。
可以看到不同的激光得到了不一樣的角點提取效果,因此我們可以通過角點擬合的方法去實現(xiàn),比如說我們可以通過Ransec提取出空間中的標定板的位置區(qū)域,并獲得初步的位移量,然后在標定板中存在幾個凸起,并通過分割和聚類的方法提取出凸起的中心點,并將點與最近的點進行映射,得到$T_{lidar}^{chessboard}$。
然后攝像頭可以通過標定板來預估出$T_{camera}^{chessboard}$,然后這兩個通過$chessboard$的Lidar和Camera求得旋轉的TF坐標系。
參考鏈接:
1.2D標定板:
https://github.com/TurtleZhong/camera_lidar_calibration_v2
2.3D標定板:
https://github.com/heethesh/lidar_camera_calibration
3.鏤空標定板:
https://github.com/beltransen/velo2cam_calibration
4.球體標定:
https://github.com/545907361/lidar_camera_offline_calibration
1.4 Lidar 與 Lidar 外參標定
Lidar與Lidar的標定其實就是兩個點云校準配對的方式,一般使用PCL庫即可。這個在之前的博客中已經(jīng)詳細說過了,這里也不再展開說了。
參考鏈接:
2D雷達:
https://hermit.blog.csdn.net/article/details/120726065
https://github.com/ram-lab/lidar_appearance_calibration
3D雷達:
https://github.com/AbangLZU/multi_lidar_calibration
https://github.com/yinwu33/multi_lidar_calibration
1.5 Lidar 與 IMU/GNSS 外參標定
Lidar和IMU/GNSS的外參標定和車體外參的外參標定類似,都可以通過相對位移來估算出位姿態(tài)變化,從而實現(xiàn)對齊。
?
當然近年來也有一些比較好的開源方案供我們參考和選擇:
參考鏈接:?
https://github.com/APRIL-ZJU/lidar_IMU_calib
https://github.com/chennuo0125-HIT/lidar_imu_calib
https://github.com/FENGChenxi0823/SensorCalibration。
1.6 Lidar 和 Radar 外參校準
與其他不一樣的是,Radar只有極坐標信息,沒有高度信息。所以很多時候Radar和Lidar的標注只需要標定$x,y,yaw$信息。
而Radar對三角錐標注更敏感,所以這也會導致我們的結果更準確一些。
當然也可以使用一些配準的方法來實現(xiàn)標定的功能。
參考鏈接:
https://github.com/keenan-burnett/radar_to_lidar_calib
https://github.com/gloryhry/radar_lidar_static_calibration
1.7 數(shù)據(jù)同步
數(shù)據(jù)同步作為所有傳感器外參標定后需要做的步驟,作者也多次撰文寫過這方面的工作(https://hermit.blog.csdn.net/article/details/120489694),這里發(fā)現(xiàn)一個開源解決方案(https://github.com/lovelyyoshino/sync_gps_lidar_imu_cam),一并貼上來。
2. 在線外參標定
在車輛運行期間,動態(tài)修正傳感器之間的相對位姿參數(shù)。與離線標定不同,在線標定不能擺場景(如標定板),因此難度更大。其原因在于在車輛運行期間,傳感器的安裝位置因為振動或者外力碰撞會發(fā)生變化,以實現(xiàn)在當參數(shù)異常時發(fā)出報警。
2.1 手眼標定
手眼標定這一塊的工作作者也在文章中講過,通過形成$AX=XB$的形式來估算出當前的情況。這里是Lidar和RTK的手眼標定方案(https://github.com/liyangSKD/lidar_rtk_calibration)。
2.2 深度學習方法
這類方法應該是未來的趨勢方法,通過深度學習的輸出,來根據(jù)輸入的情況估算出最優(yōu)的投影情況,并作為輸出。這一塊作者沒有深入的研究,等后續(xù)有時間再詳細說說吧。
https://github.com/gogojjh/M-LOAM
https://github.com/KleinYuan/RGGNet
原文標題:多傳感器融合感知—傳感器外參標定及在線標定學習
文章出處:【微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。
?
評論
查看更多