All Projects → gisbi-kim → Pyicp Slam

gisbi-kim / Pyicp Slam

Full-python LiDAR SLAM using ICP and Scan Context

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pyicp Slam

Sc Lego Loam
LiDAR SLAM: Scan Context + LeGO-LOAM
Stars: ✭ 332 (+114.19%)
Mutual labels:  slam, loop, pointcloud, lidar
Loam velodyne
Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar.
Stars: ✭ 1,135 (+632.26%)
Mutual labels:  slam, pointcloud, lidar
Loam noted
loam code noted in Chinese(loam中文注解版)
Stars: ✭ 455 (+193.55%)
Mutual labels:  slam, pointcloud, lidar
lt-mapper
A Modular Framework for LiDAR-based Lifelong Mapping
Stars: ✭ 301 (+94.19%)
Mutual labels:  lidar, slam, pointcloud
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+1110.32%)
Mutual labels:  robot, slam, lidar
SLAM Qt
My small SLAM simulator to study "SLAM for dummies"
Stars: ✭ 47 (-69.68%)
Mutual labels:  robot, lidar, slam
SRLCD
fast loop closure detection (online visual place recognition) via saliency re-identification IROS 2020
Stars: ✭ 78 (-49.68%)
Mutual labels:  recognition, loop, slam
awesome-lidar
😎 Awesome LIDAR list. The list includes LIDAR manufacturers, datasets, point cloud-processing algorithms, point cloud frameworks and simulators.
Stars: ✭ 217 (+40%)
Mutual labels:  lidar, slam, pointcloud
Semantic suma
SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019)
Stars: ✭ 431 (+178.06%)
Mutual labels:  slam, lidar
Mvision
机器人视觉 移动机器人 VS-SLAM ORB-SLAM2 深度学习目标检测 yolov3 行为检测 opencv PCL 机器学习 无人驾驶
Stars: ✭ 6,140 (+3861.29%)
Mutual labels:  robot, slam
A Loam
Advanced implementation of LOAM
Stars: ✭ 869 (+460.65%)
Mutual labels:  slam, lidar
Interactive slam
Interactive Map Correction for 3D Graph SLAM
Stars: ✭ 372 (+140%)
Mutual labels:  slam, lidar
Hdl graph slam
3D LIDAR-based Graph SLAM
Stars: ✭ 945 (+509.68%)
Mutual labels:  slam, lidar
Turtlebot3
ROS packages for Turtlebot3
Stars: ✭ 673 (+334.19%)
Mutual labels:  robot, slam
Overlapnet
OverlapNet - Loop Closing for 3D LiDAR-based SLAM (chen2020rss)
Stars: ✭ 299 (+92.9%)
Mutual labels:  slam, lidar
Las Rs
Read and write ASPRS las files, Rust edition.
Stars: ✭ 27 (-82.58%)
Mutual labels:  pointcloud, lidar
Lego Loam
LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
Stars: ✭ 1,138 (+634.19%)
Mutual labels:  slam, lidar
Ssl slam2
SSL_SLAM2: Lightweight 3-D Localization and Mapping for Solid-State LiDAR (mapping and localization separated) ICRA 2021
Stars: ✭ 96 (-38.06%)
Mutual labels:  slam, lidar
Turtlebot3 simulations
Simulations for TurtleBot3
Stars: ✭ 104 (-32.9%)
Mutual labels:  robot, slam
Ipadlidarscanexport
Export an OBJ file of ARKit 3.5 iPad Pro LIDAR scans
Stars: ✭ 129 (-16.77%)
Mutual labels:  lidar, scan

PyICP SLAM

Full-python LiDAR SLAM.

(if you find a C++ version of this repo, go to https://github.com/irapkaist/SC-LeGO-LOAM)

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
  • In this repository, the state to be optimized only has robot poses; that is pose-graph SLAM.

Overview of the PyICP SLAM

  • The pipeline of the PyICP SLAM is composed of three parts
    1. Odometry: ICP (iterative closest point)
      • In here, Point-to-point and frame-to-frame (i.e., no local mapping)
    2. Loop detection: Scan Context (IROS 18)
      • Reverse loop detection is supported.
    3. Back-end (graph optimizer): miniSAM
      • Python API

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 for randomly downsampled points (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

Author

  Giseop Kim ([email protected])

Contirbutors

  @JustWon
    - Supports Pangolin-based point cloud visualization along the SLAM poses.
    - Go to https://github.com/JustWon/PyICP-SLAM
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].