mynt product model: D1000-IR-120標定相機和IMU外參之二

1. 在之一中使用kalibr標定mynt相機和內置imu的外參數,使用的是720p,30fps的雙目圖像和200hz的imu數據,標定結果誤差比較大,這一次我們改用480p,60hz的雙目圖像和200hz的imu數據進行標定,需要在mynt_sdk中的mynteye.launch中進行如下修改.

默認獲取圖像的2560x720,30fps,可以在<arg name="stream_mode" default="$(arg stream_2560x720)" />處修改圖像分辨率,如果分辨率改爲stream_1280x480那麼就可以將<arg name="framerate" default="30" />中的幀率改爲60,如果分辨率是720p,那麼此處最大是30.

 

 

MYNT D1000-IR-120雙目相機和IMU外參標定

一、使用工具:安裝了ROS的Ubuntu16.04系統,D1000-IR-120系列的小覓相機一部,april_6x6_80x80的標定板一塊。

二、前期準備工作:

  1. 從mynt官網上下載對應標定相機的Linux Installation 版本的SDK,並按照安裝說明安裝到電腦上(http://www.myntai.com/mynteye/depth)。

 

  1. 根據需求在mynt-sdk/MYNT-EYE-D-SDK/wrappers/ros/src/mynteye_wrapper_d/launch/mynteye.launch文件中設置相機獲取圖像的參數,主要設置參數項如下:1)將 

<arg name="ir_intensity" default="4" />中的"4"改成0

  1. 默認獲取的圖像是未經過雙目畸變校正後的圖像,如果需要畸變校正後的圖像則將 <arg name="color_mode" default="$(arg color_raw)" />中的color_raw改成color_rectified.根據實驗結果,無論是否進行過rectified處理,只要標定過程中使用的相機配置文件中的相機內參數,以及相機畸變係數寫正確了,對實驗結果的精度影響不大。
  2. 默認獲取圖像的2560x720,30fps,可以在<arg name="stream_mode" default="$(arg stream_2560x720)" />處修改圖像分辨率,如果分辨率改爲stream_1280x480那麼就可以將<arg name="framerate" default="30" />中的幀率改爲60,如果分辨率是720p,那麼此處最大是30.根據標定結果推薦使用60fps的640x480的圖像來標定。
  • 開始標定
  1.   首先使用在上面terminal 2中打開的Rviz窗口中勾選需要的topics,只有勾選上的topics,纔可以被subscribe,我們需要勾選上的項包括,Left Image以及其下的image_mono,Right Image以及其下的image_mono(因爲灰度圖完全可以完成標定所以使用灰度圖就可以了),還有imu也要勾選上。

然後使用指令:rosbag record bagname.bag topics將我們需要的話題數據直接寫入到bag文件,這裏的話我們使用的指令爲:rosbag record mynt_480p_rectified.bag /mynteye/left/image_mono /mynteye/right/image_mono /mynteye/imu/data_raw .

  1. 使用rosbag record imu0.bag /mynteye/imu/data_raw錄製相機靜置兩個小時的imu數據,使用imu_utils工具標定imu的高斯白噪聲和隨機遊走參數。
  1. 在使用kalibr工具開始標定之前,首先生成標定所需要的三個配置文件camchain.yaml, imuchain.yaml, april.yaml.

  1. 使用kalibr工具中的kalibr_calibration_imu_camera腳本標定相機和imu的外參數,使用指令:kalibr_calibration_imu_camera --bag record mynt_480p_rectified.bag --cam camchain.yaml --imu imuchain.yaml --traget april.yaml --bag-from-to 5 50.(可以使用--bag-from-to參數截取數據集中5s到50s的數據用來標定)。
  • 標定結果與相機提供的數據對比

 

  • 總結

通過標定的結果與官方提供的參數對比,標定的相機和imu的旋轉變換的精度較高,但是平移量的兩者差距比較大,得虧相機和IMU之間的平移向量對VIO系統的影響不會很大,而旋轉變換則是很關鍵的。以30fps幀率獲取的2560x720的圖像,儘管在運動比較平穩的情況下,也會存在拖影的情況,但是改用60fps幀率獲取的1280x720的圖像,拖影現象不大明顯,標定效果更好。

六、注意事項

  1. Camchain.yaml文件中左目圖像到右目圖像平移變換數據要以米爲單位,不能以毫米或者釐米。
  2. Camchain.yaml文件中的相機模型要選“pinhole”,相機畸變模型要選擇”radtan”不能選”equidistant”,否則標定誤差將很大。
  3. 使用原始圖像還是經過rectified處理後的圖像,只要在camchain.yaml文件中的相機參數設置正確,一般不會對標定結果造成影響。

使用60fps的1280x480的圖像標定結果比30fps的2560x480的圖像精度高。

 

使用用來標定mynt相機的數據集跑一下vins系統.

1. 首先生成mynt相機的launch文件和config文件,其中有一個問題是,mynt是魚眼相機,如果我將config文件中的fisheye選1,那麼程序會自動加載一個mask圖像,但是運行是提示opencv出錯,所以換成使用經過畸變矯正後的圖像,然後將fisheye選爲0.這樣就正確了,程序中提供了兩個mask圖像,一個是512x512的,另一個是752x480的,是不是需要提供自己數據集對應的一個mask圖像呢.

去年的時候使用自己的開發板獲取普通雙目相機和一片9250的imu數據,運行vins運行結果很差,飄的不行,這次試一下mynt相機採集的數據,雖然偶爾也會飄,但是總的來說比之前的體驗是好了很多.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章