一 karlibr的安装
1)安装依赖
sudo apt-get install python-setuptools python-rosinstall ipython libeigen3-dev libboost-all-dev doxygen libopencv-dev ros-melodic-vision-opencv ros-melodic-image-transport-plugins ros-melodic-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
2)创建工作区间
mkdir -p ~/kalibr_workspace/src
cd ~/kalibr_workspace
source /opt/ros/melodic/setup.bash
catkin init
catkin config --extend /opt/ros/melodic
catkin config --merge-devel # Required for catkin_tools >= 0.4.
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
3)安装kalibr
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
到这里第一步kalibr安装完成
二 下载标定板
官网上的试过很多次,无法下载,所以选择自己创建标定版
1)创建二维码格式的棋盘
kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.088 --tspace 0.3
这一步运行完会生成标定板图片 .pdf格式。
2)需要自己创建标定板的yaml参数文件
touch aprilgrid.yaml
参数文件内容如下
target_type: 'aprilgrid' #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.088 #size of apriltag, edge to edge [m]
tagSpacing: 0.3 #ratio of space between tags to tagSize
3)将标定板图片打印出来后,用尺子测量一下图中二维码的边长,对aprilgrid.yaml 文件进行修改。
二维码的边长对应tagsize,我这里测出来的二维码边长是2.45cm,即0.024m。
小方格的边长是0.75cm。
tagSpacing=0.75/2.45=0.3
修改参数文件名april_6x6.yaml,和内容:
target_type: 'aprilgrid' #gridtype
tagCols: 6 #number of apriltags
tagRows: 6 #number of apriltags
tagSize: 0.024 #size of apriltag, edge to edge [m]
tagSpacing: 0.3 #ratio of space between tags to tagSize
三 开始进行录制数据
1)启动zed相机节点 没什么好说的
roslaunch zed_wrapper zed.launch
2)zed相机通常以60Hz左右的频率进行录制,而kalibr标定又要求频率不能过高,所以进行降帧,频率设为4hz
rosrun topic_tools throttle messages /zed/zed_node/left/image_rect_color 4.0 /zedl
rosrun topic_tools throttle messages /zed/zed_node/right/image_rect_color 4.0 /zedr
3)录制数据之前,推荐打开rviz,加入image,可以确保标定板始终在相机视野内
rosrun rviz rviz
4)开始录制标定bag文件
rosbag record -O zedlr1.bag /zedl /zedr
这里通过官网上的介绍,应该是按照pyr三个轴进行旋转,包括左右上下平移,录制时长我是保持在接近两分钟的样子。
5)查看录制的文件
rosbag info zedlr1.bag
显示以下信息:
lijing@lijing:~/kalibr_workspace$ rosbag info zedlr1.bag
path: zedlr1.bag
version: 2.0
duration: 1:52s (112s)
start: Apr 30 2022 17:16:28.10 (1651310188.10)
end: Apr 30 2022 17:18:20.97 (1651310300.97)
size: 2.9 GB
messages: 848
compression: none [848/848 chunks]
types: sensor_msgs/Image [060021388200f6f0f447d0fcd9c64743]
topics: /zedl 424 msgs : sensor_msgs/Image
/zedr 424 msgs : sensor_msgs/Image
四 开始进行双目标定
利用kalibr进行相机标定
rosrun kalibr kalibr_calibrate_cameras --bag zedlr1.bag --topics /zedl /zedr --models pinhole-radtan pinhole-radtan --target april_6x6.yaml
显示以下信息则说明标定完成:
All views have been processed.
Starting final outlier filtering...
Progress 96 / 96 Time remaining:
..................................................................
Calibration complete.
标定完成后,会产生3个文件:
作用:
.yaml 主要作用为了后期IMU+相机联合标定
.pdf 以图的方式显示效果
.txt 含有相机的内参以及重投影误差
总结:其实zed相机自带标定程序,标定后的结果在usr/local/zed/settings
中,但是为了后期联合imu进行标定,kalibr 工具还是得会应用。
参考的帖子有:
ZED2相机标定–双目、IMU、联合标定
Kalibr 标定双目内外参数以及 IMU 外参数
学习Kalibr工具–Camera标定过程
VIO测试准备——使用imu_utils和kalibr进行相机与IMU标定