Client storyRobotics

ROS 2 on an ESP32-S3 Humanoid Robot: A Native DDS Stack With No Middleware

A robotics client's humanoids and arms ran on ESP32-S3 boards, and they wanted them to join their ROS 2 system directly. I built a bare-metal DDS/RTPS implementation so each robot talks to ROS 2 with no agent in between.

0bridge or agent processes
NativeROS 2 topics from the MCU
1 stackfor humanoids, arms and more
Client
Robotics company (under NDA)
Platform
ESP32-S3 controllers across a product line
Goal
First-class ROS 2 support
Built
Bare-metal DDSI-RTPS stack

The problem

The client's humanoid robots, robotic arms and accessories all used ESP32-S3 controllers. Their customers wanted to drive them from ROS 2. The standard answer, micro-ROS, uses Micro XRCE-DDS, which needs an agent process running on another computer to bridge each device into the ROS 2 network.

For the client that meant an extra computer, extra configuration and another point of failure for every installation. They wanted their robots to appear on the ROS 2 network just like any other node.

How I solved it

  1. Speak the wire protocol directly

    ROS 2 nodes discover and talk to each other over DDS, using the RTPS wire protocol. I implemented the parts of DDSI-RTPS the robots needed directly on the ESP32-S3.

  2. Discovery that just works

    The robots announce themselves with standard participant and endpoint discovery, so ROS 2 tools see their topics with no extra setup.

  3. Typed messages

    I generated serialisation code for the client's ROS 2 message types, so joint states and commands map one-to-one.

  4. Real-time friendly

    Networking runs alongside the motor control loop without disturbing its timing.

  5. Test against real ROS 2

    Every release was tested against a standard ROS 2 install with common DDS implementations.

What the client got

Results

  • Robots that join a ROS 2 network directly, with no agent or bridge computer.
  • One shared networking stack across humanoids, arms and accessories.
  • Simpler installs for their customers, and fewer support calls.
  • Code they own and can extend as they add new robots.
Related guideROS 2 on Microcontrollers: micro-ROS vs a Native DDS Implementation
Nikhil Robinson

Embedded systems consultant at TechProgeny, Bengaluru. 7+ years and 29+ shipped products across firmware, embedded Linux, edge AI, apps and IoT servers.