Starting with ROS on the Simulation

The simulation package neo_simulation2, comes along with all the new ROS 2 features. Like it’s predecessor, neo_simulation2 package is fully equipped with all the Neobotix robots that is available in the market. By combining the novelty of ROS 2 and the state-of-the-art Neobotix platforms would allow the users to learn and develop various reliable and robust application that caters their needs in both the research and as well as in industries.


Configuration and Launch


Setup environment variables

1. Select the robot (default mpo_700)

export MY_ROBOT=mpo_700
  1. Select the world
export MAP_NAME=neo_workshop

Available Parameters

You can read about the details of the robot in our official website

MY_ROBOT mpo_700, mpo_500, mp_400, mp_500

Please go down to see the available worlds.



Launching the simulation is fairly easy

Just use the file that we configured in the chapter above.

ros2 launch neo_simulation2

After the launch is completed, the simulation is ready to use.

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




A simple world used to test simple maneuvers. Also this world, allows you to start building and testing your application by spawning the various readily available simulated industrial machineries from gazebo models.



A race track shaped world mainly designed to test the robots for complex maneuvers.



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


Customizing the Robot Model


We provide options for you to choose between two laser scanners for our robots depending on the application and usage.

  1. SICK S300
  2. SICK Microscan

For simulation, you can select you required laser scanners by commenting/uncommenting out the desired part, based on the instructions given in the URDF file.

In the repository for our robot models, we can find the sick_laser urdf file for all the robots, you can modify the desired laser-scanner in that file.

An example to MP-400 is given below.

<!-- SICK S3 sensor: Uncomment/Comment it out if required  -->
<!-- <visual> -->
<!--    <origin xyz="0 0 -0.12" rpy="-1.57 0 3.14" /> -->
<!--            <geometry> -->
<!--                    <mesh filename="package://neo_simulation/robots/mpo_500/meshes/SICK-S300.dae" scale="0.001 0.001 0.001" /> -->
<!--            </geometry> -->
<!--</visual> -->
<!--<collision> -->
<!--    <origin xyz="0 0 0" rpy="-1.57 0 3.14" /> -->
<!--            <geometry> -->
<!--                <mesh filename="package://neo_simulation/robots/mpo_500/meshes/SICK-S300.dae" scale="0.001 0.001 0.001" /> -->
<!--            </geometry>  -->
<!--   </collision>  -->
<!-- Microscan 3 sensor: Uncomment/Comment it out if required  -->
        <origin xyz="-0.0 0 -0.06" rpy="1.57 0 0" />
        <mesh filename="package://neo_simulation/robots/mpo_500/meshes/SICK-MICROSCAN3.dae" scale="0.001 0.001 0.001" />
        <origin xyz="-0.0 0 -0.06" rpy="1.57 0 0" />
        <mesh filename="package://neo_simulation/robots/mp_500/meshes/SICK-MICROSCAN3.dae" scale="0.001 0.001 0.001" />
</collision> -->


We also provide an option of IMU. Add, Remove or Adjust the position of IMU based on your requirements. An example is given below.

<!--+++++++++++++++++++ IMU ++++++++++++++++++++++++-->
<!-- Comment or uncomment based on your requirement -->
  <xacro:include filename="$(find neo_simulation)/robot_model/mmo_700/urdf/xacros/imu.xacro" />
  s<xacro:imu name="imu_1" parent="base_link">
    <origin xyz="0.100 0 0.300" rpy="0 0 3.14" />

There will be other sensors added and further developments will be updated.