This a ros package for multi lidar calibration improved qh's previous appearance-based work. Several method are to be implemented:
- PCL 1.8 (http://pointclouds.org/)
- Eigen 3
- Boost
- libpointmatcher (https://github.com/ethz-asl/libpointmatcher)
- Ceres-solver (http://ceres-solver.org/)
- YAML (https://github.com/jbeder/yaml-cpp)
Test on Ubuntu 16.04, ROS Kinetic
- Create a yaml file
cfg.yaml
into a fold, please follow ../data/example/top_tail/cfg.yaml to write - Preproces raw pointcloud to keep points with only planes. You can use the below function or CloudCompare software like this:
rosrun lidar_appearance_calibration calib_preprocess ../data/example/raw/ref.pcd ../data/example/raw/data.pcd ../data/example/raw/ref_filter.pcd ../data/example/raw/data_filter.pcd
- Extract planes from pointcloud
rosrun lidar_appearance_calibration calib_plane_extraction pcd ../data/example/top_front/cfg.yaml
rostopic pub /contact/icp std_msgs/String "data: ''"
rviz -d ../rviz/plane_extraction
- Visualize and check the extracted plane order
rosrun pcl_ros pcd_to_pointcloud ../data/example/top_front/plane/ref_planes.pcd 1
rosrun pcl_ros pcd_to_pointcloud ../data/example/top_front/plane/data_planes.pcd 1
rviz -d ../rviz/plane_extraction
- Implement ICP to minimize Plane-to-Plane error
- Auto initialization
rosrun lidar_appearance_calibration calib_icp ../data/example/top_front/ref_cfg.yaml ../data/example/top_front/data_cfg.yaml a
- Manual initialization
rosrun lidar_appearance_calibration calib_icp ../data/example/top_front/ref_cfg.yaml ../data/example/top_front/data_cfg.yaml m
- Call the program
rostopic pub /contact/save_plane std_msgs/String "data: ''"
- Auto initialization
- Visualize the calibration result
pcl_viewer ../data/example/top_front/merged_opt.pcd
To use the code, pleace cite this paper:
@article{jiao2019novel,
title={A Novel Dual-Lidar Calibration Algorithm Using Planar Surfaces},
author={Jiao, Jianhao and Liao, Qinghai and Zhu, Yilong and Liu, Tianyu and Yu, Yang and Fan, Rui and Wang, Lujia and Liu, Ming},
journal={arXiv preprint arXiv:1904.12116},
year={2019}
}