Module/rl obstacle avoidance

From PaparazziUAV
Revision as of 07:39, 9 May 2019 by Gvdam (talk | contribs) (Created page with "<categorytree style="float:right; clear:right; margin-left:1ex; border: 1px solid gray; padding: 0.7ex;" mode=pages>Modules</categorytree> == Introduction == This module is a...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Introduction

This module is a proof-of-concept for a new method for obstacle detection and avoidance on quadrotors. One that does not require the addition of any sensors, but relies solely on measurements from the accelerometer and rotor controllers. The detection of obstacles is based on the principle that the airflow around a quadrotor changes when the quadrotor is flying near a surface. A well-known example of this is the ground effect, an increase in lift force close to a ground surface. Similarly, a change in dynamics occurs when a quadrotor is flying close to a wall or ceiling. The proposed method uses a reinforcement learning controller to detect obstacles based on these measurements, and take action to lead the quadrotor back to safety.

Note: This is an initial proof-of-concept, limited to the detection of obstacles underneath a quadrotor.

The module has been demonstrated on the Parrot Bebop 1 and Parrot Bebop 2 quadrotors to be able to successfully detect and avoid obstacles underneath. It is expected that the method can be extended to the detection of obstacles above a quadrotor as well. Extension to surfaces on the same level as the quadrotor, e.g. walls, is expected to require some significant improvements to the algorithm.

The work that this module is based on can be found here: http://resolver.tudelft.nl/uuid:1ce67e4b-1e63-4e9f-8644-360642a11be6

How does the algorithm work?

The detection of obstacles is based on a simplified quadrotor model and the estimation of an external force. In the current proof-of-concept, only the external force in the body z-axis is used for the detection of obstacles, but similar estimators can be derived for the external force in the body x and y-axis. This estimated external force in the body z-axis is used for the detection of obstacles underneath.

With:

  • , the estimated external force in z-direction (mass independent)
  • , the acceleration in the body z-axis, as provided by the onboard accelerometer
  • , the body roll rate
  • , the speed in body y-axis
  • , the body pitch rate
  • , the speed in body x-axis
  • , the propellor gains, estimated at the start of every flight
  • , the rotor speed in rad/s
  • , the drag coefficient iin body z-axis, estiamted during a system identification experiment
  • , the speed in body z-axis

Training

Python application

Todo

  • Store policy onboard the quadrotor, or in the settings file
  • Allow for running the module without the python application (using a previously determined policy)