Starting with ROS 2 on Modern Gazebo

With Classic Gazebo reaching End-of-Life in January 2025, it is recommended to use modern Gazebo for simulating our MP-Series and as well as the ROX robots.

Note

As of May 2025, key updates to the simulation, such as support for different ROX variants other than ROX Argo, as well as support for MP-Series robots, have been provided. This updates are only for ROS 2 versions Jazzy and above.

Please contact us directly if you require a simulation with all the new updates in Humble.

ROX

Setup Environment Hooks

Attention

This step is for the Humble and Iron versions

In order for Gazebo to open the models for the robots and the objects in the environment. It is essential to define the gz model path for loading these objects. For example, if there is workspace called rox_ws, then the path should be defined as follows:

export GZ_SIM_RESOURCE_PATH=~/rox_ws/src/rox:~/rox_ws/src/neo_gz_worlds/models/

Attention

  • Here we define the path for both the robot models and as well as the object models.
  • Please update the path according to your workspace.

Launch

Launching the simulation of ROX is fairly easy

ros2 launch rox_bringup bringup_sim_launch.py

Launch Arguments

Attention

Certain arguments such as arm_type and gripper_type are available only for certain robots. It is recommended to check for the arguments by adding the –show-launch-arguments tag at the end of the above command.

Attention

Available on Jazzy and above distributions

Arguments (pass arguments as '<name>:=<value>'):

'imu_enable':
    Enable IMU - Options: True/False
    (default: 'False')

'd435_enable':
    Enable Realsense - Options: True/False
    (default: 'False')

'scanner_type':
    Scanner Type. Valid choices are: ['', 'nanoscan', 'psenscan']
    (default: 'nanoscan')

'arm_type':
    Arm Types
. Valid choices are: ['', 'ur5', 'ur10', 'ur5e', 'ur10e', 'ec66', 'cs66']
    (default: '')

'rox_type':
    ROX Drive Type
. Valid choices are: ['', 'argo', 'argo-trio', 'diff', 'trike']
    (default: 'argo')

'use_ur_dc':
    Set this argument to True if you have an UR arm with DC variant
    (default: 'False')

'gripper_type':
    Gripper Types - Supported Robots [mpo-700, mpo-500]
. Valid choices are: ['', '2f_140', '2f_85']
    (default: '')

'headless_simulation':
    Run Gazebo in headless mode (no GUI) - Options: True/False
    (default: 'False')

Robot can be moved using the keyboard as shown in the Image below:

../_images/neo_teleop1.png

Video Tutorial

MP Series

After the tremendous success of the neo_simulation2 package targeting the classic Gazebo, the MP-series robots can now be used with the modern Gazebo. Based on user feedback, it was decided that the simulation should coexist with the real robot repository in order to make testing much easier—allowing seamless switching between the real robot and the simulation, just like we do for the ROX robots.

For launching the simulation of MPO-700:

ros2 launch neo_mpo_700-2 bringup_sim.launch.py

For launching the simulation of MP-400:

ros2 launch neo_mp_400-2 bringup_sim.launch.py

For launching the simulation of MPO-500:

ros2 launch neo_mpo_500-2 bringup_sim.launch.py

For launching the simulation of MP-500:

ros2 launch neo_mp_500-2 bringup_sim.launch.py

Launch Arguments

Attention

Certain arguments such as arm_type and gripper_type are available only for certain robots. It is recommended to check for the arguments by adding the –show-launch-arguments tag at the end of the above command.

Arguments (pass arguments as '<name>:=<value>'):

'world':
    Simulation world to load. Valid choices are: ['', 'neo_workshop']
    (default: 'neo_workshop')

'arm_type':
    Arm Types
. Valid choices are: ['', 'ur5', 'ur10', 'ur5e', 'ur10e', 'ec66', 'cs66']
    (default: '')

'imu_enable':
    Enable IMU - Options: True/False
    (default: 'False')

'd435_enable':
    Enable Intel RealSense D435 camera if true
    (default: 'False')

'scanner_type':
    Type of laser scanner to use
. Valid choices are: ['', 'sick_s300', 'sick_microscan3']
    (default: 'sick_s300')

'gripper_type':
    Gripper Types
. Valid choices are: ['', '2f_140', '2f_85']
    (default: '')

'use_docking_adapter':
    Enable docking adapter if true
    (default: 'False')

Video Tutorial

Worlds

neo_workshop

Experience the testing area situated in our campus through this world.

Note

This specific work is available in the neo_gz_world package.

../_images/world_gz.jpg

More worlds coming soon…

Manipulation

Please see the manpulation section here in the Starting with ROS 2 on the Robot for getting started with manipulation.

Followed by the neo_ur_moveit_config for controlling the mobile manipulator with the MoveIt package.