Skip to content

Camera Calibration

本文讲解标定 相机内参、激光雷达与相机的外参。

Calibrating Camera Intrinsics

首先标定相机内参,安装 ROS 官方提供的用于单目或双目的标定的 camera_calibration 包:

Bash
sudo apt install ros-noetic-camera-calibration
# or: rosdep install camera_calibration

对于 USB 相机,安装 usb_cam 驱动包,然后启动相机:

Bash
sudo apt install ros-noetic-usb-cam
roslaunch usb_cam usb_cam-test.launch

usb_cam 包也可手动下载编译。对于 ROS1 版本:

Bash
sudo apt install libv4l-dev
cd catkin_ws/src
git clone https://github.com/ros-drivers/usb_cam.git -b develop
cd ../ && catkin_make

一般来讲,相机的图像流话题为 usb_cam/image_raw ,可通过 rostopic list 查看。

启动标定节点:

Bash
rosrun camera_calibration cameracalibrator.py --size 7x10 --square 0.015 image:=/usb_cam/image_raw

注意上述命令 --size 参数为棋盘格焦点个数。例如使用 8x11 的棋盘格,则角点个数为 7x10

在标定程序界面中,上下左右前后移动棋盘格,保证棋盘格在各个位置出现。等待上方 X, Y, Size, Skew 四条线都变绿色,点击下方 CALIBRATE 按钮开始标定,此过程较慢,需等待两分钟。

标定完成后,终端会输出标定结果的信息。也可点击 SAVE 按钮,标定结果默认保存在 /tmp/calibrationdata.tar.gz ,请及时复制到其他目录下,以防 Ubuntu 系统误清理临时文件。

Calibrating LiDAR-Camera Extrinsincs

使用 Github 项目 hku-mars/livox_camera_calib.

首先安装依赖:

Bash
sudo apt install ros-noetic-cv-bridge ros-noetic-pcl-conversions
sudo apt install libeigen3-dev
sudo apt install libceres-dev
sudo apt install libpcl-dev

克隆仓库并编译:

Bash
cd ~/catkin_ws/src
git clone https://github.com/hku-mars/livox_camera_calib.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash

开始标定前,修改 config/ 目录下的 .yaml 配置文件,指定 图片与点云文件的路径、输出结果文件的路径、前面已经测得的相机内参。

单个场景下的标定(需提供 .png 图片和 .pcd 点云):

Bash
roslaunch livox_camera_calib calib.launch

多个场景下的联合标定(需提供 .bmp 图片和 .pcd 点云):

Bash
roslaunch livox_camera_calib multi_calib.launch

.png 图像、 .pcd 点云文件可由录制了点云话题的 .bag 包处理得到:

Bash
# 首先启动 LiDAR
roslaunch livox_ros_driver2 rviz_MID360.launch rviz_enable:=false
rosbag record -O xxx.bag /livox/lidar --duration=20
roslaunch livox_camera_calib bag_to_pcd.launch

# 启动相机
roslaunch usb_cam usb_cam.launch
rosrun image_view image_saver image:=/usb_cam/image_raw _filename_format:="0.png" _save_all:=false

Comments