Distributed Robotic Arm Control Architecture
Dec 2025 – Mar 2026
A distributed robotic arm control system split across three heterogeneous processors. A Raspberry Pi runs ROS2 Humble, hosting publisher/subscriber nodes for servo command routing and a Flask browser GUI for remote operation. An ESP32 sits in the middle, handling wireless communication, command parsing, and bidirectional forwarding between the ROS2 layer and the FPGA. A Tang Nano 9K FPGA owns all hard real-time I/O in Verilog: multi-channel UART for inter-processor communication, 50 Hz servo PWM generation, and CRC-8 error detection for data integrity.
The full control chain runs end to end: a user issues commands through the browser GUI, ROS2 publishes them, the ESP32 forwards over UART, and the FPGA drives the arm servos in real time. Replacing HTTP polling with UDP over a direct ESP32 access point cut measured round-trip control latency by over 90%. PWM output accuracy was verified on oscilloscope at sub-1% pulse-width error.
Highlights
- Split a robotic arm control system across three processors: Raspberry Pi (ROS2 + Flask GUI), ESP32 (wireless forwarding), and FPGA (Verilog real-time I/O)
- Wrote Verilog modules for multi-channel UART, 50 Hz servo PWM generation, and CRC-8 error detection on a Tang Nano 9K
- Cut measured control latency over 90% by replacing HTTP with UDP over a direct ESP32 access point