This is a new repo used for training UAV navigation (local path planning) policy using DRL methods.
- 2022-03-11
- Add wandb support
- 2022-03-10
- Remove gym_airsim_multirotor submodule
- Add gym_env as envrionment, include MultirotorSimple, Multirotor and FixedwingSimple dynamics
- Add train with plot
- Add SimpleAvoid UE4 environment
- Python 3.8
- AirSim v1.6.0
- pytorch 1.10.1 with gpu
- gym-0.21.0
- Pyqt5 5.15.6
- keyboard 0.13.5
- Stable-baselines3 v1.4.0
- Download CUDA11.6
pip3 install torch==1.10.1+cu113 torchvision==0.11.2+cu113 torchaudio===0.10.1+cu113 -f https://download.pytorch.org/whl/cu113/torch_stable.html
- You can use
scripts/test/torch_gpu_cpu_test.py
to test your PyTorch and CUDA
-
Clone this repo and the submodules
git clone https://github.com/heleidsn/UAV_Navigation_DRL_AirSim.git --recursive
-
Install gym_env
cd gym_env
pip install -e .
-
Install customized stable-baselines3
cd stable-baselines3
pip install -e .
-
Download a AirSim environment, such as Blocks from Here and run it
-
Start training
cd UAV_Navigation_DRL_AirSim
python scripts/start_train_with_plot.py
-
Evaluation
cd UAV_Navigation_DRL_AirSim
python scripts/start_evaluate_with_plot.py
This repo using config file to control training conditions.
Now we provide 3 training envrionment and 3 dynamics.
env_name
-
SimpleAvoid
- This is a custom UE4 environment used for simple obstacle avoidance test. You can download it from google drive.
-
City_400_400
- A custom UE4 environment used for fixedwing obstacle avoidance test. You can also get it from google drive
-
Random obstacles
-
Other Airsim build in envrionment (AirSimNH and CityEnviron):
dynamic_name
- SimpleMultirotor
- Multirotor
- SimpleFixedwing
Wandb is a central dashboard to keep track of your hyperparameters, system metrics. You can find examples here.
Note: If you use wandb, please run python as administators.
Training result using TD3 with no_cnn policy
2D depth navigation Benchmark for 3 different algorithms and 5 different policies in SimpleAvoid environment:
Note:
To speed up image collection, you can set ViewMode
to NoDisplay
.
For multirotor with simple_flight controller, please set SimMode
to Multirotor
. You can also set ClockSpeed
over than 1 to speed up simulation (Only useful in Multirotor
mode).
Also, it's better to put your environment files in your SSD rather than HDD.
{
"SeeDocsAt": "https://github.com/Microsoft/AirSim/blob/master/docs/settings.md",
"SettingsVersion": 1.2,
"SimMode": "ComputerVision",
"ViewMode": "NoDisplay",
"ClockSpeed": 1,
"SubWindows": [
{"WindowID": 0, "CameraID": 0, "ImageType": 0, "Visible": true},
{"WindowID": 1, "CameraID": 0, "ImageType": 3, "Visible": false},
{"WindowID": 2, "CameraID": 0, "ImageType": 3, "Visible": true}
],
"CameraDefaults": {
"CaptureSettings": [
{
"ImageType": 3,
"Width": 100,
"Height": 80,
"FOV_Degrees": 90,
"AutoExposureSpeed": 100,
"AutoExposureBias": 0,
"AutoExposureMaxBrightness": 0.64,
"AutoExposureMinBrightness": 0.03,
"MotionBlurAmount": 0,
"TargetGamma": 1.0,
"ProjectionMode": "",
"OrthoWidth": 5.12
},
{
"ImageType": 0,
"Width": 256,
"Height": 144,
"FOV_Degrees": 90,
"AutoExposureSpeed": 100,
"AutoExposureBias": 0,
"AutoExposureMaxBrightness": 0.64,
"AutoExposureMinBrightness": 0.03,
"MotionBlurAmount": 0,
"TargetGamma": 1.0,
"ProjectionMode": "",
"OrthoWidth": 5.12
}
]
}
}