参考:
双目相机与IMU camera IMU 联合标定工具箱使用方法——Kalibr
官方推荐教程:DIY Indoor Autonomous Drone! - Part 2 (Kalibr & Calibration) (需要自行FQ)
官方上是跑在ros indigo上的,但是实测用kinetic也没问题,主要就是装依赖的时候改下名字(下面命令行里有写注释)
1 工具箱 Kalibr 安装
官网:https://github.com/ethz-asl/kalibr
安装官网:https://github.com/ethz-asl/kalibr/wiki/installation
采用第二种——原码编译的方式安装
- 安装依赖
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-kinetic-vision-opencv ros-kinetic-image-transport-plugins ros-kinetic-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 # 注意把官网的indigo换成kinetic
sudo pip install python-igraph --upgrade # 这个一开始没装,后来使用过程中提示少igraph
- 新建一个workspace,或者在已存在的workspace中进行
cd src/
git clone https://github.com/ethz-asl/Kalibr.git
- build(这步久一点)
cd <workspace>
catkin build -DCMAKE_BUILD_TYPE=Release -j4
- source
source ~/kalibr_workspace/devel/setup.bash
2 使用Kalibr标定
以https://github.com/ethz-asl/kalibr/wiki/downloads的Sample datasets中IMU-camera calibration为例(需要自行FQ下载,当然也可以不跑这个example,只是为了熟悉流程查看效果):
- 相机标定(以只标定1个camera为例)
kalibr_calibrate_cameras --target april_6x6.yaml --bag dynamic.bag --models pinhole-equi --topics /cam0/image_raw
- imu+相机(可以只用上面生成的1个camera信息,压缩包里自带的是2个cam的信息)
kalibr_calibrate_imu_camera --target april_6x6.yaml --bag dynamic.bag --cam camchain-dynamic.yaml --imu imu_adis16448.yaml
自己使用时:
(要先打印好april tag,并更改april、imu的yaml文件,并确定好自己需要的topic名称,打开相机和imu)
- 录制rosbag
# 可以只录制需要的topics(在这里是/camera/color/image_raw和/imu),并命名为topics.bag
rosbag record -O topics /camera/color/image_raw /imu
# 若录制全部topics
rosbag record -a
- 可以查看录制的topics.bag
rosbag play topics.bag
然后用rosrun rivz rviz
、rostopic echo /imu
等方式查看录制的rosbag
- 相机标定 及 imu+相机标定 见上面,改成自己的文件即可
3 另一种相机标定方法:camera_calibration
此方法只用于标定相机,而kalibr可用于相机和imu的联合标定
- 安装
sudo apt-get install ros-kinetic-camera-calibration
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/my_camera/image camera:=/my_camera
标定过程非常方便直观且较准确
4 也可以直接看相机参数
realsense相机出厂时标定过参数,可以通过以下方法查看:(对于realsense D435)
- 打开相机
roslaunch realsense2_camera rs_camera.launch
- 查看相应相机的信息
rostopic echo /camera/color/camera_info
5 相机信息
-
内参矩阵A:(cx,cy)为主光轴点,一般为图像的中心;fx和fy为焦距
- 畸变参数向量:[k1,k2,p1,p2]