ROS2 foxy 单目相机标定方法(笔记本电脑摄像头)

发布时间 2023-10-26 22:21:01作者: 滑稽果

环境:Ubuntu20.04、ROS2 foxy

相机标定使用的是棋盘格的内部顶点,因此 "12x9" 的棋盘板,其内部顶点参数为 "11x8"。

img

安装 Image Pipeline

安装相机标定所需软件包:

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

创建相机标定工作空间:

cd ~
mkdir -p camera_calibration/src

下载 Image Pipeline 源码:https://github.com/ros-perception/image_pipeline/tree/foxy

将下载的压缩包解压并放置于 camera_calibration/src 文件夹下。

编译软件包:

cd ~/camera_calibration
colcon build

下载打印标定板

打开链接:https://calib.io/pages/camera-calibration-pattern-generator

根据自己的需要设定标定板参数,然后下载下来打印在纸上,比如我的参数:

img

相机标定

启动相机节点,并将 topic 重映射为 /camera/iamge_raw:

cd ~/camera_calibration
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 -r /image:=/camera/image_raw

打开新终端,启动相机标定节点(标定板的参数需根据自己的实际情况设置):

cd ~/camera_calibration
source install/setup.bash
ros2 run camera_calibration cameracalibrator --size 11x8 --square 0.50 image:=/camera/image_raw camera:=/camera

窗口右侧的 x 对应左右方向的运动,y 对应上下方向的运动,size 对应接近/靠近相机,skew 对应倾斜姿态。

为了得到更好的标定结果,需要在相机视野范围内不断移动棋盘格,直到窗口右侧的 x,y,size,skew 显示条变绿,且 CALIBRATE 按钮变亮后,点击 CALIBRATE 按钮,大概会有一分钟左右的计算时间。

校准完成后,点击 SAVE 按钮保存标定文件,结果保存在 /tmp/calibrationdata.tar.gz 中。

根据标定数据配置单目相机参数

参数主要修改这些:

img

解压 /tmp/calibrationdata.tar.gz 压缩包,打开里面的 ost.yaml 文件,camera matrix 里的参数和 ORB_SLAM3 的参数对应关系是:

img

distortion_coefficients 里的参数和 ORB_SLAM3 对应的关系是:[k1 k2 p1 p2 k3]