Robotics

Angus - Self-Balancing Robot

A two-wheel balancing robot built to learn embedded control from the sensor all the way to the motors.

Featured buildC++ESP32-C3PID controlEncoders
RoleIndependent build
StatusWorking prototype
FocusControls + embedded
Angus self-balancing robot with its chassis, electronics, motors, and wheels visible

Overview

Angus is a two-wheeled robot that continuously measures its angle and drives its wheels to keep itself upright. I designed and built the project to learn how mechanical design, electronics, sensing, and embedded control work together in one system.

How it works

An ESP32 reads tilt data from an IMU and compares the measured angle with the target upright position. A PID controller turns that error into motor commands, correcting the robot before it falls too far to recover. Wheel encoders measure movement, and a WebSocket server allows driving and steering commands to be sent from a phone.

  • ESP32 microcontroller running embedded C++
  • IMU for real-time orientation data
  • Two DC motors with encoder feedback
  • PID control for balancing

Development

I modelled the chassis, assembled the electronics, wrote the control software, and tuned the response on the physical robot. When the system failed, I tested each subsystem separately with a digital multimeter instead of assuming every problem came from the controller.

Results

The finished prototype can balance and accept wireless movement commands. The project showed me that reliable control depends on the complete system: clean sensor data, predictable timing, solid wiring, responsive motors, and a stiff mechanical frame.

Previous project

Image Processor

Next project

Wearable Obstacle Detector