3 min read

coExplore: Multi-robot exploration

C++ Python ROS Jupyter Shell

In the dynamic world of robotics, effective exploration of unknown environments is a key challenge—especially when multiple robots are involved. Our research project, coExplore, tackled this challenge head-on by developing a novel multi-robot exploration algorithm using ROS1. Although the repository has been deprecated, its contributions to multi-robot coordination, SLAM integration, and path planning remain noteworthy.

The Vision Behind coExplore

Imagine a team of robots navigating through complex environments—whether it’s an open space, a cluttered office, or even a maze. The coExplore project was designed with this very vision in mind. By combining multiple ranking strategies for frontier selection, our algorithm decides which areas to explore next, ensuring that every robot makes the most efficient use of its sensors and computing power.

Key Components of the coExplore System

1. Multi-Robot Coordination with Modified Robot State Publisher

At the heart of the system is the robot_state_publisher, a tool that broadcasts the state of each robot across the network. Given the limitations of ROS Noetic’s default tf framework (especially with multiple robots), we had to manually adjust the publisher. This tweak allowed each robot to maintain its own coordinate frame, preventing clashes and ensuring smooth, coordinated movements.

2. Building a Global Map with SLAM and Map Merging

To navigate effectively, each robot relies on SLAM (Simultaneous Localization and Mapping), implemented using the popular slam_toolbox. The robots generate local maps as they explore, which are then merged using the multirobot_map_merge package. This unified map serves as a comprehensive representation of the environment, enabling every robot to avoid known dead-ends and obstacles.

3. Smart Navigation Through Path Planning

Path planning is accomplished using ROS’s move_base node. By generating both global and local costmaps, each robot can dynamically adjust its route. The global costmap—derived from the merged map—provides the overall layout of the environment, while the local costmap, built from real-time sensor data, helps in avoiding dynamic obstacles like moving people or unexpected objects.

How to Set Up and Experiment

The repository was built for ROS Noetic on Ubuntu 20.04. To get started:

  1. Installation:
    Run the provided install_script.bash from your catkin workspace to install all required dependencies.

  2. Configuration:
    Use the config_script.bash to choose from a range of options, such as:

    • Environment settings (e.g., office, maze, open)
    • Number of robots (between 2 and 5)
    • Exploration method (from nearest to advanced coExplore rankings)
    • Simulation duration

    Simply run:

    source config_script.bash
  3. Customization and Extension:
    The modular design of coExplore allows researchers to easily extend the codebase. Whether you’re interested in developing a new frontier selection algorithm or tweaking distance measurements, the repository provides a solid baseline to build upon.

Reflecting on the Journey and Future Directions

While coExplore is now deprecated, it served as an important stepping stone in our exploration of multi-robot systems. The challenges we encountered—such as the intricacies of map merging and dynamic path planning—highlight the complexities of coordinated robotic exploration. Looking ahead, transitioning to ROS2 could address many of these issues, paving the way for even more robust systems.

The innovations behind coExplore demonstrate that even legacy architectures can be revitalized with modern techniques. As robotics continues to advance, projects like these remind us of the exciting possibilities that lie at the intersection of theory and real-world application.

Stay tuned for more updates on multi-robot systems and cutting-edge exploration strategies!