1. 程式人生 > >基於matlab的雙目+IMU標定

基於matlab的雙目+IMU標定

        上一次主要講了關於雙目標定過程中一些需要注意的問題,在視覺slam中,很重要的一個方向是視覺與IMU的融合,因此也就有了很多相機與IMU融合的硬體。這次就來講講VIO硬體的標定,和雙目類似的,在這個標定中我們最終需要得到IMU相對於相機的rotation和translation,IMU與相機資料的延時,以及IMU本身的一些“內參”,如加速度計、陀螺儀的bias,noise等。目前標定功能較齊全的是linux下的kalibr工具箱,matlab中程式碼比較零散,沒有一個整合的toolbox,因此本篇先總結一下matlab的使用,下次繼續講講kalibr的使用方法。

        在基於matlab的標定方法中,我們關注以下兩個點的標定:IMU相對於相機的旋轉矩陣和IMU中加速度計Bias。

1.加速度計Bias標定

        加速度計Bias的標定是相對較簡單的,原理是利用重力加速度的不變性,通過硬體姿態的變換,獲得硬體在不同方向上重力加速度的測量值。具體做法是讓硬體在某一位置保持靜止,記錄此時加速度計讀數,變換硬體姿態後重覆上述過程。最終我們得到了多組加速度計資料。在硬體本體座標系上看,每一次測量向座標系中添加了一個長度為重力g的向量,所有的資料點應該在一個球面上,通過球形擬合,找到球心位置,球心位置和原點的偏差即加速度計bias。為了使標定結果更精確,資料應在各個方向分佈較均勻,且數量不能太少。另外,我們也可以使用Balaji Kumar的標定程式,參考文章Iuri Frosio, Federico Pedersini, N. Alberto Borghese "Autocalibration of MEMS Accelerometers" IEEE TRANSACTIONS ON INSTRUMENTATION AND MEASUREMENT, VOL. 58, NO. 6, JUNE 2009 。這個標定程式需要輸入十組加速度計測量資料,因此我們通常稱其為十位置法。程式的輸出是矩陣M和B,M是一個3*3的矩陣,表示三軸加速度計各方向的關聯(理想情況該矩陣為單位陣),B是3*1的矩陣即各方向bias。採集資料時要注意,保證重力加速度分別指向+-x、+-y、+-z六個方向,獲得較為準確的標定結果。

2.IMU與相機RotationMatrix標定

        使用Jorge Lobo的標定程式,該程式基於上次講過的matlab標定工具箱。程式下載:http://home.deec.uc.pt/~jlobo/InerVis_WebIndex/InerVis_Toolbox.html

        標定流程如下:

        a.資料採集。保證標定版豎直放置,採集資料過程中硬體保持靜止,變換不同姿態位置,每一個位置影象資料與十個IMU資料相對應,儲存。

        b.資料處理。假設採集二十張圖片,需要有20個與之對應的IMU資料檔案,每一個檔案中有十個I加速度計資料。

        c.單目相機標定。流程同上一講。在完成單目標定後,儲存標定結果Calib_Results.mat檔案。

        d.將前面標定得到的矩陣M和B寫入程式load_imu_w.m中,執行rvctools中的startup_rvc.m載入數學函式。將IMU資料檔案和相機標定結果放入相應路徑(imucam中)。

        e.執行imucam.m,得到四元數q,即標定結果。

        注意事項:上面提到了標定版垂直和硬體靜止的問題,除此之外,需要注意加速度計測量值單位問題,以及IMU資料檔案命名。

        想了解方法原理的同學可參考作者的文章,Relative pose calibration between visual and inertial sensors.

-------------------------------------------------

        本篇就是這樣,下次總結一下kalibr的使用,kalibr功能更為強大,需要注意的問題也比較多,下次再見啦。

If you tame me, then we shall need each other.