This code implements the metrics for vSLAM map (pointcloud) quality estimation as in our SibCon 2021 paper. If you use this code in your research, please cite this paper: TBA.
- Robot operating system (ROS) >= Kinetic
- PCL Library > 1.8
- Octomap package
- Install the pre-requesites
TBA- Clone the package into your catkin workspace and make the package
roscd && cd src
git clone https://github.com/CnnDepth/slam_comparison.git
cd .. && catkin_makepointcloud_subscriber - the node that subscribes to PointCloud topic, receives pointcloud from it, and saves this pointcloud to file
Usage
- Run
rosrun pointcloud processing pointcloud_subscriber <pointcloud topic> <coordinates file> <colors file>
- When pointcloud is received, press Ctrl-C to interrupt subscriber and save the pointcloud.
Example
rosbag play sample_from_robot.bag
roslaunch rtabmap_ros rtabmap.launch
rosrun pointcloud_processing pointcloud_subscriber /octomap_occupied_space ./pcd_data/points.txt ./pcd_data/colors.txt
pointcloud_publisher - the node that publishes pointcloud which is stored on disk
Usage
rosrun pointcloud_processing pointcloud_publisher <point_topic> <coordinates file> <colors file>
Example
rosrun pointcloud_processing pointcloud_publisher /cloud ./pcd_data/points.txt ./pcd_data/colors.txt
octomap_processing - the node that takes ground truth and SLAM-builded pointcloud and trajectory, and computes our AME metric of them
Usage
- Run
rosrun pointcloud_processing octomap_processing <path_to_read_pcds> <metric> <pose_choice> <path_to_save_results>
where
path_to_read_pcds - the directory with ground-truth and SLAM-builded pointcloud and trajectory. They must be stored as gt_points.txt, gt_poses.txt, slam_points.txt, slam_poses.txt respectively in this directory
metric - the kind of metric to compute, abs or rel
pose_choice - choice of visibility moment t for each point (see the paper). Can be first, last, nearest of all
path_to_save_results - the path where to store found correspondences between ground-truth and SLAM-builded points
- Take a cup of coffee and wait for results. When node finishes, the correspondences will be stored at
path_to_save_resultsfile, and metric value will be written to console asMean distance: 0.735
Example
rosrun pointcloud_processing octomap_processing ./sample1/data abs nearest ./sample1/results.txt