All Projects → JeffLIrion → python-graphslam

JeffLIrion / python-graphslam

Licence: MIT license
Graph SLAM solver in Python

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to python-graphslam

Evo
Python package for the evaluation of odometry and SLAM
Stars: ✭ 1,373 (+1063.56%)
Mutual labels:  mapping, slam
Maplab
An open visual-inertial mapping framework.
Stars: ✭ 1,722 (+1359.32%)
Mutual labels:  mapping, slam
Rtabmap
RTAB-Map library and standalone application
Stars: ✭ 1,376 (+1066.1%)
Mutual labels:  mapping, slam
Lego Loam
LeGO-LOAM: Lightweight and Ground-Optimized Lidar Odometry and Mapping on Variable Terrain
Stars: ✭ 1,138 (+864.41%)
Mutual labels:  mapping, slam
JuliaAutonomy
Julia sample codes for Autonomy, Robotics and Self-Driving Algorithms.
Stars: ✭ 21 (-82.2%)
Mutual labels:  mapping, slam
Mrpt slam
ROS wrappers for SLAM algorithms in MRPT
Stars: ✭ 84 (-28.81%)
Mutual labels:  mapping, slam
Awesome Robotic Tooling
Tooling for professional robotic development in C++ and Python with a touch of ROS, autonomous driving and aerospace.
Stars: ✭ 1,876 (+1489.83%)
Mutual labels:  mapping, slam
Visual slam related research
视觉(语义) SLAM 相关研究跟踪
Stars: ✭ 708 (+500%)
Mutual labels:  mapping, slam
omnimapper
A Modular Multimodal Mapping Framework
Stars: ✭ 86 (-27.12%)
Mutual labels:  mapping, slam
Iris lama
LaMa - A Localization and Mapping library
Stars: ✭ 217 (+83.9%)
Mutual labels:  mapping, slam
Loam velodyne
Laser Odometry and Mapping (Loam) is a realtime method for state estimation and mapping using a 3D lidar.
Stars: ✭ 1,135 (+861.86%)
Mutual labels:  mapping, slam
slam gmapping
Slam Gmapping for ROS2
Stars: ✭ 56 (-52.54%)
Mutual labels:  mapping, slam
Visma
Visual-Inertial-Semantic-MApping Dataset and tools
Stars: ✭ 54 (-54.24%)
Mutual labels:  mapping, slam
Eao Slam
[IROS 2020] EAO-SLAM: Monocular Semi-Dense Object SLAM Based on Ensemble Data Association
Stars: ✭ 95 (-19.49%)
Mutual labels:  mapping, slam
Kimera Vio
Visual Inertial Odometry with SLAM capabilities and 3D Mesh generation.
Stars: ✭ 741 (+527.97%)
Mutual labels:  mapping, slam
Door Slam
Distributed, Online, and Outlier Resilient SLAM for Robotic Teams
Stars: ✭ 107 (-9.32%)
Mutual labels:  mapping, slam
Lio Mapping
Implementation of Tightly Coupled 3D Lidar Inertial Odometry and Mapping (LIO-mapping)
Stars: ✭ 520 (+340.68%)
Mutual labels:  mapping, slam
Cartographer
Cartographer is a system that provides real-time simultaneous localization and mapping (SLAM) in 2D and 3D across multiple platforms and sensor configurations.
Stars: ✭ 5,754 (+4776.27%)
Mutual labels:  mapping, slam
Pythonrobotics
Python sample codes for robotics algorithms.
Stars: ✭ 13,934 (+11708.47%)
Mutual labels:  mapping, slam
lt-mapper
A Modular Framework for LiDAR-based Lifelong Mapping
Stars: ✭ 301 (+155.08%)
Mutual labels:  mapping, slam

graphslam

https://travis-ci.com/JeffLIrion/python-graphslam.svg?branch=master https://coveralls.io/repos/github/JeffLIrion/python-graphslam/badge.svg?branch=master

Documentation for this package can be found at https://python-graphslam.readthedocs.io/.

This package implements a Graph SLAM solver in Python.

Features

  • Optimize \mathbb{R}^2, \mathbb{R}^3, SE(2), and SE(3) datasets
  • Analytic Jacobians
  • Supports odometry edges
  • Import and export .g2o files for SE(2) and SE(3) datasets

Installation

pip install graphslam

Example Usage

SE(3) Dataset

>>> from graphslam.load import load_g2o_se3

>>> g = load_g2o_se3("data/parking-garage.g2o")  # https://lucacarlone.mit.edu/datasets/

>>> g.plot(vertex_markersize=1)

>>> g.calc_chi2()

16720.02100546733

>>> g.optimize()

>>> g.plot(vertex_markersize=1)

Output:

Iteration                chi^2        rel. change
---------                -----        -----------
        0           16720.0210
        1              45.6644          -0.997269
        2               1.2936          -0.971671
        3               1.2387          -0.042457
        4               1.2387          -0.000001
Original Optimized
images/parking-garage.png images/parking-garage-optimized.png

SE(2) Dataset

>>> from graphslam.load import load_g2o_se2

>>> g = load_g2o_se2("data/input_INTEL.g2o")  # https://lucacarlone.mit.edu/datasets/

>>> g.plot()

>>> g.calc_chi2()

7191686.382493544

>>> g.optimize()

>>> g.plot()

Output:

Iteration                chi^2        rel. change
---------                -----        -----------
        0         7191686.3825
        1       319916668.8138          43.484235
        2       124888469.1437          -0.609622
        3          338171.6169          -0.997292
        4             734.5693          -0.997828
        5             215.8405          -0.706167
        6             215.8405          -0.000000
Original Optimized
images/input_INTEL.png images/input_INTEL-optimized.png

References and Acknowledgments

  1. Grisetti, G., Kummerle, R., Stachniss, C. and Burgard, W., 2010. A tutorial on graph-based SLAM. IEEE Intelligent Transportation Systems Magazine, 2(4), pp.31-43.
  2. Blanco, J.L., 2010. A tutorial on SE(3) transformation parameterizations and on-manifold optimization. University of Malaga, Tech. Rep, 3.
  3. Carlone, L., Tron, R., Daniilidis, K. and Dellaert, F., 2015, May. Initialization techniques for 3D SLAM: a survey on rotation estimation and its use in pose graph optimization. In 2015 IEEE international conference on robotics and automation (ICRA) (pp. 4597-4604). IEEE.
  4. Carlone, L. and Censi, A., 2014. From angular manifolds to the integer lattice: Guaranteed orientation estimation with application to pose graph optimization. IEEE Transactions on Robotics, 30(2), pp.475-492.

Thanks to Luca Larlone for allowing inclusion of the Intel and parking garage datasets in this repo.

Live Coding Graph SLAM in Python

If you're interested, you can watch as I coded this up.

  1. Live coding Graph SLAM in Python (Part 1)
  2. Live coding Graph SLAM in Python (Part 2)
  3. Live coding Graph SLAM in Python (Part 3)
  4. Live coding Graph SLAM in Python (Part 4)
  5. Live coding Graph SLAM in Python (Part 5)
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].