# Kimera-Multi **Repository Path**: latristan/Kimera-Multi ## Basic Information - **Project Name**: Kimera-Multi - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-11-13 - **Last Updated**: 2023-11-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# Kimera-Multi Kimera-Multi is a multi-robot system that (i) is robust and capable of identifying and rejecting incorrect inter and intra-robot loop closures resulting from perceptual aliasing, (ii) is fully distributed and only relies on local (peer-to-peer) communication to achieve distributed localization and mapping, and (iii) builds a globally consistent metric-semantic 3D mesh model of the environment in real-time, where faces of the mesh are annotated with semantic labels. Kimera-Multi is implemented by a team of robots equipped with visual-inertial sensors. Each robot builds a local trajectory estimate and a local mesh using Kimera. When communication is available, robots initiate a distributed place recognition and robust pose graph optimization protocol based on a novel distributed graduated non-convexity algorithm. The proposed protocol allows the robots to improve their local trajectory estimates by leveraging inter-robot loop closures while being robust to outliers. Finally, each robot uses its improved trajectory estimate to correct the local mesh using mesh deformation techniques. ## Installation **Note** The experiments described by the authors in the paper were done on Ubuntu 18.04 and ROS Melodic. System has also been tested on Ubuntu 20.04 and ROS Noetic. ``` # Create workspace mkdir -p catkin_ws/src cd catkin_ws/src/ git clone git@github.com:MIT-SPARK/Kimera-Multi.git kimera_multi # If you do not have these dependencies already sudo bash kimera_multi/install/dependencies.sh # For full install vcs import . --input kimera_multi/kimera_multi.repos --recursive cd .. # Configure build options and build! catkin config -a --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo -DGTSAM_TANGENT_PREINTEGRATION=OFF -DGTSAM_BUILD_WITH_MARCH_NATIVE=OFF -DOPENGV_BUILD_WITH_MARCH_NATIVE=OFF catkin build --continue -s ``` ## System Architecture & Breakdown For more in depth details about the system, we point the reader to our [paper](https://arxiv.org/abs/2106.14386). Each robot runs an onboard system using the Robot Operating System (ROS). Inter-robot communication is performed in a fully peer-to-peer manner using a lightweight communication layer on top of the UDP protocol using the Remote Topic Manager. Kimera-VIO and Kimera-Semantics provide the odometric pose estimates and a reconstructed 3D mesh. The distributed front-end detects inter-robot loop closures by communicating visual Bag-of-Words (BoW) vectors and selected keyframes that contain keypoints and descriptors for geometric verification. The front-end is also responsible for incorporating the odometry and loop closures into a coarsened pose graph. The distributed back-end periodically optimizes the coarse pose graph using robust distributed optimization. Lastly, the optimized trajectory is used by each robot to correct its local 3D mesh. ### Module-to-Repository Directory - [Kimera-Semantics](https://github.com/MIT-SPARK/Kimera-Semantics) - [Kimera-VIO](https://github.com/MIT-SPARK/Kimera-VIO) - Distributed Front-End: [Kimera-Distributed](https://github.com/MIT-SPARK/Kimera-Distributed) which handles the communication protocol and pose graph coarsening and [Kimera-Multi-LCD](https://github.com/MIT-SPARK/Kimera-Multi-LCD) which contains the functionalities for Bag-of-Words matching and keyframe registration. - Remote Topic Manager: Coming Soon (Still in approval process). - Robust Distributed PGO: [DPGO](https://github.com/mit-acl/dpgo) and [DPGO-ROS](https://github.com/mit-acl/dpgo_ros). - Local Mesh Optimization: [Kimera-PGMO](https://github.com/MIT-SPARK/Kimera-PGMO). ## Examples & Usage To test Kimera-Multi on a single machine, we provided an example in the examples folder. First, install [tmuxp](https://github.com/tmux-python/tmuxp), then, download the [Campus-Outdoor data](https://github.com/MIT-SPARK/Kimera-Multi-Data). Lastly, run the following to launch all the processes for all 6 robots: ```bash CATKIN_WS=