Loading

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

环境:Ubuntu20.04、ROS2 foxy

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

img

安装 Image Pipeline

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

sudo apt install ros-foxy-camera-calibration-parsers
sudo apt install ros-foxy-camera-info-manager
sudo apt install ros-foxy-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 中。

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

可以将 ORB_SLAM3/Examples/Monocular 文件夹下的 TUM1.yaml 文件复制一份,然后修改复制后的这个文件,这个文件就可以作为你的单目相机的配置参数文件。参数主要修改这些:

img

解压 /tmp/calibrationdata.tar.gz 压缩包,打开里面的 ost.yaml 文件,camera_matrix 参数下的 data 对应 Camera1 前四个参数,distortion_coefficients 下的 data: [k1 k2 p1 p2 k3] 参数对应 Camera1 后五个参数。对应关系如下图,自行修改即可:

img

camera_matrix 的 data 参数对应关系:

\[\begin{bmatrix} fx & 0 & cx \\ 0 & fy & cy \\ 0 & 0 & 1 \end{bmatrix} \]

posted @ 2023-10-26 22:14  滑稽果  阅读(950)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end