利用calibration标定工作箱实现相机和激光雷达的联合标定,记录详细的操作过程以及标定的一些小细节,以备后用。
系统:ubuntu16.04
硬件:华硕ASUS Xtion相机
Velodyne 16线激光雷达
标定板:calibration工作包中有一张8*6的棋盘格图片,本文使用的是9*7的棋盘格格子边长12.5cm的硬纸板。
详细步骤如下:
1.数据包的记录
Autoware软件中提供了rosbag的功能,但我还是习惯用终端rosbag的方式记录数据。
1)首先将相机和激光雷达相对位置固定好,因为Velodyne16线激光雷达是横向360度的扫描,最好将相机位于激光雷达上部和下部,可以用其他架子固定。
2) 找好录取数据的地方,同时启动Velodyne三维激光雷达的节点,相机的节点,然后启动记录两个节点的数据。可以写成脚本的形式,三个脚本分别:run_laser.sh run_camera.sh run_record.sh 。
//run_laser
source /home/zbr/catkin_velodyne/devel/setup.bash
echo "run velodyne processing..."
roslaunch velodyne_pointclound VLP16_points.launch
sleep 1
wait
exit 0
//run_camera
echo "run ASUS_camera processing..."
roslaunch openni2_launch openni2.launch
sleep 1
wait
exit 0
//run_record
gnome-terminal -e 'bash -c "cd ~/bagfiles/;rosbag record -o cv_laser /camera/rgb/image_raw /velodyne_points /;seec bash"'
前两个脚本就是启动相应的驱动节点,第三个记录脚本先是进入到我存包的bagfiles文件中,然后记录图像和激光雷达两个节点的数据,并命名为cv_laser。记录过程中可以用RVIZ来查看图像信息和激光雷达数据是否正常。三维激光雷达数据量很大,通常录90多秒就接近3.3个G的包容量了。
注意:本文使用的不是单目相机,且rgb图像的分辨率不是很高,所以标定板距离设备的距离不要太远,使得标定板的面积尽量占的多一点,如果你使用的比较好的单目相机,可以分为近距离和远距离两种(3-7M)。在近远距离分别做五组动作,每个持续3-5秒,动作如下:
5个动作分别为:正向; 下俯; 上仰; 左偏; 右偏