/Fast-Planner

Package for the paper "Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight"

Primary LanguageC++GNU General Public License v3.0GPL-3.0

Fast-Planner

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.

Video:

video

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:

@article{zhou2019robust,
  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},
  volume={4},
  number={4},
  pages={3529--3536},
  year={2019},
  publisher={IEEE}
}

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:

  cd ${YOUR_WORKSPACE_PATH}/src
  git clone https://github.com/HKUST-Aerial-Robotics/Fast-Planner.git
  cd ../
  catkin_make

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.