Repository Summary
Description | A simulator of human navigation behaviors for Robotics based on ROS2 |
Checkout URI | https://github.com/robotics-upo/hunav_sim.git |
VCS Type | git |
VCS Version | humble |
Last Updated | 2025-07-09 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
hunav_agent_manager | 1.0.0 |
hunav_evaluator | 1.0.0 |
hunav_msgs | 1.0.0 |
hunav_rviz2_panel | 0.4.7 |
hunav_sim | 1.0.0 |
README
Human Navigation behavior Simulator (HuNavSim)
A controller of human navigation behaviors for Robotics based on ROS2.
This is a work in progress version
Tested in ROS2 Humble
The simulated people are affected by the obstacles and other people using the Social Force Model. Besides, a set of human reactions to the presence of robots have been included.
If you use this simulator in your work, please cite:
N. Pérez-Higueras, R. Otero, F. Caballero and L. Merino, “HuNavSim: A ROS 2 Human Navigation Simulator for Benchmarking Human-Aware Robot Navigation,” in IEEE Robotics and Automation Letters, vol. 8, no. 11, pp. 7130-7137, Nov. 2023, doi: 10.1109/LRA.2023.3316072.
Bibtex:
@ARTICLE{PerezRal2023,
author={Pérez-Higueras, Noé and Otero, Roberto and Caballero, Fernando and Merino, Luis},
journal={IEEE Robotics and Automation Letters},
title={HuNavSim: A ROS 2 Human Navigation Simulator for Benchmarking Human-Aware Robot Navigation},
year={2023},
month={September},
volume={8},
number={11},
pages={7130-7137},
issn={2377-3766},
doi={10.1109/LRA.2023.3316072}}
A pre-print version of the accepted paper is available here.
Container system
It is strongly recommended to use the system through containers what ease the deployment of HuNavSim. If you want to try HuNavSim through Docker containers, please go to the following repo and follow the instruccions indicated there for installation: https://github.com/robotics-upo/hunavsim_containers
Dependencies
- You must download and install the Social Force Model library. Follow the instructions here: https://github.com/robotics-upo/lightsfm
- The ros people_msgs are also required. At the moment of this development, people_msgs were not still available to be installed from the apt ros-humble package server. You can get the package from here: https://github.com/wg-perception/people/tree/ros2. Please, copy it and put it in your workspace.
- The ROS2 packages nav2-behavior-tree is needed.
sudo apt install ros-humble-nav2-behavior-tree
- The version of the Behavior Tree library that we are using is BehaviorTree.CPP 4.6. Install it by cloning these two packages in your ROS 2 workspace:
git clone https://github.com/BehaviorTree/BehaviorTree.CPP.git
git clone -b humble https://github.com/BehaviorTree/BehaviorTree.ROS2.git
Features
-
Realistic human navigation behavior based on an adapted Social Force Model and its extension for groups of people.
-
A core of human navigation behaviors which is independent of any simulator. The core can be used in different simulators by means of a wrapper.
-
The HuNavSim can be use with 3 different robotics simulators:
-
A wrapper for Gazebo Classic v11 is provided here: https://github.com/robotics-upo/hunav_gazebo_wrapper
-
A wrapper for Gazebo Fortress is provided here: https://github.com/robotics-upo/hunav_gazebo_fortress_wrapper
-
A wrapper for Isaac Sim is provided here: https://github.com/robotics-upo/Hunav_isaac_wrapper
-
-
The simulator core is programmed under the new ROS2 framework (tested in Humble distro).
-
A GUI based on a RViz2 panel is employed to easily configure the human agents. For instructions, please check the hunav_rviz2_panel
-
A set of realistic human navigation reactions to the presence of a robot is provided:
- regular: the human treat the robot like another human.
- impassive: the human deal with the robot like a static obstacle.
- surprised: when the human sees the robot, he/she stops walking and starts to look at the robot.
- curious: the human abandons the current navigation goal for a while and starts to approach the robot slowly.
- scared: the human tries to stay far from the robot.
- threatening: the human tries to block the path of the robot by walking in front of it.
-
The navigation behavior defined by the user for each human agent is led by a configurable behavior tree.
-
Finally, a set of metrics for social navigation evaluation are provided. This set includes the metrics found in the literature plus some other ones. Moreover, the metrics computed can be easily configured and extended by the user. Further information is provided in the hunav_evaluator
Steps to use HuNavSim with a robotic simulator
The navigation behavior of the human agents spawned in a regular physics simulator can be controlled by HuNavSim. Therefore, HuNavSim can be “connected” to a popular simulators used in Robotics like Gazebo, Webots or Isaac Sim.
To do so, we must programme a ROS2 wrapper of the particular simulator. At each simulation step, the wrapper must collect the current state of the human agents and the robot (positions and velocities), and send them to HuNavSim. The HuNavSim controller will compute and return the next state of the agents. Finally, the wrapper must update the agents’ state in the simulation.
That communication with HuNavSim can be easily done through different ROS2 services available. These services use the messages of the package hunav_msgs:
-
“/compute_agents”. The request must contain the current state of all the human agents (hunav_msgs/Agents message) and the robot (hunav_msgs/Agent message). HuNavSim will fill the response with the updated state of the agents (hunav_msgs/Agents message).
-
“/compute_agent”. The request must contain the id of the desired human agent (integer value). The response contains the updated state of the indicated agent.
File truncated at 100 lines see the full file