萌新談相機與IMU的標定

萌新談相機與IMU的標定

1 人贊了文章

本文主要包括相機標定和imu_camera 標定,另附上imu標定文章(非本人)。

先從攝像頭的標定開始講起吧,SLAM新手上路,第一個要玩的肯定是ORBSLAM,光跑數據肯定不夠過癮啊,所以就要用自己的攝像頭轉一圈。下面進入正題,

前提條件:一個筆記本,一個能用攝像頭(單目或者雙目)

1.相機標定--opencv

camera_calibration - ROS Wiki?

wiki.ros.org

其實wiki上已經介紹的夠清楚的了,先下載image_pipeline的源碼,然後下載一張棋盤紙

rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/my_camera/image camera:=/my_camera

size 是指棋盤內部角點個數,我是用的標定板公有8x6個角點(即8列6行),square指方形的邊長,image為輸出圖像的話題,camera為相機的名稱(即在/image_raw前面部分)。比如我的無人機是ardrone2.0.運行起來應該是

rosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_rawosrun cameracalibration cameracalibrator.py --size 8x6 --square 0.108 image:=/ardrone/front/image_raw

但是再此之前別忘了檢查一下你的topic名字,可以輸入

rostopic list

對於的我的無人機來說,還需要運行一個驅動launch文件

roslaunch ardrone_autonomy ardrone.launch

然後你可以看到這個東西,

步驟就是左三圈右三圈,上三圈下三圈,換個姿勢再來幾圈.........

當標定完成的時候,那個calibrate 按鈕會變藍,然後你可以點擊保存和commit。這樣就會生成一個yaml文件。最後標定就完成啦!

二.相機標定--matlab

關於如何用matlab標定我就不贅述了,因為我自己沒有親自操作過,這裡附上幾篇文章,僅供參考

MATLAB標定工具箱的使用 - CSDN博客?

blog.csdn.net圖標

三.相機與imu標定

這裡用到的是大名鼎鼎ethz 開發的kalibr

https://github.com/ethz-asl/kalibr?

github.com

這個kalibr有兩個版本,一個是比較全的版本,但是裡面包比較多,一開始嘗試去編譯這個,結果電腦不爭氣,編譯一直卡死。所以後來我就用這個CDE版本。

ethz-asl/kalibr?

github.com圖標

關於如何使用這個版本,下面這個鏈接裡面的視頻已經講的很清楚了。(需要翻牆)

https://www.youtube.com/watch?v=puNXsnrYWTY&app=desktop?

www.youtube.com

我把主要的命令寫一下,方便大家複製。

標定紙:drive.google.com/file/d

yaml文件:drive.google.com/file/d

別忘了修改yaml文件裡面的參數,比如格的邊長和行列數。具體情況根據你標定板大小而定。

(1)錄製一個rosbag

rosbag record /ardrone/front/image_raw /ardrone/imu

一個是你相機的topic,另一個是imu的topic。

然後拿著你的設備對準標定板,先是pitch三次,yaw三次,roll三次,up and down三次,左右三次,然後再隨意換幾個姿勢。標定時間按視頻裡面說,要小於60s。錄製完成之後再保存。

下一步就是去下載剛才那個cde版本,如果你的電腦足夠牛的話,可以用比較全的版本

ethz-asl/kalibr?

github.com圖標

安裝依賴項sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencv ros-indigo-image-transport-plugins ros-indigo-cmake-modules python-software-properties software-properties-common libpoco-dev python-matplotlib python-scipy python-git python-pip ipython libtbb-dev libblas-dev liblapack-dev python-catkin-tools libv4l-dev sudo pip install python-igraph --upgrade創建一個catkin 工作空間mkdir -p ~/kalibr_workspace/src cd ~/kalibr_workspace source /opt/ros/indigo/setup.bash catkin init catkin config --extend /opt/ros/indigo catkin config --merge-devel # Necessary for catkin_tools >= 0.4. catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release把kabibr放到工作空間里cd ~/kalibr_workspace/src git clone https://github.com/ethz-asl/Kalibr.git編譯cd ~/kalibr_workspace catkin build -DCMAKE_BUILD_TYPE=Release -j4這個時間會很長,你可以來盤王者或者吃雞等一會,有可能你的電腦會像我的一樣卡死,那就比較尷尬了。最後別忘了source一下路徑source ~/kalibr_workspace/devel/setup.bash

其實到這裡差不多已經準備就緒了,但是為了防止出現意外,我們最好先運行一下example測試一下環境。

下載這個數據集,把它放進之前的kalibr-cde文件夾下面

https://drive.google.com/file/d/0B0T1sizOvRsUcGpTWUNTRC14RzA/edit?

drive.google.com

./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam camchain.yaml --imu imu_adis16448.yaml --bag dynamic.bag --bag-from-to 5 45

假如example數據能跑通,說明kalibr工具準備好了,下面開始進入真實環境下的標定過程

(1)

上面那個example你應該可以發現,運行標定程序後面跟著四個文件,第一個是棋盤文件,就是之前需要修改的那個yaml文件,第二個是相機內參文件(這裡的內參文件和之前ros獲得的文件不同,需要用kalibr單獨獲得),第三個是imu雜訊文件,第四個是之前我們錄製好的rosbag

(2)

現在未獲得的只有第二個camchain文件,所以先播放一下rosbag看看有沒有問題

roscore&&rosbag play xxx.bag

在播放的過程中,檢查一下是否有相機和imu話題 rostopic list

(3)

cd kalibr-cde

./kalibr_calibrate_cameras --target april6x6.yaml --bag xxxx/xxx.bag --models pinhole-equi --topics /ardrone/front/image_raw

結束之後會得到一個report和pdf文件。

(4)

在做這一步之前。找到kalibr_calibrate_imu_camera文件,注釋掉以下幾行

#delete old resultsrm -f $HERE/*.pdf 2> /dev/nullrm -f $HERE/*.yaml 2> /dev/nullrm -f $HERE/*.txt 2> /dev/nullrm -f $HERE/*.bag 2> /dev/nullrm -rf $HERE/cde-root/output* 2> /dev/null

./kalibr_calibrate_imu_camera --target april_6x6.yaml --cam 之前獲得的相機文件.yaml --imu imu_adis16448.yaml --bag 錄製的bag路徑(比如example中的dynamic/dynamic).bag --bag-from-to 5 45

然後等待一會,就生成report啦!

如果有問題或者發現文章中有什麼錯誤可以私信或者留言,我都會回答的,雖然我自己也不怎麼會。

最後附上幾篇能用到的文章

雙目imu相機標定:雙目相機與IMU camera IMU 聯合標定工具箱使用方法--Kalibr

港科大imu標定工具: gaowenliang/imu_utils,相關的專欄文章介紹:Imu_tk演算法流程

cache.freescale.com/fil

vectornav.com/support/l

Department of Computer Science and Technology


推薦閱讀:

TAG:同時定位和地圖構建SLAM | 視覺慣性里程計VIO |