Kalibr联合标定Camera-IMU (总结)
Kalibr联合标定Camera-IMU
1. Kalibr安装
- 安装依赖库
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
- 创建工作空间
mkdir -p ~/catkin_kalibr/src
cd ~/catkin_kalibr/src
catkin_init_workspace
cd ..
catkin_make
echo "source ~/catkin_kalibr/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
cd ~/catkin_kalibr/src
git clone https://github.com/ethz-asl/Kalibr.git
cd ..
catkin_make
等待一段时间(20分钟左右),安装编译完成.
2. 制作标定板
使用aprilgrid标定板,可以使用kalibr自带工具自定义生成不同大小的标定板,命令行如下:
kalibr_create_target_pdf --type apriltag --nx [NUM_COLS] --ny [NUM_ROWS] --tsize [TAG_WIDTH_M] --tspace [TAG_SPACING_PERCENT]
// 例如
kalibr_create_target_pdf --type apriltag --nx 5 --ny 5 --tsize 0.025 --tspace 0.4
将以上命令生成的标定板PDF格式(例子使用的是A4纸大小),直接无缩放比例打印出来,就可以直接使用。
- 可能会出现问题
No moudule named pyx
译器报错,import不到pyx这个包(pyx这个python包用于产生pdf文件)
- 解决方法
输入一下命令安装即可,pip安装的话,没有效果,依旧存在错误,(很迷)
sudo apt-get install python-pyx
3. Camera标定
3.1采集数据
- 设置采样频率,并转换话题
制作好标定板之后,就可以使用相机对标定板进行拍摄,进行数据采集,相机要从多个角度对标定进行拍摄,这样相机pose要足够多。命令行如下:
rosrun topic_tools throttle messages /camera/rgb/image_color 5.0 /kinect
命令行中 topic_tools throttle 为ROS中改变 topic 发布频率的命令,通常设备采集频率为30Hz左右,这会使得标定的图像太多,急剧增加计算量,最好将 ros topic 降到 5hz左右进行数据采集。要确保图像不要模糊,运动不要太快!
- 制作rosbag
数据采集好了之后就可以进行 bag 的制作了,命令行如下:
rosbag record -O mono_calibra.bag /kinect
3.2开始标定
kalibr_calibrate_cameras --bag '/home/guofeng/mono_calibra.bag' --topics /kinect --models pinhole-equi --target april_5x5_25x10mm.yaml
3.3标定验证
可以使用calibration validator进行标定结果的验证,原理是对重投影误差进行量化分析。命令行如下:
kalibr_camera_validator --cam camchain.yaml --target april_5x5_25x10mm.yaml
命令行中 camchain.yaml 与 target.yaml 分别为上述中 camera 标定的结果以及标定板的 yaml 文件。
4. IMU标定
参见另一篇博客:IMU标定及Allan方差分析