Balance Ball
A spherical robot that balances and maneuvers in three degrees of freedom using three orthogonal flywheels and a omnidirectional wheel base.
- Other
- Open source
- 3D printable
Suggested by Robotheca, created by @sytnocui (opens in a new tab), from github.com/sytnocui/BalanceBall (opens in a new tab). Pinned to commit 411e3fe (opens in a new tab).
- Hardware license
- Apache-2.0 (opens in a new tab)
- Software license
- Apache-2.0 (opens in a new tab)
- Commercial use
- Allowed
Photo and 3D model

3D preview converted from github.com/sytnocui/BalanceBall at 411e3fe, under Apache-2.0. View the original files from GitHub (887 KB) (opens in a new tab)
- Degrees of freedom
- 3
What it can do
Written by Robotheca from the project's documents.
- Moves in three rotational degrees of freedom on an omnidirectional wheel base
- Performs three-axis angular velocity closed-loop control with power assist mode
- Tracks and follows a three-axis target attitude using a handheld terminal
- Publishes real-time three-axis attitude data over Wi-Fi for use as a game controller
- Operates as a spherical version of a balancing cube using three orthogonal flywheels
Bill of materials
This repository has no parts list Robotheca can read yet.
Build guide
The creator's steps, each with its instructions.
- 1Prepare 3D printed parts and materials
- 2Assemble the spherical structure and internal frame
- 3Install the three orthogonal flywheels and motors
- 4Mount the omnidirectional wheel base
- 5Assemble and wire the control boards (main, FOC, encoder, gyroscope)
- 6Install and configure the electronics (battery, motors, sensors)
- 7Flash firmware to the control boards
- 8Calibrate and test the system
The guide appears here as you scroll.
Guide by @sytnocui (README.md), under Apache-2.0. The English translation is by Robotheca, shared under the same license.
Wiring and electronics
Notes written by Robotheca from the project's documents.
Main parts
- Main control board with STM32F103C8T6 microcontroller
- Three FOC driver boards based on GD32C103CBT6 for motor control
- Three brushless motors with flywheels for angular momentum generation
- Three encoder boards using MT6816 sensors for motor position feedback
- IMU board with ICM20602 or MPU6050 for attitude sensing
- ESP8266 Wi-Fi modules for wireless communication
- CAN bus interface between main control and driver boards
- 1s lithium battery 300mAh for handheld terminal power
- 3s lithium battery 550mAh 85C for main robot power
Connections
- Main control board connected to IMU via SPI or I2C
- Main control board connected to three FOC driver boards via CAN bus
- Each FOC driver board connected to one encoder board via SPI
- Each FOC driver board connected to one brushless motor via three-phase power lines
- ESP8266 modules connected to main control and handheld terminal via UART
- Power supplied to driver boards and main control board via cascaded power lines
- Handheld terminal communicates with main robot via Wi-Fi