1. 程式人生 > >Kalibr 標定雙目內外引數以及 IMU 外引數

Kalibr 標定雙目內外引數以及 IMU 外引數

本文記錄使用 Kalibr 標定雙目相機內外引數以及和IMU之間外引數的標定過程. 採用的硬體裝置為小覓的雙目VIO裝置( MyntEYE), 並且預設你已經有了ROS的知識基礎.

標定 stereo-imu 之前, 需要知道雙目的內外引數, 所以先進行雙目內外引數的標定.

材料準備

安裝Kalibr (忽略)

準備標定板

標定板可以用 kalibr 提供的pdf, 裡面有三種類型的標定板(Aprilgrid, Checkerboard, Circlegrid). 由於Aprilgrid能提供序號資訊, 能夠防止姿態計算時出現跳躍的情況, 所以建議採用Aprilgrid進行標定.

我直接下載這個pdf, 將電腦螢幕當成了標定板, 在標定前, 注意測量格子的尺寸資訊填入yaml檔案, 尺寸資訊具體是哪些資料可以看看

kalibr的說明.

雙目內外引數的標定

資料採集

如果你已經有了通過 ROS 釋出 image 訊息的節點, 我們只需要使用 rosbag record 工具將拍攝到的標定板影象製作成 bag 檔案就行了. 注意: 通常裝置採集的頻率為 20-60 hz, 這會使得標定的影象過多, 而導致計算量太大. 最好將ros topic的頻率降低到4hz左右進行採集. (我採集裡200多張照片, 計算了估計有一兩個小時)

ROS 提供了改變 topic 釋出頻率的節點throttle, 指令如下 :

rosrun topic_tools throttle messages /mynteye/left/image_raw 4.0 /left

rosrun topic_tools throttle messages /mynteye/right/image_raw 4.0 /right

對左右目的ros topic降低頻率後就可以製作bag了

rosbag record -O stereo_calibra.bag /left /right

標定

採集好資料集以後, 就可以用已經安裝好的 Kalibr 標定雙目相機了, 指令如下:

source ros_ws/kalibr/devel/setup.bash
kalibr_calibrate_cameras --bag /home/heyijia/stereo_calibra.bag --topics /left /right --models pinhole-radtan pinhole-radtan --target /home/heyijia/april_6x6_80x80cm_A0.yaml

Stereo-IMU 外引數標定

資料採集

在標定完雙目內外引數以後, 可以接著標定和 IMU 之間的外引數了. 這次採用同樣的標定板, 採集資料的最佳頻率為影象20Hz, IMU 200 Hz (當然其他頻率也沒問題).

rosbag record -O stereo_imu_calibra.bag /mynteye/left/image_raw /mynteye/right/image_raw /mynteye/imu/data_raw

注意事項:

  1. 採集資料的起始和結束階段注意別晃動太大,如從桌子上拿起或者放下。如果有這樣的動作,在標定階段應該跳過bag資料集的首尾的資料.
  2. 採集資料的時候應該給imu各個軸足夠的激勵,如先依次繞各個軸運動,運動完後來個在空中畫8字之類的操作,當然也要注意別運動太劇烈,影象都模糊了。

標定

標定 stereo-imu 外引數時,需要利用前面標定好stereo內外引數檔案camchain-homeheyijiastereo_calibra.yaml,標定指令如下:

 kalibr_calibrate_imu_camera --target /home/heyijia/april_6x6_80x80cm_A0.yaml --cam /home/heyijia/camchain-homeheyijiastereo_calibra.yaml --imu /home/heyijia/imu_mynteye.yaml --bag /home/heyijia/stereo_imu_calibra.bag --bag-from-to 2 37