This repository houses the code + infrastructure + scripts to run the experiments found in our 2026 TRO paper "riMESA: Consensus ADMM for Real-World Collaborative SLAM". The main repository containing our robust incremental C-SLAM algorithm can be found at rpl/rimesa. This repository serves to document the exact method by which experiments were run and provide example usage for the riMESA algorithm.
If you use this package please cite our paper as:
@article{mcgann_rimesa_2026,
title = {{riMESA}: Consensus {ADMM} for Real-World Collaborative {SLAM}},
author = {D. McGann and M. Kaess},
fullauthor = {Daniel McGann and Michael Kaess},
journal = {IEEE Transactions on Robotics},
year = 2026
volume = {}, % Volume not yet available as of June 2026
number = {}, % Number not yet available as of June 2026
pages = {}, % Pages not yet available as of June 2026
}
This repository is broken down into three main components:
agent_interface/- Defines a common interface to which all experimental methods adhere.agents/- Wrapper for riMESA to the agent interface and implementation for all prior works.experiments/- Houses code to run experiments, and houses scripts to generate data, and analyze/plot results.
Each of these modules has a README with additional information and documentation.
This project provides a main entry point for running riMESA and prior works on datasets via the run-trial program (find in build/experiments/run-trial). More details can be found in the Experiments Module.
This repository currently provides implementations multiple centralized baselines and distributed prior works. Descriptions of each can be found in the Prior Work Module.
Note that Distributed Loopy Belief Propagation (DLGBP) (an important comparison in our paper) is not included in this release. The original authors were kind to provide their internal implementation for which we do not have permission to release more widely and have omitted from this repo. We thank users for their understanding!
- GTSAM - Github - Factor-graph library for SLAM (v4.2.0)
- Boost - Boost.org- C++ Utilities (v1.71.0+)
- nlohmann-json - Github - JSON library provides parsing/serializing of JSON. (v3.7.3+)
- JRL - Github - SLAM dataset library for IO of datasets and results.(v1.1.1+)
- riMESA - Github - Implementation of the riMESA algorithm. (v0.0.0)
- KimeraRPGO - Github - Implementation of PCM algorithm.
The following instructions are designed to construct a local build of riMESA experiments with the proper versions of dependencies. We link the projects to each other using *_DIR and *_INCLUDE_DIR CMake variables to ensure we build everything against the correct version, and permit users to have other versions of GTSAM or JRL installed on their system.
- Install System Dependencies
- nlohmann-json -
sudo apt-get install nlohmann-json3-dev- Note this is the only system-wide dependency. All other dependencies are handled locally to allow users to have other versions of GTSAM etc. installed on their machine.
- Construct a workspace directory
cd /path/to/prefered/locationmkdir WORKSPACE- The following instructions will refer WORKSPACE as a path and users should insert the absolute path to their chosen workspace.
- Build GTSAM
cd WORKSPACEgit clone -b 4.2.0-imesa https://github.com/DanMcGann/gtsam.git- This version is GTSAM v4.2.0 with a few additional change that are detailed in the riMESA repository.
cd gtsam && mkdir build && cd buildcmake ..make
- Build JRL
cd WORKSPACEgit clone -b v1.1.1 https://github.com/DanMcGann/jrl.gitcd jrl && mkdir build && cd buildcmake .. -DGTSAM_DIR=WORKSPACE/gtsam/build -DGTSAM_INCLUDE_DIR=WORKSPACE/gtsam/gtsammake
- Build the riMESA Experiments
cd WORKSPACEgit clone -b v0.0.0 https://github.com/rpl-cmu/rimesa-experiments.gitcd rimesa-experiments && mkdir build && cd buildcmake .. -DGTSAM_DIR=WORKSPACE/gtsam/build -DGTSAM_INCLUDE_DIR=WORKSPACE/gtsam/gtsam -Djrl_DIR=WORKSPACE/jrl/build -Djrl_INCLUDE_DIR=WORKSPACE/jrl/includemake
Note: riMESA is included automatically via FetchContent.
If you encounter issues while using this project please file a bug report on github!