Skip to content

JustWon/PyICP-SLAM

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyICP SLAM

Full-python LiDAR SLAM.

Purpose

  • Full-python LiDAR SLAM
    • Easy to exchange or connect with any Python-based components (e.g., DL front-ends such as Deep Odometry)
      • Here, ICP, which is a very basic option for LiDAR, and Scan Context (IROS 18) are used for odometry and loop detection, respectively.
  • Hands-on LiDAR SLAM
    • Easy to understand (could be used for educational purpose)
  • The practical use case of miniSAM
    • The miniSAM is easy to use at Python

What is SLAM?

  • In this repository, SLAM (Simultaneous localization and mapping) is considered as
    • SLAM = Odometry + Loop closure

Overview of the PyICP SLAM

Features

  • Thanks to the Scan Context, reverse loops can be successfully closed.

    • E.g., see KITTI 14 at Results section below.
  • Time costs

    • (Here, no accelerated and naive) ICP gets 7-10 Hz when sampled (with 7000 points)
    • (Here, no accelerated and naive) Scan Context gets 1-2 Hz (when 10 ringkey candidates).
    • miniSAM is enough fast.

How to use

Just run

$ python3 main_icp_slam.py

The details of parameters are eaily found in the argparser in that .py file.

Results (KITTI dataset)

Those results are produced under the same parameter conditions:

  • ICP used random downsampling, 7000 points.
  • Scan Context's parameters:
    • Ring: 20, Sector: 60
    • The number of ringkey candidates: 30
    • Correct Loop threshold: 0.17 for 09, 0.15 for 14, and 0.11 for all others

Results (left to right):

  • 00 (loop), 01, 02 (loop), 03

  • 04, 05 (loop), 06 (loop), 09 (loop)

  • 10, 11, 12, 13 (loop)

  • 14 (loop), 15 (loop), 16 (loop), 17

  • 18 (loop), 20

Some of the results are good, and some of them are not enough. Those results are for the study to understand when is the algorithm works or not.

Findings

  • The Scan Context does not find loops well when there is a lane level change (i.e., KITTI 08, as below figures).

  • If the loop threshold is too low (0.07 in the below figure), no loops are detected and thus the odometry errors cannot be reduced.

  • If the loop threshold is high (0.20 in the below figure), false loops are detected and thus the graph optimization failed.

Author

  Giseop Kim (paulgkim@kaist.ac.kr)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages