The project
A six-wheeled rocker-bogie rover on a 3D-printed chassis. Every wheel has its own drive motor and its own steering servo, so it can crab sideways, spin in place, and pick its way up a staircase. A Raspberry Pi handles video and the web UI; an ESP32 does the real-time motor and servo work; you fly it from a browser over WebRTC with a gamepad.
How it fits together
- Printed the rocker-bogie chassis from an open Printables design originally built for the DTU RoboCup, which is what makes the stair climbing work at all.
- Twelve actuators to coordinate: six drive motors and six steering servos, each wheel independently steerable.
- A Raspberry Pi 3B runs the video pipeline and web control UI; an ESP32 handles the hard real-time motor and servo timing.
- Control is a browser page over WebRTC, with live video and gamepad input, so there is no bespoke client app to install.
The trade-offs that mattered
Two boards, split by timing requirement
The Pi is comfortable doing video, networking, and web serving but is a poor fit for jitter-sensitive servo timing. Handing the real-time work to an ESP32 removed a whole category of problems rather than tuning around them.
WebRTC and a browser, not a custom app
Low-latency video and a gamepad both come free in the browser. Anyone with the URL can drive it, and there is nothing to install or keep in sync with the rover.
A test bed, not a finished thing
It is built to have autonomous navigation, an arm, and a dog treat dispenser hung off it later, so the interfaces between chassis, control, and compute are kept deliberately loose.
What I took from it
Splitting the slow thinking from the real-time work across two boards is the decision the whole build rests on. Everything else got easier once that line was drawn.
- Real-time control and general-purpose compute want different hardware, and pretending otherwise costs more than the second board does.
- Mechanical design does work that software cannot: the rocker-bogie geometry climbs stairs with no clever control loop at all.