This repo contains the implementation of the paper "Neural Predictor for Flight Control with Payload" by Ao Jin, Chenhao Li, Qinyi Wang, Ya Liu, Panfeng, Huang and Fan Zhang*.
The Neural Predictor is a learning-based scheme to capture force/torque caused by payload and residual dynamics of tethered-UAV system. Specifically, inspired by DDKO theory, the formulation of lifted linear system (LLS) is derived and the LLS is learned from data to capture the force/torque caused by payload and residual dynamics of tethered-UAV system. The learned dynamics combined with nominal dynamics, which produces a hybrid model of tethered-UAV system. This hybrid model is incorporated into a model predictive control framework, known as NP-MPC. We demonstrate that our proposed framework not only provides much better prediction of external force and torque against state-of-the-art learning-based estimator, but also improve closed-loop performance in both simulations and real-world flight significantly.
Our paper: Neural Predictor for Flight Control with Payload
Before running the code, install the dependency packages in a virtual python env by executing the following command:
pip install -r requirements.txtThis repo includes the code of two parts: Numerical Evaluation and Physical Experiments.
We provided pretrained models for evaluation. Run bash scripts/evaluation.sh to reproduce the results that presented in the paper. In addition, the RMSE results on 13 unseen trajectories are shown in dump/evaluation/rmse_result.csv, which corresponds the results of Table I in the paper. If you want to train your own LLS, please follow the instructions below.
-
Processing BEM data
The dataset for training and testing in this work is adopted from BEM dataset. For sake of convenience, we provided BEM dataset in the
datafolder. Navigate to thedata/BEMfolder, runpython process_data.py, then some figures and files will appear in thedata/BEMfolder -
Training LLS
Run
bash scripts/train.shand this will take a couple minutes (The training time on i9-12900H CPU was around 8 min, and training time on a RTX 3060 laptop GPU was around 5 min). After training, the trained LLS will be located in thedump/evaluationfolder. -
Evaluating Neural Predictor
Run
bash scripts/evaluation.sh. The validation results on 13 unseen trajectories will be located indump/evaluation/test. In each trajectory folder, there are two figures that show the prediction results of Neural Predictor. -
Plotting
Navigate to the
plotfolder. TheBEM_Comparasionsubfolder corresponds the result of Fig. 2 presented in paper. TheSample_Efficiencysubfolder corresponds the result of Fig. 3 presented in paper.
We evaluate the Neural Predictor in the real-world experiments. The setup for real-world flight experiments is illustrated in Section VI.B of the paper.
Code: Coming soon
If you find this repo useful in your research, please cite our work:
@misc{jin2024neuralpredictorflightcontrol,
title={Neural Predictor for Flight Control With Payload},
author={Jin, Ao and Li, Chenhao and Wang, Qinyi and Liu, Ya and Huang, Panfeng and Zhang, Fan},
journal={IEEE Robotics and Automation Letters},
year={2025},
volume={},
number={},
pages={1-8},
doi={10.1109/LRA.2025.3573624}}

