其他分享
首页 > 其他分享> > Camera+IMU联合标定

Camera+IMU联合标定

作者:互联网

说明:

仅仅是自己根据别人 博客的理解,后面会根据数据进行详细的更新

 

一、安装Kalibr

1.1 安装依赖项

sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-devlibboost-all-dev doxygen libopencv-dev ros-indigo-vision-opencvros-indigo-image-transport-plugins ros-indigo-cmake-modulespython-software-properties software-properties-common libpoco-devpython-matplotlib python-scipy python-git python-pip ipython libtbb-devlibblas-dev liblapack-dev python-catkin-tools libv4l-dev
sudo -i
pip install python_igraph

1.2 创建工作空间

mkdir -p~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/indigo/setup.bash
catkin init
catkin config --extend /opt/ros/indigo
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release

1.3 下载并编译

cd ~/kalibr_workspace/src
git clone https://github.com/ethz-asl/Kalibr.git
 
cd ~/kalibr_workspace
catkin build -DCMAKE_BUILD_TYPE=Release -j4

1.4 设置环境变量

source ~/kalibr_workspace/devel/setup.bash

二、准备标定所需文件

2.1 标定板及其参数文件

标定板可以用 kalibr 提供的pdf, 里面有三种类型的标定板(Aprilgrid, Checkerboard, Circlegrid).具体信息及参数文件下载https://github.com/ethz-asl/kalibr/wiki/downloads(下载需要科学上网),我们这里采用的是Aprilgrid标定板。注意事项:打印标定板一定要打印全,不能为了追求实际尺寸只打印部分,否则会导致标定时初始化失败。打印完实际测量标定板参数,然后修改标定板参数文件。

2.2 .bag文件

 这是在连续时间获得的拍摄标定版的图像和IMU数据包,需要自己采集后再利用kalibr提供的一个工具去转化成.bag包。.bag文件的具体内容是:标定需要的图像以及相对应的imu数据。

可以使用 rosbag info XX.bag 来查看生成的bag文件情况(包括图片、IMU、时间数据等); 

当然,图像和IMU的数据也可以通过 文件的读取方式来获取,只要两者时间对齐就行!(个人比较喜欢后者

2.3 Camera参数文件

相机参数标定 :https://blog.csdn.net/hltt3838/article/details/108861487    

包含 相机的内参、畸变参数的文件,如果是双目的话,还包含两个相机的位置转换矩阵;Camera与IMU参数文件的标准格式参考https://github.com/ethz-asl/kalibr/wiki/yaml-formats

官网例子:Example chain.yaml

2.4 IMU参数文件 

imu 参数标定: https://blog.csdn.net/hltt3838/article/details/110385724

2.5 标定板参数参数 

target.yaml

tagCols   为标定格每行个数

tagRows 为标定格每列个数

tagSize  为标定格二维码边长,单位m

 

参考:https://github.com/ethz-asl/kalibr/wiki/calibration-targets

 

将标定板打印出来,置于平稳,光照充足的地方,注意要保持平整。使得相机与IMU位置相对固定,移动camera-IMU系统让IMU三个轴都被激活(不能只有转动,最好在转动的同时移动,确保加速度计也有输出)采集数据。参考:https://github.com/ethz-asl/kalibr 当需要的四个文件都有时,使用命令: 

kalibr_calibrate_imu_camera –target xx/target.yaml –cam xx/camchain.yaml –imu xx/imu.yaml –bag xx/xx.bag –bag-from-to 5 45

即可完成标定。(5-45表示取的标定数据长度,开始部分数据和结束部分可能会有晃动,把它去除)在背后加上 --time—calibration 可以标定IMU相对于camera的延时。

 

三、标定

cd  hltt3838/kalibr_workspace      //程序保存的路径

catkin_make

source  devel/setup.bash
kalibr_calibrate_imu_camera --target april_6x6_50x50cm.yaml --cam mynteye.yaml --imu imu.yaml --bag stereo_imu_calibra.bag

 

四、遇到的问题

2、 提示:“Spline Coefficient Buffer Exceeded. Set larger buffer margins”

在标定命令最后添加 --timeoffset-padding 0.1

3、图像和IMU过多导致计算量巨大,相机标定时可以降低图像topic发布的频率,而联合标定时不太需要处理,我做实验时近2000张图片,近20000条imu数据计算时间也不是很长。

4、优化失败,结果发散。猜测原因:bag包录制有问题,Camera与IMU参数文件中初始值不准确

 

五、标定实验结果

Timeshift表示的就是IMU相对于camera的延时;

参考文献

相机-IMU标定

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

matlab相机内参标定

https://www.cnblogs.com/li-yao7758258/p/5929145.html

yaml文件参数

https://blog.csdn.net/zhubaohua_bupt/article/details/80222321

.bag制作

https://blog.csdn.net/w492751512/article/details/81218618

https://blog.csdn.net/w492751512/article/details/81218618

 

https://blog.csdn.net/mxdsdo09/article/details/83514310

 

标签:标定,bag,Camera,IMU,https,imu,kalibr
来源: https://blog.csdn.net/hltt3838/article/details/111385735