一、概述
多傳感器的外參標定和時間同步(統稱時空標定)是融合的重要前提條件,前面介紹的所有融合都是默認已經標定好了的。但實際上,標定當然是需要在融合之前做的,之所以放在后面講,是因為標定所用到的知識比融合多,或者可以講,標定是一種更高級別的融合。
由于標定的方法多種多樣,要標定的內容也十分的多,所以本篇文章無法對每一種方法進行詳細的介紹,索性我們在這里把常見方法的思路匯總梳理一下,弄清楚什么情況下該選什么類型的方法,等真正用到再去了解它的細節,也未嘗不可。
二、外參標定方法
相比于時間標定,外參的標定更簡單一些,那么我們就先從簡單的開始介紹。
外參標定方法可以按以下方式進行分類
之所以按有無共視進行區分,是因為二者在原理和精度上都有本質區別,而且在實際應用中,也會盡可能讓傳感器之間產生共視。
1.雷達和相機外參標定
?
這類任務中,主要是用的就是pnp方法,可參考的資料有:
論文1:LiDAR-Camera Calibration using 3D-3D Point correspondences
代碼1:https://github.com/ankitdhall/lidar_camera_calibration
論文2:Automatic Extrinsic Calibration for Lidar-Stereo Vehicle Sensor Setups
代碼2:https://github.com/beltransen/velo2cam_calibration
詳細的公式和實現細節大家可以看論文和代碼,這里更傾向于用文字描述直觀地解釋一下它的原理。有共視的視覺與雷達的標定原理很簡單,從圖片中可以看到,二者都可以掃到標定物,而且都能夠提取物體的邊緣(線或點),建立一個殘差模型,描述二者的邊緣之間的距離,殘差是以外參為自變量的,因此進行優化讓殘差最小,即可找到二者之間的外參。
2.多雷達外參標定
參考資料:
論文:A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces
代碼:https://github.com/ram-lab/lidar_appearance_calibration
這類方案的核心思路是,在每個雷達各自的點云中提取平面特征,理論上,當外參已知且精確時,同一個平面在所有雷達中的掃描應該是重合的(轉換到同一個坐標系下),反之,當二者不重合時,即說明外參有誤差,以平面的不重合度為殘差,以外參作為自變量,建立優化模型,進行優化,即可得到外參結果。
3. 手眼標定
手眼標定的名字最早來自于機械手的標定,機械手上有攝像頭,標定攝像頭和機械手之間外參的方法被叫做手眼標定。但是這種工作原理,可以應用在所有無共視且二者都能進行位姿解算的傳感器標定任務中(比如相機與IMU、雷達與IMU、相機與雷達等等)。
它的原理很簡單,就一個公式:
其中 X 就是要標定的外參,A和B分別為兩個傳感器各自解算的相對位姿。這個公式結合上面的圖,我想應該就不用過多解釋了。
相關參考資料為:
論文:LiDAR and Camera Calibration using Motion Estimated by Sensor Fusion Odometry
https://github.com/ethz-asl/lidar_align
4. 融合中標定
我們通過前面多篇文章的介紹,應該已經明白融合是怎么回事,也應該清楚融合的模型是什么樣子,而在融合中標定,指的是把外參作為狀態量加入到融合模型中去,一起進行狀態估計。隨著變量的增多,融合的精度、觀測性要求都更高,因此前面才說標定是一種更高級別的融合。
在實際使用中,融合中標定方法的一個重要貢獻是可以進行在線標定,即在融合任務執行的過程中,就把外參給搞定了,而不需要像其他方法一樣先標定再融合。這方面的工作有很多,其中包含眾多vio/lio系統,如vins、lio-mapping、M-Loam 等。由于都是很出名的工作,所以論文和代碼就不一一列出了。
三、時間標定方法
在實際使用中,很多時候各個傳感器都是用自己的時鐘,由于各個時鐘之間不同步,因此需要估計他們之前的時間差,也就是這里所說的時間標定。
時間標定是一個很復雜,且很難做的精確的事情。因此在實際使用中,更傾向于用硬件解決問題,比如讓多個傳感器使用同一個時鐘源,或者用一個共同的時間戳給所有傳感器打時間標簽等等。總之,時間標定是一個沒有辦法的辦法,它是有精度代價的,一般在沒有條件做硬件同步(比如手機)時,才做這一項工作。
時間標定方法按照原理主要可以分為離散時間方法和連續時間方法。
1.離散時間方法
離散時間方法指的是在原有離散時間融合模式下,簡單地解決時間同步問題。
在業內,比較有名的有下面兩類方法。
1)方案1
這是港科大秦通的一篇工作,應用在vins上,論文為 Online Temporal Calibration for Monocular Visual-Inertial Systems。
它的思想很巧妙,讓IMU時間保持不變,圖像上特征點基于勻速運動模型修改位置(示意圖如下)。與不考慮時間誤差時相比,架構不變,使用極小的改動,實現了期望的效果。
2)方案2
第二個方案的思路是在濾波中計算相機位姿時,直接按時間差對積分區間進行調整(論文題目:Online Temporal Calibration for Camera-IMU Systems: Theory and Algorithms)。
此時對應的狀態量為
相機位姿估計的模型就變為
2. 連續時間方法
連續時間指的是把輸入(加速度、角速度)建立為連續時間函數,而不是它原來的離散時刻。這是因為,預積分中把時間差作為待估狀態量,對時間差進行建模時,會得到以下結果:
由于要對時間差求雅可比,因此插值函數必須可導(可到要求必須連續,因此要使用連續時間模型),此時雅可比如下:
剩下的就可以使用正常的優化步驟去求解問題了。
當然連續時間slam是一個很大的話題,三言兩語肯定介紹不完,感興趣的可以去看以下論文
a. kalibr 系列
論文:Continuous-Time Batch Estimation using Temporal Basis Functions
論文:Unified Temporal and Spatial Calibration for Multi-Sensor Systems
論文:Extending kalibr Calibrating the Extrinsics of Multiple IMUs and of Individual Axes
代碼:https://github.com/ethz-asl/kalibr
b. 其他
論文:Targetless Calibration of LiDAR-IMU System Based on Continuous-time Batch Estimation
代碼:https://github.com/APRIL-ZJU/lidar_IMU_calib
四、總結
有工程經驗的都知道,方法歸方法,效果歸效果,理論的東西推導的再完整,他們的效果總歸是有差異的,因此選擇方法時要有一個優先級。
對于外參標定方法,可以粗略認為,三種思路的精度由高到低依次為
a. 基于共視的標定
b. 融合中標定
c. 手眼標定
因此,當高精度等級的方法能夠使用時,就盡量不要使用低精度等級的方法。
對于時間標定方法,應盡量使用硬件同步方案,不得已時,再使用算法去估計時間差,而且,估計時,應該在環境好(特征充足)的情況下去估計。
審核編輯:黃飛
?
評論
查看更多