GCOPTER
GCOPTER copied to clipboard
A General-Purpose Trajectory Optimizer for Multicopters
GCOPTER
GCOPTER is an efficient and versatile multicopter trajectory optimizer built upon a novel sparse trajectory representation named MINCO. User-defined state-input constraints for dynamics involving nonlinear drag effects are supported.
Updates
-
July 20, 2022 - Released my thesis in chinese with detailed and up-to-dated methodology about corridor generation, multicopter dynamics, trajectory planning, and so on.
-
Mar 11, 2022 - A minimal but non-trivial example for global kinodynamic planning is released. Modules for trajectory optimization, quadcopter dynamics with nonlinear drags, fast iterative region inflation for corridor generation, non-uniform MINCO (s=3), etc., are released.
-
Mar 15, 2022 - Released non-uniform MINCO for s=2 and s=4.
-
May 19, 2022 - Released a doc to detail differential flatness for multicopters under nonlinear drag effects. Add code links for all projects powered by MINCO.
-
Plan - More examples are on the way, including uniform MINCO (s=2,3,4), trajectory generation for tube-shaped and sphere-shaped corridors, local replanner, whole-body SE(3) planner, interfaces for external constraints, augmented Lagrangian, and so on.
About
If our repo helps your academic projects, please cite our paper. Thank you!
Author: Zhepei Wang and Fei Gao from ZJU FAST Lab.
Paper: Geometrically Constrained Trajectory Optimization for Multicopters, Zhepei Wang, Xin Zhou, Chao Xu, and Fei Gao, IEEE Transactions on Robotics (T-RO), Regular Paper.
@article{WANG2022GCOPTER,
title={Geometrically Constrained Trajectory Optimization for Multicopters},
author={Wang, Zhepei and Zhou, Xin and Xu, Chao and Gao, Fei},
journal={IEEE Transactions on Robotics},
year={2022},
volume={},
number={},
pages={1-20},
doi={10.1109/TRO.2022.3160022}
}
Applications
Example 1: Global Trajectory Planning
This is a minimal yet non-trivial example of our trajectory optimizer for real-time high-quality corridor and global trajectory generation subject to dynamic constraints. For installation, the following terminal commands are helpful.
sudo apt update
sudo apt install cpufrequtils
sudo apt install libompl-dev
sudo cpufreq-set -g performance
mkdir ROS; cd ROS; mkdir src; cd src
git clone https://github.com/ZJU-FAST-Lab/GCOPTER.git
cd ..
catkin_make
source devel/setup.bash
roslaunch gcopter global_planning.launch
After conduct the command, you will see the windows for rviz and rqt_plot. Please follow the gif below for global trajectory planning in a random map.
Projects Supported by GCOPTER or MINCO
- Robust Real-Time SE(3) Planning: youtube or bilibili. (Reported by IEEE Spectrum Website!)
- Multicopter Swarms Planning: youtube or bilibili. (Reported by IEEE Spectrum Website!) Code
- A variety of applications powered by GCOPTER or MINCO are not listed here, such as visibility-aware aerial tracking, and planning with nonlinear drag effects, etc.
Powerful Submodules
- SDLP: Seidel's Algorithm on Linear-Complexity Linear Programming for Computational Geometry.
- VertexEnumeration3D: Highly Efficient Vertex Enumeration for 3D Convex Polytopes (Outperforms cddlib in 3D).
- LBFGS-Lite: An Easy-to-Use Header-Only L-BFGS Solver.