/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. For more details, we refer the users to the related paper and video:

  • Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight, Boyu Zhou, Fei Gao, Luqi Wang, Chuhao Liu and Shaojie Shen, IEEE Robotics and Automation Letters (RA-L), 2019.

video

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 light weight quadrotor simulator (in uav_simulator).

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

1. Prerequisites

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

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

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(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, 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.