Skip to content

RAISE-NTU OHMS-NetSim: Outdoor Heterogeneous Multi-Robot System Network Simulator

License

Notifications You must be signed in to change notification settings

RAISE-NTU/OHMS-NetSimold

 
 

Repository files navigation

OHMS-NetSim: Outdoor Heterogeneous Multi-Robot System Network Simulator

ROS 2 Humble Gazebo Fortress License

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.

OHMS-NetSim Forest Environment (Note: You will need to add a screenshot of your simulator to docs/images/ohms_sim_screenshot.png)


Table of Contents


Key Features

  • 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.

Installation

These instructions assume you are using Ubuntu 22.04 with ROS 2 Humble Hawksbill installed.

1. Prerequisites

  • 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.

2. Build Instructions

  1. 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
  2. Clone the Repository: Clone this repository into your workspace's src directory.

    git clone <your-repository-url> src/ohms_sim
  3. Install Dependencies: Use rosdep to install any missing dependencies.

    rosdep install -i --from-path src -y --rosdistro humble
  4. Build the Workspace: Build the ohms_sim package using colcon.

    colcon build --packages-select ohms_sim

Getting Started: Running a Simulation

Once the package has been built successfully, you can run the various simulation scenarios.

  1. 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
  2. Launch a Simulation: Use the ros2 launch command 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 forest world.

      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

Project Structure

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 .sdf world files.
  • /models: Contains the Gazebo .sdf model files for the robots and other objects in the world.
  • /src: Contains the C++ source code for the CommsEmulatorHelper Gazebo 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.


Community and Contribution

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.


Citation

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}
}

Acknowledgements

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.


About

RAISE-NTU OHMS-NetSim: Outdoor Heterogeneous Multi-Robot System Network Simulator

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 52.0%
  • C++ 44.7%
  • CMake 1.6%
  • GLSL 1.4%
  • Shell 0.3%