Project MARS (Multi-Agent Robotic SLAM) is a distributed autonomous mapping architecture built in ROS 2 Humble and Webots. The system coordinates a fleet of TurtleBot3 mobile robots to map complex indoor environments. By pairing decentralized, per-robot local SLAM with a centralized probabilistic map fusion node, MARS generates high-fidelity spatial reconstructions while entirely avoiding inter-robot interference.

Github Repository


System Architecture

The software is built using a modular ROS 2 architecture connected via FastDDS. By keeping the packages strictly independent, the system maintains stable, real-time performance across all nodes in the simulation.

Subsystem / LayerTechnology StackArchitectural Responsibility
Robotics MiddlewareROS 2 Humble (C++ / Python)Distributed DDS communication, namespaced topics & TF trees
Simulation EnvironmentWebots Multi-Robot PlatformPhysics-accurate indoor facility modeling & sensor simulation
Local Mapping Engineslam_toolbox (Synchronous)Per-robot 2D graph-based SLAM & occupancy grid estimation
Robot Hardware ModelTurtleBot3 Burger FleetDifferential-drive kinematic platform with 360° planar LiDAR
Verification & TestingGoogleTest + Catch2Algorithmic unit testing and multi-node integration test harnesses
CI/CD PipelineGitHub Actions + CodeCovAutomated builds, regression testing, and code coverage metrics

ROS 2 Package Structure

The repository is divided into three core ROS 2 packages separating simulation, global mapping, and navigation:

Package: mars_fleet_bringup
Simulation & Fleet Orchestration
  • Launches the Webots multi-robot environment, spawns namespaced robot instances, and initializes synchronized RViz2 telemetry.
Package: mars_overseer
Global Map Fusion Engine
  • The centralized fusion node. It subscribes to the local occupancy grids from each robot, aligns them using known starting poses, and merges the cell probabilities into a single, unified /global_map.
Package: mars_exploration
Autonomous Navigation
  • Manages the fleet's movement. It partitions the physical space into sectors to avoid inter-robot collisions and handles automated waypoint sequencing for rapid environmental coverage.

DevOps, Test-Driven Development & Continuous Integration

The project follows standard software engineering practices to keep the ROS 2 codebase maintainable and reliable:

  • Agile Iterative Process (AIP): Development was managed in 1-week sprints using standard feature branches and pull requests.

  • Test-Driven Development (TDD): Core algorithms and math transformations are unit-tested with GoogleTest, while node communication and bringup sequences rely on Catch2 integration tests.

  • Continuous Integration (CI/CD): GitHub Actions automatically run colcon build and colcon test on every PR to catch regressions, tracking coverage via CodeCov.

  • Documentation Target: A custom CMake target generates offline Doxygen documentation for the custom ROS interfaces and class hierarchies.