• Stars
    star
    172
  • Rank 221,201 (Top 5 %)
  • Language
    C++
  • Created almost 2 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Point cloud map evaluation library for the FusionPortable dataset. Metrics include Mean Map Entropy (MME), RMSE, Accuracy(mean error), Precision(standard deviation), completeness(overlap ratio), chamfer distance and F1-score at all levels of 1/2/5/10/20cm.

Cloud Map Evaluation

Point cloud map evaluation library for the FusionPortable dataset. The Metrics include RMSE, Accuracy(mean error), Precision(standard deviation), Completeness(overlap ratio), Chamfer distance(CD) and F1-score at all levels of 1/2/5/10/20cm. For those do not have ground truth maps, we use Mean Map Entropy (MME).

Author: Xiangcheng HU, Jiaojian Hao, Tianshuai HU.

Dependencies

Test Data(password: 1)

sequence Test PCD GT PCD
MCR_slow map.pcd map_gt.pcd
FusionPortable Dataset

Usage

  1. install open3d. (maybe a higer version of CMake is needed)
git clone https://github.com/isl-org/Open3D.git
cd Open3D && mkdir build && cd build   
cmake ..
make install
  1. install cloud_map_eval
git clone https://github.com/JokerJohn/Cloud_Map_Evaluation.git
cd Cloud_Map_Evaluation/cloud_map_eval && mkdir build
cmake ..
./cloud_map_eval
  1. set some params
double icp_max_distance = 0.5;             // max correspondence pairs distance for  knn search in icp
int method = 2;                            // 0:point-to-point icp 1:point-to-plane icp 
Vector5d accuacy_level = Vector5d::Zero();   // set evaluatation accucay level, eg. 20cm/10cm/5cm/2cm/1cm
accuacy_level << 0.2, 0.1, 0.05, 0.02, 0.01;  //  do not recommand to change this

Eigen::Matrix4d initial_matrix = Eigen::Matrix4d::Identity();   // initial pose for your map

// the path dir must end with '/'
std::string est_path, gt_path, results_path, sequence_name;
std::string est_folder = "/home/xchu/my_git/Cloud_Map_Evaluation/cloud_map_evaluation/dataset/";
sequence_name = "MCR_slow";
est_path = est_folder + sequence_name + "/";
gt_path = est_folder + sequence_name + "/" + sequence_name + "_gt.pcd";
results_path = est_folder + sequence_name + "/";
  1. get the final results

we have a point cloud map generated by a pose-slam system, and we have a ground truth point cloud map. Then we caculate related metrics.

image-20240127212931498

We can also get a rendered raw distance-error map(10cm) and inlier distance-error map(2cm) in this process, the color R->G->B represent for the distance error at a level of 0-10cm.

image (4)

if we do not have gt map, we can evaluate the Mean Map Entropy (MME). LEFT: -3.78477, RIGHT: -4.66876.

image-20240127213301387

we can also get a simpe mesh reconstructed from point cloud map.

image-20230101200651976

  1. we got the result flies.

image-20240127213557574

TO DO

  • add python script to plot the results.

Issues

How do you get your initial pose?

we can use CloudCompare to align LIO map to Gt map .

  • Roughly translate and rotate the LIO point cloud map to the GT mapใ€‚

  • Manually register the moved LIO map (aligned) to the GT map (reference), and get the output of the terminal transfrom T2, then the initial pose matrix is the terminal output transform T.

image-20230106135937336

image-20230106140017020

What's the difference between raw rendered map and inlier rendered map?

The primary function of the raw rendered map (left) is to color-code the error of all points in the map estimated by the algorithm. For each point in the estimated map that does not find a corresponding point in the ground truth (gt) map, it is defaulted to the maximum error (20cm), represented as red. On the other hand, the inlier rendered map (right) excludes the non-overlapping regions of the point cloud and colors only the error of the inlier points after point cloud matching. This map therefore contains only a portion of the points from the original estimated map.

image-20240127131202244

Publications

We kindly recommond to cite our paper if you find this library useful:

@inproceedings{jiao2022fusionportable,
  title        = {Fusionportable: A multi-sensor campus-scene dataset for evaluation of localization and mapping accuracy on diverse platforms},
  author       = {Jiao, Jianhao and Wei, Hexiang and Hu, Tianshuai and Hu, Xiangcheng and Zhu, Yilong and He, Zhijian and Wu, Jin and Yu, Jingwen and Xie, Xupeng and Huang, Huaiyang and others},
  booktitle    = {2022 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
  pages        = {3851--3856},
  year         = {2022},
  organization = {IEEE}
}

More Repositories

1

LIO_SAM_6AXIS

LIO_SAM for 6-axis IMU and GNSS.
C++
616
star
2

PALoc

[TMECH'2024] Official codes of the paper. PALoc: Advancing SLAM Benchmarking with Prior-Assisted 6-DoF Trajectory Generation and Uncertainty Estimation
C++
161
star
3

MS-Mapping

[ICRA@40] MS-Mapping: An Uncertainty-Aware Large-Scale Multi-Session LiDAR Mapping System
150
star
4

UpdatingHDmapByMonoCamera

Updating HD map with RTK-GPS and monocular camera
Python
147
star
5

opensource_slam_noted

open source slam system notes
C++
146
star
6

LIO-SAM-6AXIS-INTENSITY

LIO-SAM-6AXIS with intensity image loop optimization
C++
86
star
7

xchu_slam

a lidar slam system based on multiple loop detection methods and gps.
C++
80
star
8

SLAMTools

A script toolkit for SLAM research, including but not limited to various plotting functions, ROS bag processing, and more.
Python
79
star
9

PRCV-VSLAM-Challenge-2022

PRCV 2022: The FusionPortable-VSLAM Challenge
Python
72
star
10

FL2SAM_GPS

large-scale mapping system based on FAST-LIO2 and GNSS for Outdoor environment
48
star
11

Robust_LIO_Localization

Lidar localization system with prior map constraint and lio constraint based on GTSAM
47
star
12

GL-Calib

GLCalib: GNSS-LiDAR Extrinsic Calibration and Observability Analysis
42
star
13

MS-Dataset

Large scale LiDAR-IMU dataset
42
star
14

LIO-SAM-6AXIS-VLOOP

LIO-SAM-6AXIS with visual loop detection
30
star
15

gps_based_slam

from vins-fusion, only for test
C++
24
star
16

NDT_Lib

ๅ„็ง็‰ˆๆœฌ็š„NDTๅŠจๆ€ๅบ“
C++
23
star
17

AM_Align

[TIM'2024] AM-Align: Globally Optimal Estimation of Accelerometer-Magnetometer Misalignment
19
star
18

G-LIO

15
star
19

xchu_odom

xchu odom
C++
15
star
20

bilibli_notes3

ๆ”ปๅŸŽ็‹ฎไน‹ๅฎถB็ซ™่ฏพไปถๅˆ้›†3
Jupyter Notebook
15
star
21

kalman_filter

a lidar and radar fusion project from udacity
C++
14
star
22

vehicle_description

vehicle description from Autoware
CMake
13
star
23

lda

LiDAR Degenercy Analysis
9
star
24

map_tools

grid map divider and viewer
C++
7
star
25

XCHU_Recipe

my own recipes
7
star
26

LIO-SAM-6AXIS-Color

A simple implement for point cloud map RGB rendering with LIO-SAM-6AXIS
5
star
27

JokerJohn

3
star
28

lio_mapping_2023

lio-mapping algorithm adapted for various datasets.
3
star
29

lie

forked from https://bitbucket.org/jmangelson/lie/src/master/
1
star