This ROS package implements human-aware model predictive coverage control (HMPCC) using Model Predictive Control (MPC) combined with human motion prediction. The system coordinates a team of robots to optimally cover an environment while actively avoiding humans. This package is designed for real-time applications like search-and-rescue, smart surveillance, or service robotics in dynamic, human-populated environments.
Robots plan safe, efficient trajectories using MPC while forecasting human motion to maintain both safety and coverage performance.
- 🧠 Human-aware, distributed multi-robot coverage control
- 📈 MPC-based real-time trajectory optimization
- 🕵️ Human motion prediction for proactive avoidance
- 🧩 ROS-native design for modular integration
- 🌍 Simulation-ready (Gazebo & RViz supported)
hmpcc/
├── config/ # Configuration and tuning parameters
├── launch/ # Launch files for simulation or real robots
├── scripts/ # HMPCC evaluation scripts
├── src/ # Core algorithm implementation
├── worlds/ # Custom Gazebo worlds (optional)
├── README.md # This file
This package was developed and tested using ROS Noetic (Ubuntu 20.04). The following dependencies are required:
geometry_msgsnav_msgssensor_msgstf2_rosvisualization_msgsroscpp/rospy- human_actor_plugin to spawn and move humans in the environment.
- turtlebot3_simulations to use TurtleBot3 robots.
- CasADi for solving nonlinear MPC problems
scipy,numpy,matplotlibfor human prediction modules- Gazebo and RViz for simulation and visualization
# Clone into your catkin workspace
cd ~/catkin_ws/src
git clone https://github.com/ARSControl/hmpcc.git
# Build the workspace
cd ~/catkin_ws
catkin build
# Source the workspace
source devel/setup.bashEach robot in the team executes the following pipeline:
-
Receive human position estimates from sensors or simulation.
-
Predict future human trajectories using motion models.
-
Solve an MPC problem to generate a safe, efficient path:
-
Maximize coverage utility
-
Avoid predicted human locations
-
Respect robot dynamics and collision constraints
-
Execute the trajectory and repeat at each control cycle.
The system supports centralized or decentralized coordination, depending on communication constraints.
-
Robot positions (e.g., from tf or odometry)
-
Human positions (from simulation or perception system)
-
Environment map (optional)
-
Robot configuration (sensor range, dynamics, etc.)
-
Safe, optimized control commands for each robot
-
Trajectory visualizations in RViz
-
Optionally, logs for evaluation or offline analysis
Launch the default multi-robot coverage simulation with humans:
roslaunch hmpcc sim_bringup.launch
roslaunch hmpcc multirobot_control.launchThis will:
-
Spawn robots and human agents in a Gazebo world
-
Launch the coverage control MPC node for each robot
-
Start RViz for visualization
| Argument | Description | Default |
|---|---|---|
world_name |
Gazebo world file | myworld.world |
v_max |
Max linear velocity | 0.3 |
w_max |
Max angular velocity | 0.5 |
Below are example behaviors observed in simulation:
-
Robots spread out to cover high-priority areas.
-
When humans enter the field, robots modify their paths to avoid collisions.
-
Smooth, real-time replanning observed under dynamic human motion.
This package is based on concepts from:
@article{catellani2025hmpcc,
title={HMPCC: Human-Aware Model Predictive Coverage Control},
author={Mattia Catellani, Marta Gabbi, Lorenzo Sabattini},
journal={IEEE International Symposium on Multi-Robot & Multi-Agent Systems (MRS)},
year={2025}
}Contributions are welcome! To contribute:
-
Fork this repository
-
Create a new feature branch (git checkout -b feature-name)
-
Commit your changes
-
Push and create a pull request
Please open an issue for any bugs or feature requests.
Author: Mattia Catellani
Email: mattia.catellani@unimore.it
Website: https://www.arscontrol.unimore.it/mattia-catellani/
This project is licensed under the MIT License. See the LICENSE file for more details.
