salihmarangoz / basic_scan_matcher

Simple 2D point-to-point scan matcher implemented in Python. Works with ROS1.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple Scan Matcher (ROS+Python)

Implementation of a scan matcher using only laser data and without any help from odometry sources. The method is implemented super-simple so it doesn't work well, and it may not work well in your cases. Use only for educational purposes. You can also check my notebook v1 and notebook v2 for more information.

V1) Point-to-point matching. Youtube Link: https://youtu.be/t-31ekrpjxk (jumps at 0:20 are solved with this commit)

V2) Correlative scan matching. Youtube Link: https://youtu.be/ymrGJY8h9x4

The original map for the recorded bag: (Bag is generated using https://github.com/salihmarangoz/robot_laser_simulator)

Features

  • ROS (inputs /scan)
  • Publishes the matching error between odom to laser transforms.
  • (v1) Efficient point-to-point matching with KD Tree.
  • (v2) Correlative scan matching. (a bit similar to NDT, but each point has its own normal distribution)
  • Old scan is only updated if the robot moves or rotates above a certain threshold.
  • Demo bag is available.

Running

# Point-to-point matching:
$ roslaunch basic_scan_matcher start_v1.launch
# Correspondence-free matching:
$ roslaunch basic_scan_matcher start_v2.launch

About

Simple 2D point-to-point scan matcher implemented in Python. Works with ROS1.

License:MIT License


Languages

Language:Jupyter Notebook 95.0%Language:Python 3.1%Language:CMake 1.9%