Self Balancing Bot

This project aims at stabilising a two-wheeled robot (naturally in non-equilibrium)
using Reinforcement Learning.
It is completed under the guidance and mentorship of Artificial Intelligence and Electronic Society(ArIES) of IIT Roorkee.

Description

This project is completed under two phases.

  1. Software Phase
  2. Hardware Phase

Sofware Phase

In this phase, a virtual bot is created using ROS URDF by defining its body structure, joints and their degree of freedom. PyBullet is used to simulate physics (gravity, friction, etc.) The checkboard environment is selected as default env. in pyBullet. The simulation is made accordingly to match the real-world scenario (like g=9.8m/s^2) Q-learning is used as a Learning algorithm for the agent implemented using deep Q-Network, a deep neural network.

Hardware Phase

After the software phase, a trained weight is obtained to be deployed and fine-tuned in the real world. Two 12V DC motors are used of 18000 RPM is used in wheels.L298N motor driver is used for DC motor control. MPU-9250 is used for sensing purposes.
It has two chips:

Installation and Set-Up

For running and testing the software simulation, go through the readme of balancebot-project.

Testing

The real-world testing guide will be updated soon.

Learning Experience (Take Aways)

This project’s duration was around 4 months. In the beginning, I had no knowledge of reinforcement learning. So go through theoretical part and learning the mathematics behind, was quite satisfactory.

Key Take-Aways:

Learning Resources

Other resources will be updated soon.

Feedback

All kinds of feedback (code style, bugs, comments etc.) are welcome. Please open an Issue on this Repository.

Contribution Guidelines

If you are familiar with the basics of contributing to GitHub repositories, feel free to skip this section. For total beginners who landed up here, before contributing, take a look at the blog-post to get started. Peace out!