标定环境
利用ros的image_pipeline软件包实现对相机的标定。相机标定使用的是棋盘格的内部顶点,因此 "12x9" 的棋盘板,其内部顶点参数为 "11x8" 如下例所示。
软件包安装
安装相机标定所需软件包
sudo apt install ros-galactic-camera-calibration-parsers
sudo apt install ros-galactic-camera-info-manager
sudo apt install ros-galactic-launch-testing-ament-cmake
下载image_pipline,放入ros工程
进入ros工程:
cd ~/ros2_ws/src
下载Image Pipeline软件包源码:
git clone –b galactic git@github.com:ros-perception/image_pipeline.git
如果失败可直接到github下载相关源码。
编译软件包,并添加环境变量
cd ~/ros2_ws
colcon build
source install/setup.bash
相机标定
启动相机节点:
ros2 run image_tools cam2image --ros-args -p width:=640 -p height:=480 -p frequency:=30.0 -p device_id:=-1
cam2image 节点发布图像的topic为 /image,如果想将topic重映射为/camera/iamge_raw,则采用如下命令
ros2 run image_tools cam2image --ros-args -p width:=640 -p height:=480 -p frequency:=30.0 -p device_id:=-1 -r /image:=/camera/image_raw
启动相机标定节点:
ros2 run camera_calibration cameracalibrator --size 11x8 --square 0.50 image:=/camera/image_raw camera:=/camera
标定板的参数需根据自己的实际情况设置。节点启动后会弹出一个窗口,窗口右侧有x,y,size,skew显示条,以及calibrate,save,commit按钮。
在相机视野范围内不断移动棋盘格,变化棋盘格姿态,使得棋盘到达相机视野左侧、右侧、顶部和底部。x,y,size分别对应标定板相对于相机的运动:x对应左右方向的运动,y对应上下方向的运动,size对应接近/靠近相机,skew对应倾斜姿态。
随着棋盘格的不断移动和变换姿态,标定窗口右侧x,y,size,skew对应的4个横条的长度会不断增长。当横条都变成绿色表示数据满足标定条件,此时,“CALIBRATE”按钮将会变亮,单击进行标定。标定完成后保存和提交按钮变亮。点击保存按钮后,结果自动保存到/tmp/calibrationdata.tar.gz中。