• Stars
    star
    181
  • Rank 212,110 (Top 5 %)
  • Language
    C++
  • License
    MIT License
  • Created over 3 years ago
  • Updated 5 months ago

Reviews

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

Repository Details

Distributed Pose Graph Optimization

dpgo

Introduction

This repository contains implementation of synchronous and asynchronous Distributed Pose Graph Optimization (DPGO). The algorithms are described in the following publications:

Building the C++ Library

Install dependencies.

sudo apt-get install build-essential cmake-gui libsuitesparse-dev libboost-all-dev libeigen3-dev libgoogle-glog-dev

Inside the C++ directory, execute the following commands.

mkdir build
cd build
cmake ../
make

Running a minimal example

The built executables are located in directory build/bin. For a minimal demo of distributed PGO on one of the benchmark datasets, inside the build directory run:

./bin/multi-robot-example 5 ../data/smallGrid3D.g2o

Optionally, run the unit tests by,

./bin/testDPGO

More Examples in ROS

A ROS wrapper of dpgo is provided: dpgo_ros. The ROS extension also provides examples for using the complete set of features implemented in dpgo. These include running the asynchronous version, speeding up convergence with Nesterov acceleration, and using robust optimization on real-world datasets to reject outlier measurements. To try out these examples, please checkout the README.

Usage in multi-robot collaborative SLAM

DPGO is currently used as the distributed back-end in Kimera-Multi, which is a robust and fully distributed system for multi-robot collaborative SLAM. Check out the full system as well as the accompanying datasets!

Citations

If you are using the dpgo library, please cite the following papers. For the basic dpgo library,

@ARTICLE{Tian2021Distributed,
  author={Tian, Yulun and Khosoussi, Kasra and Rosen, David M. and How, Jonathan P.},
  journal={IEEE Transactions on Robotics}, 
  title={Distributed Certifiably Correct Pose-Graph Optimization}, 
  year={2021},
  volume={37},
  number={6},
  pages={2137-2156},
  doi={10.1109/TRO.2021.3072346}}

In addition, the extension to asynchronous optimization is described in,

@ARTICLE{Tian2020Asynchronous,
  author={Tian, Yulun and Koppel, Alec and Bedi, Amrit Singh and How, Jonathan P.},
  journal={IEEE Robotics and Automation Letters}, 
  title={Asynchronous and Parallel Distributed Pose Graph Optimization}, 
  year={2020},
  volume={5},
  number={4},
  pages={5819-5826},
  doi={10.1109/LRA.2020.3010216}}

Lastly, the extension to outlier-robust optimization is described in,

@ARTICLE{tian22tro_kimeramulti,
  author={Tian, Yulun and Chang, Yun and Herrera Arias, Fernando and Nieto-Granda, Carlos and How, Jonathan P. and Carlone, Luca},
  journal={IEEE Transactions on Robotics}, 
  title={Kimera-Multi: Robust, Distributed, Dense Metric-Semantic SLAM for Multi-Robot Systems}, 
  year={2022},
  volume={38},
  number={4},
  pages={2022-2038},
  doi={10.1109/TRO.2021.3137751}
}

More Repositories

1

faster

3D Trajectory Planner in Unknown Environments
C++
949
star
2

cadrl_ros

ROS package for dynamic obstacle avoidance for ground robots trained with deep RL
Python
572
star
3

mader

Trajectory Planner in Multi-Agent and Dynamic Environments
C++
479
star
4

gym-collision-avoidance

OpenEdge ABL
246
star
5

clipper

graph-theoretic framework for robust pairwise data association
C++
219
star
6

panther

Perception-Aware Trajectory Planner in Dynamic Environments
C++
187
star
7

mppi_numba

A GPU implementation of Model Predictive Path Integral (MPPI) control that uses a probabilistic traversability model for planning risk-aware trajectories.
Jupyter Notebook
179
star
8

rl_collision_avoidance

Training code for GA3C-CADRL algorithm (collision avoidance with deep RL)
Python
118
star
9

rmader

Decentralized Multiagent Trajectory Planner Robust to Communication Delay
C++
72
star
10

minvo

Simplexes with Minimum Volume Enclosing Polynomial Curves
MATLAB
71
star
11

aclswarm

MIT ACL distributed formation flying using multirotors
C++
67
star
12

nfl_veripy

Formal Verification of Neural Feedback Loops (NFLs)
Python
63
star
13

dpgo_ros

ROS wrapper for distributed pose graph optimization
C++
59
star
14

deep_panther

C++
51
star
15

clear

CLEAR algorithm for multi-view data association
MATLAB
35
star
16

planning

List of planning algorithms developed at MIT-ACL
34
star
17

puma

PUMA: Fully Decentralized Uncertainty-aware Multiagent Trajectory Planner with Real-time Image Segmentation-based Frame Alignment
C++
27
star
18

fastsam_ros

ROS wrapper for FastSAM, with docker
Python
17
star
19

separator

Linear separability (via planes) of two sets of 3D points
C++
12
star
20

dc2g

Planning Beyond the Sensing Horizon Using a Learned Context
Python
10
star
21

gym-minigrid

Python
10
star
22

SOS-Match

JavaScript
10
star
23

yolov7_ros

ROS wrapper for YOLOv7, with docker
Python
9
star
24

dc2g_public

Deep Cost-to-Go Planning Algorithm (IROS '19)
9
star
25

iscp_path_planner

Iterative sequential convex programming path planner, from Steven and Mark's ICRA 2015 paper
Python
4
star
26

panther_extra

Python
1
star
27

murp-datasets

Jupyter Notebook
1
star
28

motlee

Multiple Object Tracking with Localization Error Elimination
Python
1
star
29

mit-acl.github.io

SCSS
1
star