Collaborative Multi-Robot System for Generalizable Task Planning, Event-Driven Replanning, and HumanβRobot Collaboration
Watch ExperimentsWatch CoMuRoS in action across hardware and simulation experiments
Setup instructions for installing CoMuRoS Architecture
Verify that ROS 2 is installed and sourced correctly:
# Check ROS 2 environment variables
printenv | grep -i ROS
# Expected output should include at least:
# ROS_DISTRO=humble
# ROS_VERSION=2
# ROS_PYTHON_VERSION=3
If ROS_DISTRO=humble is present, your ROS 2 environment is
correctly set up and ready for CoMuRoS.
Clone the anonymous repository into your ROS 2 workspace:
cd ~/ros2_ws/src
git clone https://anonymous.4open.science/r/CoMuRoS-0242/ comuros
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
cd src/comuros
pip install -r requirements.txt
cd ~/ros2_ws
colcon build --symlink-install
source install/setup.bash
echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
You need at least one API key (OpenAI, Gemini, or XAI/Grok). Add them temporarily:
export OPENAI_API_KEY="your_openai_key"
export GEMINI_API_KEY="your_gemini_key"
export XAI_API_KEY="your_grok_key"
Or permanently in ~/.bashrc.
Recommended: launch everything at once:
ros2 launch chatty chat_system.launch.py
Advanced: run nodes individually for chat_manager, task_manager, and chat_gui.
Complete guide to running the multi-robot system for custom applications
The CoMuRoS system requires four separate terminals to run all components. Follow these steps in order:
ros2 launch multi_robot multi_robot.launch.py
What it does:
ros2 launch robot_llm robot_llms.launch.py
What it does:
cleaning_bot_llm_node - Interprets commands for cleaning robotdelivery_bot_llm_node - Interprets commands for delivery robotdrone_llm_node - Interprets commands for the droneros2 launch robot_llm robot_services.launch.py
What it does:
cleaning_bot_position_controller (namespace: r1) - Holonomic controllerdeliver_bot_position_controller (namespace: r2) - Holonomic controllerdrone_position_controller (namespace: r3) - Drone flight controllerros2 launch chatty chat_system.launch.py
What it does:
Optional parameters:
# Use specific LLM model (default: 4)
ros2 launch chatty chat_system.launch.py model:=1
# Use custom robot configuration
ros2 launch chatty chat_system.launch.py config_file:=robot_config_roscon_2025
# Enable voice input/output
ros2 launch chatty chat_system.launch.py enable_audio_input:=true enable_audio_output:=true
Once all four terminals are running start commanding and interacting with multirobot system, for example:
The CoMuRoS robot packages are organized as follows:
CoMuRoS/robots/
βββ multi_robot/ # Multi-robot simulation environment
β βββ launch/ # multi_robot.launch.py
β βββ env/ # Ignition resource paths
β βββ models/ # Food court assets
β βββ worlds/ # foodcourt_world.sdf
β βββ rviz/ # Multi-robot RViz config
β
βββ x3_uav/ # X3 UAV drone packages
β βββ x3_uav_description/
β βββ x3_uav_ignition/
β βββ x3_uav_llm/
β
βββ yahboom/ # Yahboom Rosmaster X3 ground robots
βββ yahboom_rosmaster_description/
βββ yahboom_rosmaster_gazebo/
βββ yahboom_llm/
Want to add your own robot to the system? Follow these steps:
Edit multi_robot/launch/multi_robot.launch.py and add your robot launch:
robot4_launch = TimerAction(
period=30.0, # Spawn delay in seconds
actions=[
IncludeLaunchDescription(
PythonLaunchDescriptionSource(your_robot_launch_path),
launch_arguments={
'use_sim_time': use_sim_time,
'robot_name': 'your_robot_name',
'prefix': 'r4',
'spawn_x': '5.0',
'spawn_y': '5.0',
'spawn_z': '0.05',
}.items()
)
]
)
Create a new package with this structure:
your_robot_llm/
βββ data/
β βββ chat_history.txt
β βββ robot_task_history.txt
βββ launch/
βββ package.xml
βββ setup.py
βββ your_robot_llm/
βββ __init__.py
βββ your_robot_llm.py
βββ your_robot_services.py
Edit robot_llm/launch/robot_llms.launch.py to include your robot's LLM interface node.
Edit robot_llm/launch/robot_services.launch.py to include your robot's position controller service.
Create or edit configuration files in chatty/config/ with robot capabilities and initial state.
cd ~/ros2_ws
colcon build --packages-select your_robot_llm
source install/setup.bash
# Test the new robot
ros2 launch multi_robot multi_robot.launch.py
ros2 launch robot_llm robot_llms.launch.py
ros2 launch robot_llm robot_services.launch.py
ros2 launch chatty chat_system.launch.py
Benchmark for evaluating task planning and replanning
@article{comuros2026,
title = {LLM-Based Generalizable Hierarchical Task Planning and Execution for Heterogeneous Robot Teams with Event-Driven Replanning},
author = {Anonymous},
journal = {submitted to ICRA},
year = {2026}
}