Mobile Robots

Example Robots

Turtlebot3

There are 6 turtlebot actors, which have same ROS 2 Interfaces.

  • TurtlebotBurger is example of C++ implementation.

  • TurtlebotWaffle is example of Blueprint implementation.

  • RRTurtlebot* is physics turtlebot example with URRPhysicsJointComponent

ROS 2 Interface

Topic name

Topic type

About

cmd_vel

geometry_msgs/msg/Twist Msg

Robot velocity reference

odom

nav_msgs/msgs/Odometry Msg

Odometry from robot pose

scan

sesor_msgs/msg/LaserScan Msg

Laser scan msg

Turtlebot3 Burger

Turtlebot3 Burger Actors are examples of robots implemented in C++. All components, joints, etc are defined in C++.

Even if it is implemented in C++, we defined Blueprint child class to change parameters and assign meshes.

* Since all components are defined in C++, it is marked Edit in C++ in left components bar. * Hardcode mesh path in C++ cause error when the project is packaged.

Turtlebot3 Waffle

Turtlebot3 Waffle Actors are examples of robots implemented in BP. Both are child class of ARRBaseRobot and all additional components, joints, etc are defined in BP.

Custom Robot Creation TIPS

To create custom mobile robot

  1. Create child class of ARRBaseRobot
    1. Overwrite default parameters.

    2. Configure meshes and physics constraints in BP.

    3. If you want to dynamically spawn robots and pass random parameters, overwrite InitPropertiesFromJSON()

  2. Create child class of URobotVehicleMovementComponent if you want custom movement behaviour.
    1. Configure movecomponent in your Robot Class similar as BP_TurtlebotWaffle.

  3. Create child class of URRROS2Interfaces
    1. Overwrite default parameters such as topic name.

    2. Add necessary ROS Interfaces. Please also refer rclUE tutorials.

  4. Create ROS 2 Service client of /SpawnEntity and pass necessary parameters outside of UE if you want to dynamically spawn robots from outside of UE