Code Monkey home page Code Monkey logo

airsimdrl's Introduction

Deep Reinforcement Learning for Airsim Environment

Quadrotor Self-Flight using Depth image

Check 1 min madness

1 min madness video

Environment

Unreal Engine 4

  • Original environment
  1. Vertical column
  2. Horizontal column
  3. Window
  4. Vertical curved wall

  • Different Order of obstacles environment
  1. Window
  2. Horizontal column
  3. Vertical curved wall
  4. Vertical column
  • Different type of obstacles environment
  1. Horizontal curved wall
  2. Reversed ㄷ shape
  3. ㄷ shape
  4. Diagonal column

Parameter

  • Timescale: 0.5 (Unit time for each step)
  • Clockspeed: 1.0 (Default)
  • Goals: [7, 17, 27.5, 45, 57]
  • Start position: (0, 0, 1.2)

Reset

Respawn at the start position, and then take off and hover.
It takes about 1 sec.

Step

Given action as 3 real value, process moveByVelocity() for 0.5 sec.
For delay caused by computing network, pause Simulation after 0.5 sec.

Done

If a collision occurs, including landing, it would be dead. If x coordinate value is smaller than -0.5, it would be dead. If it gets to the final goal, the episode would be done.

State

  • Depth images from front camera (144 * 256 or 72 * 128)
  • (Optional) Linear velocity of quadrotor (x, y, z)

Action

  • Discrete Action Space (Action size = 7)
    Using interpret_action(), choose +/-1 along one axis among x, y, z or hovering.

  • Continuous Action Space (Actions size = 3)
    3 real values for each axis. I decided the scale as 1.5 and gave a bonus for y axis +0.5.

Reward

  • Dead: -2.0
  • Goal: 2.0 * (1 + level / # of total levels)
  • Too slow(Speed < 0.2): -0.05
  • Otherwise: 0.1 * linear velocity along y axis

(e.g. The faster go forward, The more reward is given. The faster go backward, The more penalty is given.)

Agent

  • Recurrent DQN
  • Recurrent A2C
  • Recurrent DDPG
  • Recurrent DDPG + PER
  • Recurrent TD3 + PER (BEST)

Result

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.