# Fast-Planner **Repository Path**: chenqianbang/Fast-Planner ## Basic Information - **Project Name**: Fast-Planner - **Description**: Package for the paper "Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight" - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-12-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 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](https://spectrum.ieee.org/automaton/robotics/robotics-hardware/video-friday-nasa-lemur-robot). 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](http://boyuzhou.net), [Fei Gao](https://ustfei.com/) and [Shaojie Shen](http://uav.ust.hk/group/) from the [HUKST Aerial Robotics Group](http://uav.ust.hk/). __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: - [__Robust and Efficient Quadrotor Trajectory Generation for Fast Autonomous Flight__](https://ieeexplore.ieee.org/document/8758904), Boyu Zhou, Fei Gao, Luqi Wang, Chuhao Liu and Shaojie Shen, IEEE Robotics and Automation Letters (RA-L), 2019. ``` @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](http://wiki.ros.org/kinetic/Installation/Ubuntu). - We use [**NLopt**](https://nlopt.readthedocs.io/en/latest/NLopt_Installation) 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](http://wiki.ros.org/rviz) with our configuration firstly: ``` source devel/setup.bash roslaunch plan_manage rviz.launch ``` Then run the quadrotor simulator and __Fast-Planner__: ``` 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](http://www.gnu.org/licenses/) 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.