本文作者 沈玥伶,公眾號:計算機視覺life,編輯部成員
一、相機與IMU的融合
在SLAM的眾多傳感器解決方案中,相機與IMU的融合被認為具有很大的潛力實現低成本且高精度的定位與建圖。這是因為這兩個傳感器之間具有互補性:相機在快速運動、光照改變等情況下容易失效。而IMU能夠高頻地獲得機器人內部的運動信息,並且不受周圍環境的影響,從而彌補相機的不足;同時,相機能夠獲得豐富的環境信息,通過視覺匹配完成回環檢測與回環校正,從而有效地修正IMU的累計漂移誤差。
二、什么是相機與IMU外參?
足夠准確的相機與IMU外參是實現相機與IMU融合的定位與建圖的前提。相機與IMU之間的外參包括兩部分:
(1)相機與IMU之間的相對位姿
如下圖所示,相機與IMU之間的相對位姿值的是相機坐標系和IMU坐標系之間的變換,包括相對旋轉角和相對平移量。
相機坐標系坐標和IMU坐標系坐標之間滿足如下變換關系:
將上式展開可以得到分別得到相機坐標系和IMU坐標系之間旋轉角和平移量的變換關系:
(2)相機與IMU之間的時間差
由於觸發延時、傳輸延時的存在,傳感器的采樣時間和時間戳的時間不匹配,如下圖所示,從而導致相機和IMU之間存在時間差td。
td用公式表示為:
將相機的時間戳平移td后,相機與IMU之間實現了同步。
三、為什么需要在線標定?
大部分同學都是從跑公開的數據集開始入門的,這些數據集都給出了傳感器的內外參數,不需要我們進行標定。但是,如果想投入到實際應用中,我們就需要使用自己的傳感器。對於低成本、自己組裝的相機與IMU傳感器組合,相機與IMU之間的外參是未知的,這就需要我們對相機與IMU之間的外參進行標定。
對於相機與IMU之間的相對位姿,傳統的標定方法往往采用離線的形式,需要手持標定板進行一系列操作,費時費力。對於相機與IMU之間的時間差,由於每次運行時間差都不相同,所以只能依靠在線標定的方法。所謂在線標定方法,指的是在系統運行之初或者系統運行過程中完成標定,這種方法解放了雙手,也能夠保證足夠的精度。
四、相對位姿在線標定方法
(1)VINS基礎上的在線標定
港科大沈劭劼實驗室提出了在初始化的同時對相機與IMU之間的外參進行標定的方法[1]。流程如下圖所示。首先進行相機與IMU之間相對旋轉角的標定,標定完成之后進行初始化和相機與IMU之間相對平移量的標定。標定和初始化完成后進行視覺慣性聯合的狀態估計,並且把標定量也當做待估計的狀態放入聯合優化中。此在線標定方法被應用於VINS[2]中。代碼實現包含於VINS中,VINS的源碼已上傳至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。
(2)VI-ORB-SLAM基礎上的在線標定
Weibo Huang等借鑒了(1)中的標定方法,在VI-ORB-SLAM的基礎上加上了相機與IMU的相對位姿在線標定[3]。與(1)的不同之處在於,此方法能夠在系統運行之初快速得到足夠精度的標定結果,沒有將外參納入狀態估計的優化變量中,大大節省了計算量。作者暫時沒有開源代碼。
五、時間差在線標定方法
(1)基於像素點勻速運動的時間差標定方法
此時間差標定方法[4]同樣出自港科大沈劭劼實驗室並且應用於VINS中。代碼實現包含於VINS中,VINS的源碼已上傳至github:https://github.com/HKUST-Aerial-Robotics/VINS-Mono。
原理為:假設在較短時間內相機從勻速運動到
,特征點在像素平面上的投影也從
勻速運動至
,像素勻速運動的速度為
。如下圖所示。
通過平移像素坐標,將時間差作為優化變量加入投影誤差的表達式中,如下面式子所示。
此投影誤差項與IMU誤差項和初始值誤差項相加進行聯合非線性優化。每一次優化結束后對時間差進行補償,最終時間差的標定量逐漸趨於0。
(2)將時間差變量加入IMU預積分表達式中
(1)中的方法引入了像素點勻速運動的假設,不夠精確。中科院自動化所的Jinxu Liu等提出的時間差的在線標定方法[5]將時間差加入到IMU預積分表達式中,並且同樣作為優化變量參與聯合非線性優化。相比於(1)中的方法在表達式上更加復雜,但是帶來了更加快速和精確的標定結果。作者暫時沒有開源代碼。
六、總結
上文我們對相機與IMU之間的相對位姿和時間差的在線標定的最新研究成果進行了列舉。由於篇幅有限,我們僅僅介紹了框架層面的東西,感興趣的讀者可以直接閱讀參考文獻部分給出的相應論文。
實際應用的時候,我們需要根據應用場景和需求選擇合適的方法,甚至在現有的方法上做出改進。下表列出了上文提到的方法的各自的適用場景,讀者可以據此選擇符合條件的方法進行相機與IMU的在線標定。
參考文獻
[1] Yang Z , Shen S . Monocular Visual-Inertial State Estimation With Online Initialization and Camera-IMU Extrinsic Calibration[J]. IEEE Transactions on Automation Science and Engineering, 2016, 14(1):1-13.
[2] Tong Q, Li P, Shen S. VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator[J]. IEEE Transactions on Robotics, 2017, PP(99): 1-17.
[3] Huang W, Liu H, Ieee: Online Initialization and Automatic Camera-IMU Extrinsic Calibration for Monocular Visual-Inertial SLAM[C], 2018 Ieee International Conference on Robotics and Automation, 2018: 5182-5189.
[4] Qin T , Shen S . Online Temporal Calibration for Monocular Visual-Inertial Systems[J]. 2018.
[5] Liu J , Gao W , Hu Z, Ieee: Online Temporal Calibration of Camera and IMU using Nonlinear Optimization[C], 2018 Ieee International Conference on Pattern Recognition, 2018: 1761-1766.
推薦閱讀
如何從零開始系統化學習視覺SLAM?
從零開始一起學習SLAM | 為什么要學SLAM?
從零開始一起學習SLAM | 學習SLAM到底需要學什么?
從零開始一起學習SLAM | SLAM有什么用?
從零開始一起學習SLAM | C++新特性要不要學?
從零開始一起學習SLAM | 為什么要用齊次坐標?
從零開始一起學習SLAM | 三維空間剛體的旋轉
從零開始一起學習SLAM | 為啥需要李群與李代數?
從零開始一起學習SLAM | 相機成像模型
從零開始一起學習SLAM | 不推公式,如何真正理解對極約束?
從零開始一起學習SLAM | 神奇的單應矩陣
從零開始一起學習SLAM | 你好,點雲
從零開始一起學習SLAM | 給點雲加個濾網
從零開始一起學習SLAM | 點雲平滑法線估計
從零開始一起學習SLAM | 點雲到網格的進化
從零開始一起學習SLAM | 理解圖優化,一步步帶你看懂g2o代碼
從零開始一起學習SLAM | 掌握g2o頂點編程套路
從零開始一起學習SLAM | 掌握g2o邊的代碼套路
零基礎小白,如何入門計算機視覺?
SLAM領域牛人、牛實驗室、牛研究成果梳理
我用MATLAB擼了一個2D LiDAR SLAM
可視化理解四元數,願你不再掉頭發
最近一年語義SLAM有哪些代表性工作?
視覺SLAM技術綜述
匯總 | VIO、激光SLAM相關論文分類集錦
研究SLAM,對編程的要求有多高?
2018年SLAM、三維視覺方向求職經驗分享
2018年SLAM、三維視覺方向求職經驗分享
深度學習遇到SLAM | 如何評價基於深度學習的DeepVO,VINet,VidLoc?
視覺SLAM關鍵方法總結
SLAM方向公眾號、知乎、博客上有哪些大V可以關注?
SLAM實驗室
SLAM方向國內有哪些優秀公司?
SLAM面試常見問題
SLAM相關領域數據集調研
從零開始一起學習SALM-ICP原理及應用