decoSLAM
decoSLAM
decoSLAM: decentralized collaborative SLAM for ROS
The official implementation of the paper Cross-Agent Relocalization for Decentralized Collaborative SLAM, built for ROS Noetic on Ubuntu 20.04.
What this implementation is
The repository contains the official implementation of the paper Cross-Agent Relocalization for Decentralized Collaborative SLAM, presented at ICRA 2023. The README says the implementation has been tested using Ubuntu 20.04 LTS and the corresponding ROS distribution, ROS Noetic Ninjemys. Setup follows the installation instructions for that combination.
Dependencies
The system depends on a few frameworks built and installed from source using CMake, including Ceres version 2.0 or higher. The Hyper set of libraries is used for implementations of sensor classes and Lie Groups, and these are fetched automatically at configuration time, so they do not need to be installed manually. The framework itself builds with standard CMake.
Reproducing the EuRoC results
To reproduce the EuRoC experiment results, download the rosbags for the Machine Hall sequences from the dataset website, then adapt the paths in the roslaunch file to where the bags are saved. The launch runs the five Machine Hall sequences concurrently at reduced speed. The experiment runs twice, once with map sharing among the team and once without, and result folders with trajectory estimates, map data, and communication data are saved under the evaluation directory.
Running a custom dataset
Starting points for config files live under the evaluation directory. Three steps are needed for a custom dataset. First, pre-extracted NetVLAD descriptors of 128 floats are used, generated from the rosbag into a csv file. Second, the sensor setup is defined in a separate config file, and currently only stereo setups are supported, with cam0 as the left camera and cam1 as the right camera. Third, the network is defined in a configuration file.
Spinning up the network
To spin up the peer-to-peer network, agents must load the same network configuration file. The file contains an entry for each agent with its IP and a list of ports, and you need as many ports per agent as there are agents in the system. The combination of port and IP must be unique. Agents can run on different machines, and the rosbags are run concurrently using a launch file, as in the EuRoC example.
Community notes