Learning Agile Flights on SE(3): a novel deep SE(3) motion planning and control method for quadrotors. It learns an MPC's adaptive SE(3) decision variables parameterized by a portable DNN, encouraging the quadrotor to fly through the gate with maximum safety margins under diverse settings.
Animation | Method | Animation |
---|---|---|
Please find out more details in our paper (ICRA 2023): https://ieeexplore-ieee-org.libproxy1.nus.edu.sg/document/10160712
Agile flights of autonomous quadrotors in cluttered environments require constrained motion planning and control subject to translational and rotational dynamics. Traditional model-based methods typically demand complicated design and heavy computation. In this paper, we develop a novel deep reinforcement learning-based method that tackles the challenging task of flying through a dynamic narrow gate. We design a model predictive controller with its adaptive tracking references parameterized by a deep neural network (DNN). These references include the traversal time and the quadrotor SE(3) traversal pose that encourage the robot to fly through the gate with maximum safety margins from various initial conditions.
Please make sure that the following packages have already been installed before running the source code.
- CasADi: version 3.5.5 Info: https://web.casadi.org/
- Numpy: version 1.23.0 Info: https://numpy.org/
- Pytorch: version 1.12.0+cu116 Info: https://pytorch.org/
- Matplotlib: version 3.3.0 Info: https://matplotlib.org/
- Python: version 3.9.12 Info: https://www.python.org/
First and foremost, the training process is both efficient and 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.
- Run the Python file 'nn_train.py' to pre-train the 1st DNN via supervised learning.
- Run the Python file 'deep_learning.py' to train the 1st DNN (pretained in Step 1) via reinforcement learning.
- Run the Python file 'nn_train_2' to train the 2nd DNN via imitation learning (i.e., imitating the outputs of the 1st DNN).
- Run the Python file 'main.py' to evaluate the trained 2nd DNN in the challenging task of flying through a dynamic narrow gate.
- Run the Python file 'Pybullet_simulation.py' in the folder 'gym_pybullet_drone' to evaluate the trained 2d DNN in the pybullet-drone environment. Please ensure that the simulator is properly installed before running the Python file. An installation tutorial can be found at https://github.com/utiasDSL/gym-pybullet-drones
If you encounter a bug in your implementation of the code, please do not hesitate to inform me.
- Name: Mr. Bingheng Wang
- Email: [email protected]