A platform for training UAV navigation policies in complex unknown environment.
Try to train your own autonomous flight policy and even transfer it into real UAVs! Have fun ^_^!
Trained policy can be deployed in the real world directly!!!
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
tools/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 msgpack msgpack-rpc-python
pip install -e .
Install customized stable-baselines3
cd stable-baselines3
pip install -e .
Download a AirSim environment, such as SimpleAvoid.
If you want to train in other environments please download AirSim released environments from here and run it.
Alt+Enter
to exit the full-screen mode for the first time.settings.json
at the bottom of README to your /Document/AirSim/settings.json
.Install other python packages
pip install wandb pyqtgraph seaborn keyboard tensorboard tqdm
Start training
cd UAV_Navigation_DRL_AirSim
python scripts/start_train_with_plot.py
ClockSpeed
in your path to Documents\Airsim\settings.json
over than 1 (such as 10) to speed up the training process.log
folder.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
City_400_400
Random obstacles
Other Airsim build in envrionment (AirSimNH and CityEnviron):
dynamic_name
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
. Or you can use ComputerVision
mode to train without dynamics. 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": "Multirotor",
"ViewMode": "",
"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
}
]
}
}