Camera Calibration¶
本文讲解标定 相机内参、激光雷达与相机的外参。
Calibrating Camera Intrinsics¶
首先标定相机内参,安装 ROS 官方提供的用于单目或双目的标定的 camera_calibration
包:
对于 USB 相机,安装 usb_cam
驱动包,然后启动相机:
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
点云):
多个场景下的联合标定(需提供 .bmp 图片和 .pcd 点云):
.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