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

2021-08-30 13:28:46 字數 2298 閱讀 9695

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

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

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

如果你已經有了通過 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

rosrun kalibr 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

或者採用 pinhole-equi 模型,對畸變大的相機效果不錯

rosrun kalibr kalibr_calibrate_cameras --bag /home/heyijia/stereo_calibra.bag --topics /left /right --models pinhole-equi pinhole-equi --target /home/heyijia/april_6x6_80x80cm_a0.yaml

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

rosbag record -o stereo_imu_calibra.bag /mynteye/left/image_raw /mynteye/right/image_raw /mynteye/imu/data_raw
注意事項:

採集資料的起始和結束階段注意別晃動太大,如從桌子上拿起或者放下。如果有這樣的動作,在標定階段應該跳過bag資料集的首尾的資料.

採集資料的時候應該給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
標定過程中,如果提示不能得到初始焦距的時候,可以設定:export kalibr_manual_focal_length_init=1。然後執行程式,當程式執行失敗的時候,它會提示要你手動輸入乙個焦距,initialization of focal length failed. provide manual initialization: 這時你手動輸入比如 400。給比較大的值,也能收斂。

雙目立體視覺 雙目標定(內參和外參)

目的 求左右相機內引數矩陣m 畸變係數矩陣d 右攝像頭相對於左攝像頭的平移向量 t和旋轉矩陣r.步驟 1.左右分別單目標定 m d 焦距,影象中心 fx,fy,cx,cy 畸變係數 k1,k2,p1,p2,k3 和 2.求右攝像頭向左攝像頭的平移向量 t 和旋轉矩陣 r.原理 以上引數為 接下來的立...

安裝kalibr標定IMU Ubuntu16 04

參考 building from source前提是安裝了ros kinetic和catkin工作空間。1.從原始碼安裝工具箱 安裝ros indigo see ros.org for more information 在ubuntu 16.04安裝ros kinetic sudo sh c ech...

opencv雙目標定

有 解釋 opencv有自帶的雙目標定例子。下邊opencv雙目相機校正的 是在自帶的程式stereo calib.cpp基礎上修改的,位置在 xx opencv sources samples cpp 使用時拷貝目錄下的26張和stereo calib.xml到當前工程目錄下,並在工程除錯 命令引...