Btraj is an online UAV planning framework used to generate safe, dynamically feasible trajectories in previous unknown environments. It can be divided as front-end path finding module and back-end trajectory optimization module. In the front-end, we provide two alternates: Fast Marching*(FM*) on a velocity field and A* on a pure grid map. A flight corridor consists of cubes are generated based on the path. In the back-end, we utilize properties of Bezier curve to confine the piecewise Bezier curves entirely within the corridor and dynamical limits. For details we refer readers to our paper.
Authors:Fei Gao and Shaojie Shen from the HUKST Aerial Robotics Group.
Disclaimer
This is research code, any fitness for a particular purpose is disclaimed.
Related Paper
- Online Safe Trajectory Generation For Quadrotors Using Fast Marching Method and Bernstein Basis Polynomial, Fei Gao, William Wu, Yi Lin and Shaojie Shen, IEEE International Conference on Robotics and Automation (ICRA), 2018, Brisbane, Australia. full text
Video of this paper can be found:
If you use this planning framework for your academic research, please cite our related paper.
@inproceedings{Fei2018ICRA,
Address = {Brisbane, Australia},
Author = {F. Gao and W.Wu and Y. Lin and S. Shen},
Booktitle = {Online Safe Trajectory Generation For Quadrotors
Using Fast Marching Method and Bernstein Basis Polynomial},
Title = {Proc. of the {IEEE} Intl. Conf. on Robot. and Autom.},
Month = May,
Year = {2018}}
}
- Our testing environment: Ubuntu 16.04, ROS Kinetic.
- We provide a simple simulation to test the code. To run the simulation, you should install armadillo, which is a c++ linear algebra library. Then clone and compile plan_utils, which contains several ROS-package used for running the simulation.
sudo apt-get install libarmadillo-dev
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/plan_utils.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
Clone the repository to your catkin workspace and catkin_make. For example:
cd ~/catkin_ws/src
git clone https://github.com/HKUST-Aerial-Robotics/Btraj.git
cd ../
catkin_make
source ~/catkin_ws/devel/setup.bash
We use mosek for solving quadratic program(QP). To use mosek, you should approve an academic license in here. The academic license is free and is easy to approve. Then create a folder named 'mosek' in your home directory and put your license in it. All header and library files are already included in the 'third_party' folder under this repo, so you don't need to download mosek again.
If you have done all above, you can try the simple simulation.
roslaunch bezier_planer simulation.launch
In rviz, click 'Panels -> tools -> +' and select the plugin 'Goal3DTool'. If you have successfully compiled all packages from plan_utils, now you can see 3D Nav Goal in the tools panel.
We use 3D Nav Goal to send a target for the drone to navigate. To use it, click the tool (shortcut keyboard 'g' may conflict with 2D Nav Goal), then press on left mouse button on a position in rviz, click right mouse button to start to drag it slide up or down for a targeting height (don't loose left button at this time). Finally you loose left mouse button and a target will be sent to the planner, done.
By default the planer use FM* to find a path in the distance field. You can change the path search function to A* in the launch file by setting is_use_fm to false.
We use mosek for solving quadratic program(QP), fast_methods for performing general fast marching method and sdf_tools for building euclidean distance field.
The source code is released under GPLv3 license.
- The code has not been deeply tested, if you find any problems, do not hesitate to raise a issue or write e-mail to me.
- The code is written for research purpose and has not been fully optimized. In the future I will add more functionalities and improve efficiency, and also add more comment.