Git Product home page Git Product logo

cslam-resource's Introduction

cslam-resource

Resource efficient/adaptive communication policies for multi-robot cooperative SLAM. This is joint work between the Aerospace Controls Lab at MIT and STARS Lab at UofT. If you use any of this code in your work, please cite the relevant publication:

@article{giamou2017talk,
  title   = {Talk Resource-Efficiently to Me: 
             Optimal Communication Planning for Distributed SLAM Front-Ends},
  author  = {Giamou, Matthew and Khosoussi, Kasra and How, Jonathan P},
  journal = {IEEE} Int. Conf. Robot. Autom. ({ICRA})},
  year    = {2018}
}

@article{tian2018near,
  title   = {Near-Optimal Budgeted Data Exchange for Distributed Loop Closure Detection},
  author  = {Tian, Yulun and Khosoussi, Kasra and Giamou, Matthew and How, Jonathan P and Kelly, Jonathan},
  journal = {Robotics: Science and Systems},
  year    = {2018}
}

Installation and Dependencies

All code and experiments were developed and run on Ubuntu 14.04 with MATLAB R2017b, Python 2.7.6, and GCC/G++ 4.8.4.

MATLAB

Sergii Iglin's grTheory toolbox is used, as well as Guillaume Jacquenot's polygon intersection code. Both packages are included in the source code (src/icra/matlab).

Python

Python is used to parse KITTI odometry benchmark data and create the graph instances tested in our paper. We have included these graph instances in this repository (src/icra/data/odometry) but also include the code that generates them. This code depends on the following packages:

C++

To generate sample measurement exchange graphs, we used DBoW2. The C++ code used to generate the graphs in our paper is included but not needed to run the core optimal communication algorithms.

Usage

Optimal Data Exchange Policies

The code for our ICRA 2018 paper listed above is in the folder src/icra. The core functionality is the simple Matlab function src/icra/matlab/solve_odep.m. This function can be called on a weighted graph by passing in a set of vertex pairs representing edges as an (N, 2) matrix and a size N vector of vertex weights. The Matlab Gurobi interface was used to solve the ODEP problem instances as it is faster than the built-in Matlab linprog function. If you have access to Gurobi, solve_odep.m takes a third optional boolean argument that indicates the function should use Gurobi if true.

To generate the plots in our paper, run the script src/icra/matlab/generate_icra2018_paper_plots.m. This script uses the .mat files in src/icra/data/, which can be re-generated with the script src/icra/matlab/generate_icra2018_paper_results.m. Run the scripts from within src/icra to use the file paths as they are currently written.

See the scripts src/icra/matlab/simple_example_graph.m and src/icra/matlab/simple_random_example_graph.m for small examples that use solve_odep.m on toy problems.

Budgeted Data Exchange Policies

The code for our RSS 2018 paper listed above is in the folder src/rss. To reproduce the plots run src/rss/matlab/generate_KITTI_plot.m, which uses data generated by src/rss/matlab/generate_KITTI_result.m.

cslam-resource's People

Contributors

mattgiamou avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.