beckerpascal / roboticsControl

PID controller and Reinforcement Learning approach to control a self-balancing robot (segway)
MIT License
88 stars 28 forks source link

roboticsControl

Repository for the class 'Software Technology Course with a Varying Content' and the topic 'Introduction in Artificial Intelligence'.

This repository contains two different controlling algorithms. PID and Reinforcement learning (Q-Learning). The purpose of the lecture was to control a segway-like platform and compare the controlling behavior.

The result is that the PID controller is able to control the model. But it takes a lot of optimization to get the best parameters. Also the reinforcement learning agent is able to control the model. It is learning really fast and after four to five failures it balances the segway multiple minutes in place.

Some useful links:

Installation

  1. Download, extract and install the education version of VREP (Download-Link)
  2. Clone this repository
  3. Start VREP and open one of the scenes in the folder vrep
    • There are three different sizes of inverted pendulums. All work but have different behavior as mass and height changes
  4. Run python rl_simulation.py from a console
  5. See how the the reinforcement learning agent learns to balance the inverted pendulum

More Information

If you want to have more information of the reinforcement agent, change the debug flag at line 14 in the file rl_simulation.py from 0 to 1

PID

In this section you find the evaluated values for a good controlling with a PID controller

PID tunings

A few different tunings found out to work more or less well.

Bullet engine

|a|:

a2 + v2:

a**2 + |x|

a2 + x2

a2 + x2 / t**2

|a| + |x| + |v| / t^2

Pitch-delta

Oldies but goldies

ODE engine

a2 + x2 / t**2

|a| + |x| + |v| / t^2

Reinforcement Learning / Q-Learning

The basic Q-Learning approach is used to implement an easy and fast solution to control the segway.