BIT-MJY / Multiple_Lidar_Calibration

The code for calibration between lidars. (Chinese Version)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Multiple_Lidar_Calibration

Here is the source code for calibration between lidars. (Chinese Version)

双激光雷达联合标定

本次开源旨在为大家提供一个简洁快速的标定方法,已经在16-16线及16-32线雷达标定中验证其有效性。欢迎大家在此基础上二次开发,实现更优的标定方法。

依赖库

  • PCL 1.8
  • OpenCV 3.2
  • Ceres 1.14

数据准备

准备一个rosbag包,其中包含主雷达0、副雷达1的激光话题。激光数据包含矩形标定板在远中近三个距离下,绕X-Y-Z轴分别正负方向倾斜一定角度的激光点云

使用方式

克隆及编译

mkdir Multiple_Lidar_Calibration
cd Multiple_Lidar_Calibration/
mkdir src
cd src/
git clone https://github.com/BIT-MJY/Multiple_Lidar_Calibration.git
cd ..
catkin_make

运行

首先在rosbag包中提取标定板上的激光点云为pcd。
(1)修改Multiple_Lidar_Calibration/save_pcd/launch/save_pcd.launch文件中的shot_save_参数为全点云pcd保存目标位置。
(2)修改Multiple_Lidar_Calibration/save_pcd/launch/save_pcd.launch文件中的激光映射。

     <remap from="/rslidar_points_16" to="/rslidar_points_16" />
     <remap from="/rslidar_points_32" to="/rslidar_points_32" />

(3)运行下方命令,聚焦于弹出来的黑色方框,点击键盘“S”键,对激光点进行保存。注意,要保证远中近三个距离下(3),绕X-Y-Z轴分别正负方向倾斜一定角度(3x2=6),都保存到,每个要求保存两次,即为3x6x2=36张pcd文件。

rosbag play your_bag_containing_2_lidar.bag
roslaunch save_pcd save_pcd.launch 

shot_save_文件夹下可以看到后缀为0的主雷达(在这里对应rslidar_points_16)和后缀为1的副雷达(在这里对应rslidar_points_32)的全点云pcd。
(4)修改Multiple_Lidar_Calibration/save_pcd/launch/select_pcd.launch文件中的filename_pt_source与上面shot_save_一致。
(5)修改Multiple_Lidar_Calibration/save_pcd/launch/select_pcd.launch文件中的filename_pt_selected_det为标定板点云pcd保存目标位置。
(6)修改Multiple_Lidar_Calibration/save_pcd/launch/select_pcd.launch文件中的suffix_"_0.pcd"表示主雷达,"_1.pcd"表示副雷达,这里先设置为"_0.pcd"
(7)运行下方命令,聚焦于弹出来的显示点云的黑色窗口,按键盘X键后,框选只属于标定板区域的点云,在终端弹出的提示中选择是否保存。若选择不保存,则会重新弹出这一帧点云。

roslaunch save_pcd select_pcd.launch 

(8)循环结束后,将Multiple_Lidar_Calibration/save_pcd/launch/select_pcd.launch文件中的suffix_设置为"_1.pcd",再次运行

roslaunch save_pcd select_pcd.launch 

循环结束后,发现框选的所有点云均以主副雷达后缀区分的形式保存于filename_pt_selected_det文件夹中。
(9)修改Multiple_Lidar_Calibration/multi_lidar_calib/launch/multi_lidar_calib.launch文件中的extracted_path_filename_pt_selected_det一致。
(10)修改Multiple_Lidar_Calibration/multi_lidar_calib/launch/multi_lidar_calib.launch文件中的pcd_num_per_lidar_为每个雷达对应的pcd文件个数(per lidar)。
(11)运行下方命令,开展基于CERES的优化,获得标定结果。

roslaunch multi_lidar_calib multi_lidar_calib.launch 

修改

下个版本准备加入ICP细化,详见分支withICP

作者

北京理工大学智能车辆研究所,Junyi Ma

多雷达数据,contact:mjy980625@163.com

About

The code for calibration between lidars. (Chinese Version)

License:MIT License


Languages

Language:C++ 91.3%Language:C 4.8%Language:CMake 3.9%