Skip to content

Auto-Multilift is a novel learning framework for cooperative load transportation with quadrotors. It can automatically tune various MPC hyperparameters, which are modeled by DNNs and difficult to tune manually, via reinforcement learning in a distributed and closed-loop manner.

License

Notifications You must be signed in to change notification settings

RCL-NUS/Auto-Multilift

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Auto-Multilift

The Auto-Multilift is a novel learning framework for cooperative load transportation with quadrotors. It can automatically tune various MPC hyperparameters, which are modeled by DNNs and difficult to tune manually, via reinforcement learning in a distributed and closed-loop manner.

A Diagram of a multilift system and Auto-Multilift Learning Piplines
diagram

Please find out more details in our paper: "Auto-Multilift: Distributed Learning and Control for Cooperative Load Transportation With Quadrotors" arXiv

Table of contents

  1. Project Overview
  2. Dependency Packages
  3. How to Use
    1. A: Distributed Learning of Adaptive Weightings
    2. B: Distributed Learning of Adaptive References
  4. Contact Us

1. Project Overview

The project consists of two folders, which correspond to the two experiments in the paper that show the following three advantages of our method.

  1. Auto-Multilift enjoys fast convergence in just a few iterations, with its convergence speed unaffected by the number of quadrotors.
  2. Auto-Multilift is able to learn adaptive MPC weightings directly from trajectory tracking errors. Additionally, it significantly improves training stability and tracking performance over a state-of-the-art open-loop learning method [1].
  3. Beyond its improved training ability to learn adaptive MPC weightings, our method can effectively learn an adaptive tension reference, enabling the multilift system to reconfigure itself when traversing through obstacles.

2. Dependency Packages

Please make sure that the following packages have already been installed before running the source code.

3. How to Use

First and foremost, the implementation for Auto-Multilift is straightforward to setup. The source code has been comprehensively annotated to facilitate ease of use. To reproduce the simulation results presented in the paper, simply follow the steps outlined below, sequentially, after downloading and decompressing all the necessary folders.

A: Distributed Learning of Adaptive Weightings

Auto-Multilift Safe-PDP (Open-loop Learning)
cl_training ol_training
  1. Open the Python file 'main_distributed_autotuning.py' in the folder 'Source code A'
  2. Before running, please do the following settings:
    • Set the number of quadrotors on line 42 (i.e., the fifth number in the 'uav_para' array).
    • Set the load mass value on line 43 (i.e., the first number in the 'load_para' array).
    • Set the MPC horizon on line 52 (the default value is 10).
    • Set the higher-level loss horizon on line 53 (the default value is 20).
  3. After completing the above settings, run the file 'main_distributed_autotuning.py'. In the prompted terminal interface, you will be asked to select the control and sensitivity propagation modes.
    • In our settings, 's' and 'p' denote 'sequential' and 'parallel' computing, respectively.
    • 'c' and 'o' represent 'closed-loop' (our method) and 'open-loop' (the Safe-PDP method [1]) training modes.
  4. To evaluate the trained model, run the Python file 'main_distributed_autotuning_evaluation.py'
    • You can skip Step 4 and evaluate the saved models that were previously trained and employed in the paper. To do so, copy the files that end with '.pt' from the folder 'Previously trained models' (within the folder 'Source code A') to the folder 'trained data' (where the retained models via Step 4 will be saved).

B: Distributed Learning of Adaptive References

Learning Process of the Same Large Multilift System
training_tension_ref_cl
  1. Open the Python file 'main_distributed_learn_tensionref.py' in the folder 'Source code B'
  2. Before running, please do the following settings:
    • Set the number of quadrotors on line 40 to the same as that used in Section A (i.e., learning of adaptive weightings).
    • Set the load mass value on line 43 (i.e., the first number in the 'load_para' array).
    • Set the MPC horizon on line 52 (the default value is 10).
    • Set the higher-level loss horizon on line 53 (the default value is 20).
  3. After completing the above settings, run the file 'main_distributed_learn_tensionref.py'. In the prompted terminal interface, you will be asked to select the control and sensitivity propagation modes.
    • In our settings, 's' and 'p' denote 'sequential' and 'parallel' computing, respectively.
  4. To evaluate the trained model, run the Python file 'main_distributed_learn_tensionref_evaluation.py'
    • You can skip Step 4 and evaluate the saved models that were previously trained and employed in the paper. To do so, copy the files that end with '.pt' from the folder 'Previously trained models' (within the folder 'Source code B') to the folder 'trained data' (where the retained models via Step 4 will be saved).

4. Contact Us

If you encounter a bug in your implementation of the code, please do not hesitate to inform me.

References

[1] Jin, Wanxin and Mou, Shaoshuai and Pappas, George J, "Safe pontryagin differentiable programming", Advances in Neural Information Processing Systems, 34, 16034--16050, 2021

About

Auto-Multilift is a novel learning framework for cooperative load transportation with quadrotors. It can automatically tune various MPC hyperparameters, which are modeled by DNNs and difficult to tune manually, via reinforcement learning in a distributed and closed-loop manner.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages