Skip to content
Adam Probert

For myself

Cheddar

A 3D-printed rover with six driven, independently steered wheels.

Sheet
3 of 25
Period
2025-26
Kind
Robotics
Org
Personal

What it was

Cheddar can crab sideways, spin on the spot and climb stairs. It has a 3D-printed rocker-bogie chassis with a drive motor and steering servo for every wheel, so there's quite a lot going on underneath it. The Raspberry Pi runs the video and web controls. An ESP32 handles the motors and servos, and I drive it from a browser with a gamepad over WebRTC. It's finished and alive and well. I'd still like to give it an arm and have it dispense dog treats at some point.

Cheddar
Testing the motors & servos for the first time
"ChedWeb" UI - the control panel for the Rover
Shell on
Shell off
The inner workings
Custom built shell to mount the enormous amount of hardware
cheddar: project diagram

Build

  • I printed an open rocker-bogie chassis design from Printables, originally made for the DTU RoboCup. The suspension is what lets it pick its way up stairs.
  • There are 12 actuators, 6 drive motors and 6 steering servos. Every wheel steers independently.
  • A Raspberry Pi 3B runs the video pipeline, networking and browser controls. The ESP32 does the motor and servo timing.
  • Live video comes over WebRTC and the controls work with a gamepad. You just open the control page in a browser.

Key decisions

  • The Pi and ESP32

    The Pi can do the video and web work comfortably. Servo timing needs to be more predictable though, so that went on the ESP32.

  • Adding to it later

    Autonomous navigation, an arm and a treat dispenser are still things I want to try. The chassis, controls and compute are separate enough that I can work on those without rebuilding the rover.

Lesson learned

A year later I tried a USB cable. It worked immediately.the rest of it ↓

I shelved this for the best part of a year over a serial connection. I was set on using the Pi's GPIO pins to talk to the ESP32. It worked perfectly in isolation, Pi to ESP32 to drivers to motors and servos, then fell apart every time I put it all together. When I came back to it I tried a USB cable instead. It worked immediately. I'd spent weeks trying to get the GPIO version working and hadn't even tried USB.

Further reading

Contact

Say hello.

If you’re stuck on something or thinking about starting a project, I’m happy to chat it through.

Get in touch
  • Something you're building, or thinking about building
  • A problem you're stuck on and want another pair of eyes on
  • Anything on this site you want to know more about
  • A role or piece of work worth a conversation