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