Skip to content

Controlling a Rigidbody Quadcopter using Control Theory and Reinforcement Learning

License

Notifications You must be signed in to change notification settings

AlexandreSajus/Quadcopter-AI

Repository files navigation

Quadcopter AI

Controlling a 2D Quadcopter with Rigidbody Physics using Control Theory and Reinforcement Learning

Main Game

The main environment consists of controlling the drone to hit as many balloons within a time limit against AI drones.

The currently implemented algorithms are:

  • Human: Control of the propellers with the arrow keys
  • PID: Controller in control theory that uses the error between the drone position and the target position to output propellers thrusts
  • SAC: Reinforcement Learning agent that trained itself on multiple episodes of the game, by testing different actions and learning from the rewards it gets.

An explanation of the environment and its agent is explained in this paper.

I also made a devlog about this project here:

Youtube Devlog

I added another game where the drone follows the mouse to move snow around a snowglobe.

Snowglobe

Usage

The games are available to try as a Python package.

Make sure you have Python installed on your computer. Then, in a terminal, run the following commands:

1. Force Downgrade pip

python -m pip install pip==21

2. Install the package with pip in your terminal:

pip install git+https://github.com/AlexandreSajus/Quadcopter-AI.git

3. Run the game:

If you want to run the balloon game:

python -m quadai
  • Control your drone by tapping the arrow keys
  • Reach as many balloons as you can within the time limit

If you want to run the snowglobe game:

python -m quadai snowglobe
  • Control the drone using your mouse
  • The drone's airflow will move the snow around

About

Controlling a Rigidbody Quadcopter using Control Theory and Reinforcement Learning

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages