# AirsimDRL
**Repository Path**: lrl666ff/AirsimDRL
## Basic Information
- **Project Name**: AirsimDRL
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-04-30
- **Last Updated**: 2025-04-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Deep Reinforcement Learning for Airsim Environment
Quadrotor Self-Flight using Depth image
#### NOTE
It is a capstone project for undergraduate course.
It did work when I tried, but there were many trial and errors.
I'm sorry that I didn't consider any reproducibility (e.g. random seed).
##### Check 1 min madness
[](https://youtu.be/C9P0V5Hif54)
# Environment
## Link to download executable
#### NOTE: These executables can be run only on Windows OS.
[Easy](https://drive.google.com/file/d/1LigXGvDj0XZvgkffqBwe8XRWRmzMR93P/view?usp=sharing)
[Normal](https://drive.google.com/file/d/1KtiHr_qpw37qq3PPiAKzLN9THm2aQZOU/view?usp=sharing)
[Hard](https://drive.google.com/file/d/110mekUMdnYr5wNaEGVbsSZpwty12knzX/view?usp=sharing)
## How To Use
Execute the environment first.
If you can see the rendered simulation, then run what you want to try (e.g. python td3_per.py)
## Description
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
