• Stars
    star
    476
  • Rank 88,943 (Top 2 %)
  • Language
    C++
  • Created over 3 years ago
  • Updated over 2 years ago

Reviews

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

Repository Details

Remove then revert (IROS 2020)

Removert

What is removert?

  • Static map construction in the wild.
  • A dynamic points removing tool by constructing a static map
  • The name is from the abbreviation of our title "Remove-then-revert" (IROS 2020): paper, video

What can we do using removert?

  • We can easily construct and save a static map.
  • We can easily parse dynamic points

Example

Preparations

  • Step 1: Get a set of LiDAR scans and corresponding poses by running any open source LiDAR odometry or SLAM algorithm (e.g., pose-and-scan saver of SC-LIO-SAM or pose-and-scan saver of SC-A-LOAM)
  • Step 2: Make a pair of a scan's point cloud and a corresponding pose using associated timestamps. We note that you need to save a scan as a binary format as KITTI and the pose file as a single text file where SE(3) poses are written line-by-line (12 numbers for a single line), which is also the equivalent format as KITTI odometry's ground truth pose txt file.

Requirements

  • Based on C++17
  • ROS (and Eigen, PCL, OpenMP): the all examples in this readme are tested under Ubuntu 18.04 and ROS Melodic.
  • FYI: We uses ROS's parameter parser for the convenience, despite no topic flows within our system (our repository currently runs at offline on the pre-prepared scans saved on a HDD or a SSD). But the speed is fast (over 10Hz for a single removing) and plan to extend to real-time slam integration in future.

How to use

  • First, compile the source
$ mkdir -p ~/catkin/removert_ws/src
$ cd ~/catkin/removert_ws/src
$ git clone https://github.com/irapkaist/removert.git
$ cd ..
$ catkin_make
$ source devel/setup.bash
  • Before to start the launch file, you need to replace data paths in the config/params.yaml file. More details about it, you can refer the above tutorial video (KITTI 09)

  • Then, you can start the Removert

$ roslaunch removert run_kitti.launch # if you use KITTI dataset 
 or
$ roslaunch removert run_scliosam.launch # see this tutorial: https://youtu.be/UiYYrPMcIRU
  • (Optional) we supports Matlab tools to visulaize comparasions of original/cleaned maps (see tools/matlab).

Further Improvements

  • We propose combining recent deep learning-based dynamic removal (e.g., LiDAR-MOS) and our method for better map cleaning
    • Deep learning-based removal could run online and good for proactive removal of bunch of points.
    • Removert currently runs offline but good at finer cleaning for the remained 3D points after LiDAR-MOS ran.
  • A tutorial video and an example result for the KITTI 01 sequence:

Contact

Cite Removert

@INPROCEEDINGS { gskim-2020-iros,
    AUTHOR = { Giseop Kim and Ayoung Kim },
    TITLE = { Remove, then Revert: Static Point cloud Map Construction using Multiresolution Range Images },
    BOOKTITLE = { Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS) },
    YEAR = { 2020 },
    MONTH = { Oct. },
    ADDRESS = { Las Vegas },
    NOTE = { Accepted. To appear. },
}

License

Creative Commons License
This work is supported by Naver Labs Corporation and by the National Research Foundation of Korea (NRF). This work is also licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

TODO (in order)

Near future

  • Full sequence cleaned-scan saver by automatically iterating batches (because using 50-100 scans for a single batch is recommended for computation speed)
  • Adding revert steps (I think certainly removing dynamic points is generally more worthy for many applications, so reverting step is omitted currently)
  • Automatically parse dynamic segments from the dynamic points in a scan (e.g., using DBSCAN on dynamic points in a scan)
  • Exmaples from MulRan dataset (for showing removert's availability for various LiDAR configurations) — see this tutorial
  • (scan, pose) pair saver using SC-LeGO-LOAM or SC-LIO-SAM, which includes a loop closing that can make a globally consistent map. — see this tutorial
  • Examples from the arbitrary datasets using the above input data pair saver.
  • Providing a SemanticKITTI (as a truth) evaluation tool (i.e., calculating the number of points of TP, FP, TN, and FN)
  • (Not certain now) Changing all floats to double

Future

  • Real-time LiDAR SLAM integration for better odometry robust to dynamic objects in urban sites (e.g., with LIO-SAM in the Riverside sequences of MulRan dataset)
  • Multi-session (i.e., inter-session) change detection example
  • Defining and measuring the quality of a static map
  • Using the above measure, deciding when removing can be stopped with which resolution (generally 1-3 removings are empirically enough but for highly crowded environments such as urban roads)

More Repositories

1

SC-LIO-SAM

LiDAR-inertial SLAM: Scan Context + LIO-SAM
C++
497
star
2

PyICP-SLAM

Full-python LiDAR SLAM using ICP and Scan Context
Python
439
star
3

lt-mapper

A Modular Framework for LiDAR-based Lifelong Mapping
C++
354
star
4

SC-A-LOAM

Robust LiDAR SLAM with a versatile plug-and-play loop closing and pose-graph optimization.
C++
316
star
5

navtech-radar-slam

Radar SLAM: yeti radar odometry + scan context
C++
115
star
6

modern-slam-tutorial-python

learning and feeling SLAM together with hands-on-experiments
Jupyter Notebook
71
star
7

IROS20-SLAM-papers

A personal list-up
HTML
52
star
8

symforce-tutorials

Learn symforce together :)
Jupyter Notebook
22
star
9

multi-robot-isam-example

An example about using anchor node for multi-robot and -session slam
C++
20
star
10

scancontext-pybind

LiDAR place recognition. For fast python support.
C++
19
star
11

mini-kitti-publisher

A very simple KITTI odometry dataset's images and velodyne points publisher
Python
17
star
12

Daily-Arxiv-Tracking-Automation

Automatically download the all pdfs from a daily rss
Python
15
star
13

semantickitti-matlab

Some useful tools written in Matlab for Semantic KITTI
MATLAB
14
star
14

mini-pyllio

A very minimal but working Python only implementation for loosely-coupled LiDAR-Inertial odometry for education purpose.
Python
14
star
15

toy-robust-backend-slam

Toy DCS
C++
13
star
16

SC-LeGO-LOAM

backup of irapkaist/SC-LeGO-LOAM
C++
12
star
17

ceres-tutorials

personal practice
C++
12
star
18

kitti-global-map-making

global map construction for kitti360 dataset (can be used for the original kitti)
MATLAB
11
star
19

depth-mapping-matlab

Global 3D Map Construction using RTAB-Map iPhone/iPad app data
MATLAB
11
star
20

thrust_examples

Hands-on Learning about cpu vs gpu
Cuda
6
star
21

fit-plane-open3d

example with real world lidar scan
Python
6
star
22

cpp-profiling-practice

for education.
C++
5
star
23

scancontext-cpp

Scan Context C++ for LiDAR Place Recognition
C++
5
star
24

control_toy_practices

for beginners
Python
4
star
25

pytorch-solver-tutorial

pytorch-based optimization examples for traditional problems
Jupyter Notebook
4
star
26

my-interest-cvpr21-paper-listup

4
star
27

gisbi-kim.github.io

blog
CSS
4
star
28

pypose-practice

pypose practices
Python
4
star
29

ComplexUrbanH3DS

To make virtual horizontal 3D scans (so H3DS) from the original Complex Urbans Dataset's point cloud, which was made from 2D push-broom lidars.
MATLAB
4
star
30

cpp-design-pattern

C++
4
star
31

mulran-evaluation

MATLAB
3
star
32

scan_saver

input: rosbag (topics), output: custom .bin file per scan
C++
3
star
33

kitti_making_lidar_gt_pose

head to tail based lidar gt pose making code
MATLAB
3
star
34

nla_study

A study on numerical linear algebra (NLA)
Python
2
star
35

laptop-slam

Goal: 1. using laptop's default camera, 2. using python-only, 3. do v-SLAM
Python
2
star
36

OusterRangeImageMatlab

OusterRangeImageMatlab
MATLAB
2
star
37

my-leet-codes

C++
1
star
38

scancontext_tro

scancontext++ (TRO 2022) codes
MATLAB
1
star
39

ipad_data_processsing

some utils
Python
1
star
40

preprocessing-pointnetvlad

Python
1
star
41

yeti_odom_drawer

MATLAB
1
star
42

iccv23-title-abstracts-db

to easily skim iccv23
1
star
43

iros23-paper-title-and-abstracts

parser pythonc code and sqlite db file
HTML
1
star
44

cv-gskim

1 page cv
TeX
1
star
45

ce545-taxi

course
Jupyter Notebook
1
star
46

mixRobust_distributed_mapper

MATLAB
1
star
47

cpp_study

A personal study backup
C++
1
star
48

hands_on_numerical_opt

for practice
1
star