Skip to content
Package for the paper "Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight"
C++ Makefile Python CMake Common Lisp Shell Other
Branch: master
Clone or download
Latest commit cd8d28e Aug 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
dyn_planner add figure Jul 2, 2019
img add figure Jul 2, 2019
uav_simulator fix simulator Jul 16, 2019
LICENSE Initial commit Feb 27, 2019 Update Aug 14, 2019


Fast-Planner is a quadrotor trajectory generator for fast autonomous flight. It consists of the front-end kinodynamic path searching, the back-end gradient-based Bspline trajectory optimization and the postprocessing named as iterative time adjustment. The key features of the planner are that it generates high-quality trajectories within a few milliseconds and that it can generate aggressive motion under the premise of dynamic feasibility. This work was reported on the IEEE Spectrum.

This package is under active maintenance. More features (e.g., avoiding dynamic obstacles, discovering topological distinctive trajectories) will be added in the future.

Authors: Boyu Zhou, Fei Gao and Shaojie Shen from the HUKST Aerial Robotics Group.



This package contains the implementation of Fast-Planner (in folder dyn_planner) and a lightweight quadrotor simulator (in uav_simulator).

If you use Fast-Planner for your application or research, please cite our related papers:

  title={Robust and efficient quadrotor trajectory generation for fast autonomous flight},
  author={Zhou, Boyu and Gao, Fei and Wang, Luqi and Liu, Chuhao and Shen, Shaojie},
  journal={IEEE Robotics and Automation Letters},

1. Prerequisites

  • Our software is developed in Ubuntu 16.04, ROS Kinetic.

  • We use NLopt to solve the non-linear optimization problem.

  • The drone simulator depends on the C++ linear algebra library Armadillo, which can be installed by sudo apt-get install libarmadillo-dev.

2. Build on ROS

Clone this repository to your catkin workspace and catkin_make. A new workspace is recommended:

  git clone
  cd ../

3. Run the Simulation

Run Rviz with our configuration firstly:

  <!-- go to your workspace and run: -->
  source devel/setup.bash
  roslaunch plan_manage rviz.launch

Then run the quadrotor simulator and Fast-Planner:

  <!-- open a new terminal, go to your workspace and run: -->
  source devel/setup.bash
  roslaunch plan_manage simulation.launch

Normally, you will find the randomly generated map and the drone model in Rviz. At this time, you can select a goal for the drone using the 3D Nav Goal tool.

In the tools panel of Rviz, click '+' and select the plugin 'Goal3DTool'. If you have successfully compiled all packages from uav_simulator, now you can see '3D Nav Goal' in the tools panel. To set a goal, click the '3D Nav Goal' (shortcut keyboard 'g', may conflict with 2D Nav Goal). Then click and hold both the left and right mouse buttons to select (x,y), and move the mouse to change z. When a goal is set successfully, a new trajectory will be generated immediately and executed by the drone, as displayed below:

4. Acknowledgements

We use NLopt for non-linear optimization.

5. Licence

The source code is released under GPLv3 license.

6. Disclaimer

This is research code, it is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of merchantability or fitness for a particular purpose.

You can’t perform that action at this time.