Predicting Like A Pilot: Dataset and Method to Predict Socially-Aware Aircraft Trajectories in Non-Towered Terminal Airspace
This repository contains the code for the paper submitted to ICRA 2022.
Jay Patrikar, Brady Moon, Jean Oh and Sebastian Scherer.
Brief Overview [Video]
Pilots operating aircraft in un-towered airspace rely on their situational awareness and prior knowledge to predict the future trajectories of other agents. These predictions are conditioned on the past trajectories of other agents, agent-agent social interactions and environmental context such as airport location and weather. This paper provides a dataset, TrajAir, that captures this behavior in a non-towered terminal airspace around a regional airport. We also present a baseline socially-aware trajectory prediction algorithm, TrajAirNet, that uses the dataset to predict the trajectories of all agents. The dataset is collected for 111 days over 8 months and contains ADS-B transponder data along with the corresponding METAR weather data. The data is processed to be used as a benchmark with other publicly available social navigation datasets. To the best of authors’ knowledge, this is the first 3D social aerial navigation dataset thus introducing social navigation for autonomous aviation.TrajAirNet combines state-of-the-art modules in social navigation to provide predictions in a static environment with a dynamic context.
First, we'll create a conda environment to hold the dependencies.
conda create --name trajairnet --file requirements.txt
conda activate trajairnet
The network uses TrajAir Dataset.
cd dataset
wget https://kilthub.cmu.edu/ndownloader/articles/14866251/versions/1
Unzip files in place as required.
For training data we can choose between the 4 training subsets of data labelled 7days1, 7days1, 7days1, 7days1 or the entire dataset 111_days. For example, to train with 7days1 use:
python train.py --dataset_name 7days1
Training will use GPUs if available.
Optional arguments can be given as following:
--dataset_folder
sets the working directory for data. Default is current working directory (default =/dataset/
).--dataset_name
sets the data block to use (default =7days1
).--obs
observation length (default =11
).--preds
prediction length (default =120
).--preds_step
prediction steps (default =10
).--delim
Delimiter used in data (default =--lr
Learning Rate (default =0.001
)--total_epochs
Total number passes over the entire training data set (default =10
).--evaluate
Test the model at every epoch (default =True
).--save_model
Save the model at every epoch (default =True
).--model_pth
Path to save the models (default =/saved_models/
).
For testing data we can choose between the 4 testing subsets of data labelled 7days1, 7days2, 7days3, 7days4 or the entire dataset 111_days. For example, to test with 7days1 use:
python test.py --dataset_name 7days1 --epoch 1
Optional arguments can be given as following:
--dataset_folder
sets the working directory for data. Default is current working directory (default =/dataset/
).--dataset_name
sets the data block to use (default =7days1
).--obs
observation length (default =11
).--preds
prediction length (default =120
).--preds_step
prediction steps (default =10
).--delim
Delimiter used in data (default =--model_dir
Path to load the models (default =/saved_models/
).--epoch
Epoch to load the model.
--input_channels
The number of input channels (x,y,z) (default =3
).--tcn_kernels
The size of the kernel to use in each convolutional layer (default =4
).--tcn_channel_size
The number of hidden units to use (default =256
).--tcn_layers
The number of layers to use. (default =2
)
--num_context_input_c
Number of input channels for context (wx,wy) (default =2
).--num_context_output_c
Number of output channels for context (wx,wy) (default =7
).--cnn_kernels
The size of the kernel to use (default =2
).
--gat_heads
Number GAT heads (default =16
).--graph_hidden
The number of hidden units to use (default =256
).--dropout
Dropout used by the neural network (default =0.05
).--alpha
Negative step for leakyReLU activation (default =0.2
).
--cvae_hidden
The number of hidden units to use (default =128
).--cvae_channel_size
The number of encoder/decoder units to use (default =128
).--cvae_layers
The number of layers to use (default =2
).--mlp_layer
The number of hidden units in the MLP decoder (default =32
).
More information about TrajAir dataset is avaiable at link.
Though the processed data is included in the dataset, this repository also contains utilities to process raw data from TrajAir dataset to produce the processed outputs.
python adsb_preprocess/process.py --dataset_name 7days1
Optional arguments can be given as following:
--dataset_folder
sets the working directory for data. Default is current working directory (default =/dataset/
).--dataset_name
sets the data block to use (default =7days1
).--weather_folder
directory with weather data (default =weather_data
).
If you have any questions, please contact [email protected] or [email protected], or open an issue on this repo.
If you find this repository useful for your research, please cite the following paper:
@inproceedings{patrikar2022trajair,
title = {Predicting Like {A} Pilot: Dataset and Method to Predict Socially-Aware Aircraft Trajectories in Non-Towered Terminal Airspace},
author = {Patrikar, Jay and Moon, Brady and Oh, Jean and Scherer, Sebastian},
booktitle = {International Conference on Robotics and Automation (ICRA)},
year = {2022},
doi = {10.1109/ICRA46639.2022.9811972},
url = {https://arxiv.org/pdf/2109.15158.pdf},
code = {https://github.com/castacks/trajairnet},
video = {https://youtu.be/elAQXrxB2gw}
}