• Stars
    star
    193
  • Rank 199,950 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created over 4 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Graph SLAM solver in Python

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)

More Repositories

1

adb_shell

A Python implementation of ADB with shell and FileSync functionality.
Python
520
star
2

python-androidtv

Communicate with an Android TV or Fire TV device via ADB over a network.
Python
161
star
3

homeassistant_native_firetv

Python
43
star
4

udacity

My work for Udacity courses
HTML
39
star
5

ha-androidtv

Same as Home Assistant's Android TV integration, but using the latest backend libraries.
Python
11
star
6

Math-Course-Notes

This repository includes various sets of notes that I took during my time in graduate school at UC Davis. My hope is that they will prove useful for others.
6
star
7

MTSG_Toolbox

The Multiscale Transforms for Signals on Graphs (MTSG) Toolbox contains MATLAB code for performing the HGLET and GHWT transforms on signals on graphs, as well as other related code.
MATLAB
6
star
8

aio-androidtv

Communicate with an Android TV or Fire TV device via ADB over a network.
Python
5
star
9

hassio-adb-server-addon

Shell
4
star
10

home-assistant-info

HTML
4
star
11

udacity_car_nanodegree_project04

https://jefflirion.github.io/udacity_car_nanodegree_project04/
HTML
4
star
12

aio_adb_shell

A Python async implementation of ADB with shell and FileSync functionality.
Python
3
star
13

udacity_car_nanodegree_project01

https://jefflirion.github.io/udacity_car_nanodegree_project01/
HTML
3
star
14

udacity_car_nanodegree_project05

https://jefflirion.github.io/udacity_car_nanodegree_project05/
HTML
2
star
15

udacity_car_nanodegree_project02

https://jefflirion.github.io/udacity_car_nanodegree_project02/
HTML
2
star
16

androidtv

Custom Home Assistant media_player component for generic Android devices.
Python
2
star
17

udacity_car_nanodegree_project03

https://jefflirion.github.io/udacity_car_nanodegree_project03/
Jupyter Notebook
2
star
18

python-package

A starter template for a Python package.
Shell
1
star