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 workspacecd~/catkin_ws/src
git clone https://github.com/ARSControl/hmpcc.git
# Build the workspacecd~/catkin_ws
catkin build
# Source the workspacesource 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.
