MABEL
MABEL is an open-source legged balancing robot based on the Boston Dynamics Handle, with articulated legs that can adjust height and balance in multiple axes.
- Other
- Open source
- arduino
- 3D printable
Suggested by Robotheca, created by @raspibotics (opens in a new tab), from github.com/raspibotics/MABEL (opens in a new tab). Pinned to commit 81a43d7 (opens in a new tab).
- Hardware license
- GPL-3.0-only (opens in a new tab)
- Software license
- GPL-3.0-only (opens in a new tab)
- Commercial use
- Allowed
Photo and 3D model

3D preview converted from github.com/raspibotics/MABEL at 81a43d7, under GPL-3.0-only. View the original files from GitHub (14.1 MB) (opens in a new tab)
What it can do
Written by Robotheca from the project's documents.
- Self-balances on two wheels using a PID controller running on an Arduino, with angle input from an MPU-6050 gyro/accelerometer.
- Articulated legs driven by six servos, giving active balancing in multiple axes and adjustable leg length.
- Leg positions set from (x, y) coordinates through an inverse kinematics solver (IKSolve) on the Raspberry Pi.
- Driven by serial commands from the Raspberry Pi to the Arduino: turn left, turn right, move forwards, move backwards, or stay still.
- Intended to be controllable over Bluetooth, with optional Wiimote or approxeng.input controller support, though controller code is still under development.
Bill of materials
This repository has no parts list Robotheca can read yet.
Build guide
The creator's steps, each with its instructions.
- 1Press the bearings into the leg joints
- 2Attach 4 MG996R servos to the upper legs and body panels with M4 bolts
- 3Push fit and screw the servo horns into the driver gears and attach them to the
- 4Attach the NEMA17 motors to the lower legs and fit the wheels
- 5Attach the lower legs, upper legs and body panels together with M5 locknuts
The guide appears here as you scroll.
Guide by @raspibotics (README.md), under GPL-3.0-only.
Wiring and electronics
Notes written by Robotheca from the project's documents.
Main parts
- Raspberry Pi Zero W, which handles Bluetooth, servo control and inverse kinematics.
- Arduino Uno running the PID balancing firmware, based on YABR.
- MPU-6050 gyro/accelerometer for measuring the robot's angle.
- PCA9865 servo controller (a PiconZero was used previously) driving the servos.
- Six MG996R metal gear servos for the legs.
- Two 38mm NEMA17 stepper motors for the wheels, driven by A4988 or DRV8825 drivers on an Arduino CNC Shield.
- Variable voltage regulator, optionally two, to supply servos at a higher voltage than the Pi's 5V.
- 11.1V 2800mAh 3S LiPo battery with a LiPo charger.
Connections
- The Raspberry Pi and Arduino are connected by USB and communicate over a serial port at 9600 baud.
- The PCA9865 servo controller connects to the Raspberry Pi, which drives the six leg servos through it.
- The two stepper drivers sit on an Arduino CNC Shield attached to the Arduino Uno.
- The LiPo battery powers the robot, with a variable voltage regulator supplying the Raspberry Pi and servos at different voltages.