• Stars
    star
    115
  • Rank 295,659 (Top 6 %)
  • Language
    C++
  • Created almost 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

Radar SLAM: yeti radar odometry + scan context

navtech-radar-slam

Radar SLAM: yeti radar odometry + ScanContext-based Loop Closing

What is Navtech-Radar-SLAM?

  • In this repository, a (minimal) SLAM problem is defeind as SLAM = Odometry + Loop closing, and the optimized states are only robot poses along a trajectory.
  • Based on the above view, this repository aims to integrate current available radar odometry, radar place recognition, and pose-graph optimization.
    1. Radar odometry: Yeti open source that implemented cen2018 and cen2019 methods with considering motion distortation for RANSAC.
      • The odometry modules consumes file-based input (not ROS subscription) in this example. See odometry/yeti_radar_odometry/src/odometry.cpp for the details.
      • However, to seamlessly connect the motion estimation result with the later place recognition module, we added ROS publishing lines to the original odometry.cpp code. Also, see odometry/yeti_radar_odometry/src/odometry.cpp for the details.
    2. Radar place recognition: Scan Context open source
      • In MulRan dataset paper, the radar scan context is also proposed, but in this repository we use a Cartesian 2D feature point cloud (extracted via cen2019 method) as an input for the original Scan Context (IROS2018) method and it works.
      • The Scan Context-based loop detection is included in the file pgo/SC-A-LOAM/laserPosegraphOptimization.cpp.
    3. Pose-graph optimization
      • iSAM2 in GTSAM is used. See pgo/SC-A-LOAM/laserPosegraphOptimization.cpp for the details (ps. the implementation is eqaul to SC-A-LOAM and it means laserPosegraphOptimization.cpp node is generic!)

How to use?

Dependencies

  • Yeti: OpenCV and SC-PGO: GTSAM

Steps

First, clone and build.

$ mkdir -p ~/catkin_radarslam/src && cd ~/catkin_radarslam/src
$ git clone https://github.com/gisbi-kim/navtech-radar-slam.git && cd ..
$ catkin_make 

Second,

Then, enjoy!

$ source devel/setup.bash
$ roslaunch src/navtech-radar-slam/launch/navtech_radar_slam_mulran.launch

Examples

  • The examples are from MulRan dataset, which is suitable to evaluate the radar odometry or SLAM algorithm in complex urban sites.
    • The MulRan dataset provides the oxford-radar-robotcar-radar data format (i.e., meta data such as ray-wise timestamps are imbedded in an radar image, see details here)

1. KAIST 03 of MulRan dataset

2. Riverside 03 of MulRan dataset

Related papers

If you cite this repository, please consider below papers.

  • Yeti open source for radar odometry:
    @ARTICLE{burnett_ral21,
        author = {Keenan Burnett, Angela P. Schoellig, Timothy D. Barfoot},
        journal={IEEE Robotics and Automation Letters},
        title={Do We Need to Compensate for Motion Distortion and Doppler Effects in Spinning Radar Navigation?},
        year={2021},
        volume={6},
        number={2},
        pages={771-778},
        doi={10.1109/LRA.2021.3052439}}
    }
    
  • Scan Context open source for place recognition:
    @INPROCEEDINGS { gkim-2018-iros,
        author = {Kim, Giseop and Kim, Ayoung},
        title = { Scan Context: Egocentric Spatial Descriptor for Place Recognition within {3D} Point Cloud Map },
        booktitle = { Proceedings of the IEEE/RSJ International Conference on Intelligent Robots and Systems },
        year = { 2018 },
        month = { Oct. },
        address = { Madrid }
    }
    
  • MulRan dataset:
    @INPROCEEDINGS{ gskim-2020-mulran, 
        TITLE={MulRan: Multimodal Range Dataset for Urban Place Recognition}, 
        AUTHOR={Giseop Kim and Yeong Sang Park and Younghun Cho and Jinyong Jeong and Ayoung Kim}, 
        BOOKTITLE = { Proceedings of the IEEE International Conference on Robotics and Automation (ICRA) },
        YEAR = { 2020 },
        MONTH = { May },
        ADDRESS = { Paris }
    }
    

TODO

  • About utilities
    • support ROS-based input (topic subscription)
    • support a resulting map save functions.
  • About performances
    • support reverse loop closing.
    • enhance RS (radius-search) loop closings.

More Repositories

1

SC-LIO-SAM

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

removert

Remove then revert (IROS 2020)
C++
476
star
3

PyICP-SLAM

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

lt-mapper

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

SC-A-LOAM

Robust LiDAR SLAM with a versatile plug-and-play loop closing and pose-graph optimization.
C++
316
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