- 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
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.
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.
Typed messages
I generated serialisation code for the client's ROS 2 message types, so joint states and commands map one-to-one.
Real-time friendly
Networking runs alongside the motor control loop without disturbing its timing.
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.