日本語版はこちら / 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/
└── merge_file/
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/
- MadgwickAHRS library
- Provider: Arduino LLC
- Source: https://github.com/arduino-libraries/MadgwickAHRS
- Redistributed files:
robbit/setting/merge_file/MadgwickAHRS.crobbit/setting/merge_file/MadgwickAHRS.h
- Usage:
- The library is statically linked when compiling the source code for both robbit and robbit-esp.
- Its header file is included by
robbit/setting/merge_file/main.cppandrobbit-esp/robbit-esp.ino, and the library is statically linked at build time.
- License: GNU Lesser General Public License v2.1 or later
- The full license text is included in this repository: COPYING.LESSER.
- When reusing or redistributing code that uses this library, ensure that you comply with the LGPL terms.
- Released version 1.0 of robbit_project (Two-Wheeled Self-Balancing Robot Project).

