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_make
pointcloud_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_results
file, 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