日本語版はこちら / Read this document in Japanese
robbit_project is a project for building an accessible two-wheeled self-balancing robot (TW-SBR) using either a microcontroller or an FPGA. A TW-SBR balances itself by controlling its two wheels and tilting its body. The FPGA-based TW-SBR is called robbit, while the microcontroller-based TW-SBR is called robbit-esp.
robbit is an accessible FPGA-based two-wheeled self-balancing robot (TW-SBR). It aims to promote FPGA-based robotics and contribute to FPGA education and research. Hardware costs are reduced by using inexpensive, off-the-shelf components, while an FPGA development framework makes the system easier to develop.
The photos below show robbit. The upper part of the chassis contains the FPGA board, sensors, display, motor driver, and other components. The lower part contains the battery, geared motors, wheels, and other components that provide propulsion.
All modules implemented on the FPGA are written in Verilog HDL. robbit uses PID control for motion control, which is implemented in software running on a RISC-V processor. By developing robbit, developers can learn both hardware development through robot assembly and RTL design, and software development through improving motion with PID control.
robbit is designed for ease of development by using the open-source CFU Proving Ground framework. It costs slightly less than JPY 20,000 to assemble, making it more affordable than existing FPGA-based self-balancing robot development kits. The FPGA board is also removable, so teams can further reduce costs by sharing one FPGA board among multiple developers.
Changes to the PID software or hardware can significantly affect how robbit moves. When developing in a group, you could hold a contest to see whose robot can remain balanced the longest. Adding wind or using a slippery floor can make the challenge even more interesting.
To develop robbit, see the robbit directory. The directory
also contains a development manual
and a system manual.
Refer to these documents as you work. For further details, see the README in
the robbit directory.
.
└── robbit_project/
└── robbit/ <----------------- Reference directory
├── CFU-Proving-Ground/
└── setting/
├── image/
├── manual/
└── new_files/
In addition to robbit, you can build robbit-esp, a robot controlled by an ESP32-C3. The photos below show the completed robbit-esp. Its configuration is kept as similar to robbit as possible. Because robbit-esp supports real-time parameter communication over BLE, it does not have a display. Developing robbit-esp lets you learn microcontroller development and compare its behavior with robbit.
![]() |
![]() |
To develop robbit-esp, see the
robbit-esp directory. It contains a
development manual and a
system manual.
Refer to these documents as you work. For further details, see the README in
the robbit-esp directory.
.
└── robbit_project/
└── robbit-esp/ <----------------- Reference directory
├── image/
└── manual/
-
Fusion / Madgwick algorithm
- Source: https://github.com/xioTechnologies/Fusion
- License: MIT License
- Usage:
robbit/setting/new_files/Madgwick/contains the minimal roll-only AHRS wrapper used by robbit.robbit-esp/robbit-esp.inoembeds the corresponding minimal roll-only AHRS implementation.
- Both implementations are adapted from Fusion. The MIT license notice is included in the top-level LICENSE and alongside the robbit wrapper in robbit/setting/new_files/Madgwick/License.md.
-
ESP32_BleSerial
- Source: https://github.com/avinabmalla/ESP32_BleSerial
- License: MIT License
- Usage:
robbit-esp/robbit-esp.inouses this library for BLE serial communication on ESP32-C3. - Note: this repository keeps a patched ZIP archive for Arduino IDE installation at robbit-esp/ESP32_BleSerial_fixed.zip. The archive is based on the existing ESP32_BleSerial source code with small compatibility fixes for the current Arduino-ESP32 environment. The third-party MIT license notice is included in the top-level LICENSE.
-
ElectronicCats / mpu6050
- Source: https://github.com/ElectronicCats/mpu6050
- License: MIT License
- Usage:
robbit-esp/robbit-esp.inouses this library as the interface to the MPU-6050. - The third-party MIT license notice is included in the top-level LICENSE.
- Released version 1.0 of robbit_project (Two-Wheeled Self-Balancing Robot Project).

