Collaborative Multi-Robot System for Generalizable Task Planning, Event-Driven Replanning, and Human-Robot Collaboration
IIT Gandhinagar
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 repository into your ROS 2 workspace:
cd ~/ros2_ws/src
git clone https://github.com/CoMuRoS/CoMuRoS.git
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 the multi-robot system:
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,
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()
)
]
)
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
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
Robot configuration files and experiment GUI screenshots
Robot configuration files for each experiment. Click a card to read the full JSON.
Interface screenshots from real experiment runs. Click to view full size.
All configuration files, evaluated datasets, and chat interface screenshots are available on Google Drive.
@article{borate2025llm,
title={LLM-Based Generalizable Hierarchical Task Planning and Execution for Heterogeneous Robot Teams with Event-Driven Replanning},
author={Borate, Suraj and Pardeshi, Vipul and Vadali, Madhu and others},
journal={arXiv preprint arXiv:2511.22354},
year={2025}
}
Have questions about CoMuRoS? We'd love to hear from you
For research inquiries and collaborations