ROS 2 to micro-ROS TCP tunneling via Integration Service!

Here at eProsima we have been working on a new exciting demo combining some of our cutting-edge technologies! The demo shows how two separate ROS 2 dataspaces hosted by distinct subnets can be put into communication over the internet thanks to Fast DDS TCP capabilities and to Integration Service, the tool enabling intercommunication of any protocol with DDS. The setup consists in a ROS 2 node publishing velocity directives via WAN to a Turtlesim application and to a micro-ROS node operating a Kobuki Turtlebot2, both running on the remote hub.

Find the video of the demo here.

In the first dataspace we have a ROS 2 publisher sending data over a Twist type message. More in detail, a joy node is in charge of obtaining displacement commands from a gamepad, which are then converted into ROS 2-understandable Twist type messages by a second teleop_twist_joy node.

The second dataspace handles two subscriptors which receive the Twist topic sent by the teleop_twist_joy node. The first subscriptor is a Turtlesim application, in charge of displacing the classic virtual turtle in its graphical interface according to the indications received by the remote node. The second subscriptor is a micro-ROS Client, communicated with the ROS 2 datapace via an Agent which allows it to subscribe to the Twist topic. With the data received, micro-ROS is in charge of instructing a Kobuki Turtlebot2, operated by an ESP32 MCU running FreeRTOS, to move accordingly.

The remote communication is mediated by Integration Service, which is able to translate the ROS 2 messages into a language understandable by Fast DDS, and thanks to the TCP capabilities of the latter it connects via WAN the instances launched in the two subnets. Thanks to this, we can see how both the Kobuki robot and the Turtlesim are moving as they are being operated by the remote gamepad.

3 Likes

Hi, your work is really nice.
Where micro-ROS Client runs on? A microcontroller? or a Linux platform?

Hi @Aerotic! The micro-ROS Client in this demo runs on an ESP32 MCU connected to the Agent via WiFi. The RTOS underneath is FreeRTOS.

Really neat! Can’t wait to get DepthAI / OAK integrated to give AI metadata results as well in real-time.

1 Like

Hi, That’s a nice demo. So, Kabuki robot is used with FreeRTOS. Can it use with Nuttx also? At first, I don’t understand what the turtle example used for. It’s really the application for real time embedded system using turtlesim.

NuttX is one of the Operating Systems supported by Micro-ROS, also you can use Zephyr.

In this demo, Micro-ROS is a special guest. What we are trying to show is the use of the ROS Integration Service.