OHMS-NetSim is a high-fidelity simulation framework for developing and testing algorithms for Outdoor Heterogeneous Multi-Robot Systems. Built on ROS 2 Humble and Gazebo, it provides a realistic platform for researchers to validate navigation, communication, and coordination strategies in challenging outdoor environments.
A key feature of OHMS-NetSim is its custom Gazebo plugin that simulates realistic, range-dependent communication degradation based on established scientific models, enabling the study of communication-aware robotics.
(Note: You will need to add a screenshot of your simulator to docs/images/ohms_sim_screenshot.png)
- Key Features
- Installation
- Getting Started: Running a Simulation
- Project Structure
- Community and Contribution
- Citation
- Acknowledgements
- Heterogeneous Teams: Simulate complex teams of Unmanned Ground Vehicles (UGVs) and Unmanned Aerial Vehicles (UAVs).
- Realistic Outdoor Worlds: Includes several pre-built environments, such as a Mars yard and dense forests of varying scales.
- Modular Scenario Definition: Easily define and launch complex multi-robot scenarios using a combination of YAML configuration files and ROS 2 launch files.
- Scientifically-Grounded Comms Emulation: A custom Gazebo plugin simulates path loss and packet drop rates based on peer-reviewed models, allowing for realistic testing of communication-aware algorithms.
- ROS 2 Humble Integration: Fully integrated with the ROS 2 ecosystem, providing a standard platform for robotics research and development.
These instructions assume you are using Ubuntu 22.04 with ROS 2 Humble Hawksbill installed.
- ROS 2 Humble: Ensure you have a working installation of ROS 2 Humble. You can follow the official installation guide here.
- Gazebo Fortress: OHMS-NetSim uses Gazebo (formerly Ignition Gazebo). The required version, Fortress, is typically installed as a dependency of ROS 2 Humble (
ros-humble-ros-gz). - Colcon: The standard ROS 2 build tool.
- Git: For cloning the repository.
-
Create a Colcon Workspace: If you do not have one already, create a new ROS 2 workspace.
mkdir -p ~/ros2_ws/src cd ~/ros2_ws
-
Clone the Repository: Clone this repository into your workspace's
srcdirectory.git clone <your-repository-url> src/ohms_sim
-
Install Dependencies: Use
rosdepto install any missing dependencies.rosdep install -i --from-path src -y --rosdistro humble
-
Build the Workspace: Build the
ohms_simpackage usingcolcon.colcon build --packages-select ohms_sim
Once the package has been built successfully, you can run the various simulation scenarios.
-
Source the Workspace: Before running any ROS 2 commands, you must source the workspace's setup file in every new terminal.
source ~/ros2_ws/install/setup.bash
-
Launch a Simulation: Use the
ros2 launchcommand to start a simulation. Several pre-configured scenarios are available.-
Example 1: Single UGV in a Forest This will launch a single Husky UGV in the
forestworld.ros2 launch ohms_sim single_robot_sim.launch.py world:=forest
-
Example 2: Dual UGV-UAV Team This launches a team consisting of one Husky UGV and one X4 UAV.
ros2 launch ohms_sim dual_robot_uav_ugv_sim.launch.py world:=forest
-
Example 3: Large Heterogeneous Team This launches a team of two UGVs and two UAVs in a larger, denser forest environment.
ros2 launch ohms_sim multi_robot_2uav_2ugv_sim.launch.py world:=forest5x
-
The repository is organised to allow for easy customisation and extension.
/launch: Contains the top-level ROS 2 launch files for starting different simulation scenarios./config: Holds the YAML files used to configure the parameters for each simulation, such as robot names, initial poses, and sensor loadouts./worlds: Contains the Gazebo.sdfworld files./models: Contains the Gazebo.sdfmodel files for the robots and other objects in the world./src: Contains the C++ source code for theCommsEmulatorHelperGazebo plugin./docs: Contains detailed project documentation, including the project roadmap.
To create a new scenario, you can create a new YAML file in the /config directory and a corresponding launch file in the /launch directory.
We welcome contributions from the community! Whether you are reporting a bug, suggesting a new feature, or submitting code, your input is valuable. Please consult our community guidelines to get started.
- Project Roadmap: Outlines our phased release plan, from the current prototype to future stable versions.
- Contribution Guidelines: Explains how to contribute to the project.
- Code of Conduct: Our commitment to a welcoming and inclusive community.
If you use OHMS-NetSim in your research, please cite our work. (Please add your publication details here once available)
@inproceedings{your-lastname-2025-ohms,
title = {OHMS-NetSim: An Outdoor Heterogeneous Multi-Robot System Simulator for Communication-Aware Robotics},
author = {Your Name and Co-authors},
booktitle = {Name of Conference or Journal},
year = {2025},
address = {City, Country}
}The simulation worlds marsyard2020, marsyard2020forest, and marsyard2020forest5x are adapted from the leo_simulator-ros2 package, developed by the Mars Society Polska and the Leo Rover team. We extend our gratitude for their excellent work.