ReBaBot is an extension of the original BaBot project by Johan Link, introducing Reinforcement Learning (RL) as an alternative to the traditional PID controller for ball balancing control.
Instead of manually tuned PID actions, ReBaBot uses RL algorithms to decide the control actions required to stabilize and balance the ball.
A special thanks goes to Johan Link for the original BaBot idea and implementation, which served as the foundation for this project.
The goal of ReBaBot is to replace the classical PID-based control system with a Reinforcement Learning approach. The system learns how to balance a ball dynamically on a platform through interaction and reward feedback.
We experimented with two RL algorithms:
- Soft Actor-Critic (SAC)
- Proximal Policy Optimization (PPO)
The RL model is responsible for generating the control actions that would normally be computed by the PID controller.
- A Raspberry Pi 5 is connected directly to the robot’s control board.
- The Raspberry Pi runs the Reinforcement Learning inference/training logic.
- Communication between the Raspberry Pi and the robot is handled via serial communication.
- Sensor feedback and state information are sent to the RL agent, which responds with control actions.
report.pdf→ Detailed explanation of the project, implementation, and experiments (recommended reading for full reproduction)3D_models.pdf→ STL files of the robot (both first and second versions)datasets→ CSV files containing the individual runs of PPO and SAC, and the PID datasetstensorboard_training_logs→ Tensorboard log filesplot_result.py→ Script to plot the training resultsmodels→ saved RL models
This project is built upon the original BaBot system by Johan Link.
We sincerely thank him for the initial idea that made this work possible.