• Stars
    star
    199
  • Rank 196,105 (Top 4 %)
  • Language
    C++
  • Created about 4 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Fast (Fastest?) Minimum Snap Trajectory Generation with Analytical Gradient

Large-Scale Trajectory Optimizer

This is probably the fastest minimum jerk or minimum snap trajectory generator you can find.

It also provides analytical gradient of energy with respect to time allocations and waypoints.

1. About

This is a highly-algorithmically-optimized implementation for minimum jerk/snap trajectories with exact gradient w.r.t. time allocation and waypoints. All involved computations enjoy linear time and space complexity. It is based on completely analytical results of our paper. Only two header files are all you need to use our module as a super efficient differentiable black box.

ICRA Paper: Generating Large-Scale Trajectories Efficiently using Double Descriptions of Polynomials

(Video and Arxiv are avaiable.)

If this repo helps you, please cite our paper:

@inproceedings{wang2021glst,
    title={Generating Large-Scale Trajectories Efficiently using Double Descriptions of Polynomials},
    author={Wang, Zhepei and Ye, Hongkai and Xu, Chao and Gao, Fei},
    address={Xi'an, China},
    booktitle={IEEE International Conference on Robotics and Automation},
    pages={7436-7442},
    year={2021},
    organization={IEEE}
}

Author: Zhepei Wang and Fei Gao from the ZJU Fast Lab.

2. How to Use

a. Initialize an instance of "JerkOpt/SnapOpt"

b. Call "reset" to specify the piece number and initial/terminal conditions. The i-th column of "headState/tailState" is a 3-dimensional specified (i-1)-order derivative. For example, the initial/final position is always stored in the first column.

c. Call "generate" to compute a minimum jerk/snap trajectory that passes intermediate waypoints with specified time allocations. The i-th column of "inPs" is a 3-dimensional vector of the i-th intermediate waypoint. For example, there are 4 columns of waypoints and 5 time durations for a 5-piece trajectory.

d. Call "getObjective" to get energy cost.

e. Call "getGradT" and "getGradInnerP" to obtain gradients for the specified time allocation and intermediate waypoints.

f. If needed, repeat c, d, and e to optimize time allocation and intermediate waypoints using the objective and the gradient.

g. Call "getTraj" to obtain the trajectory.

Note: Part c must be conducted after a and b. Part d, e, f and g must be conducted after c.

3. Examples

Example 1 gives the computation speed of our implementation. Please use catkin_make of ROS to build the source code of this example.

Example 2 is only described in the the related paper as a high-performance large-scale trajectory optimizer. By following the paper, you can use our differentiable black box to directly optimize both the waypoints and times of a trajectory. It can achieve almost the same trajectory quality as the global trajectory optimizer in Teach-Repeat-Replan while using significantly less computation time.

4. Performance

We compare our original implementation with four existing works. The original performance is shown as follows. The performance of the up-to-date master branch is SIGNIFICANTLY HIGHER than that is shown in the figure.

Burke et al., “Generating minimum-snap quadrotor trajectories really fast,” IROS 2020.
Bry et al., “Aggressive flight of fixed-wing and quadrotor aircraft in dense indoor environments,” IJRR 2015.
Mellinger et al., “Minimum snap trajectory generation and control for quadrotors,” ICRA 2011.

More Repositories

1

ego-planner

C++
1,376
star
2

Fast-Drone-250

hardware and software design of the 250mm autonomous drone
C++
1,358
star
3

ego-planner-swarm

An efficient single/multi-agent trajectory planner for multicopters.
C++
1,178
star
4

GCOPTER

A General-Purpose Trajectory Optimizer for Multicopters
C++
722
star
5

Swarm-Formation

Formation Flight in Dense Environments
C++
382
star
6

EGO-Planner-v2

Swarm Playground, the codebase of the paper "Swarm of micro flying robots in the wild"
C++
355
star
7

Dftpav

A lightweight differential flatness-based trajectory planner for car-like robots
C++
344
star
8

LBFGS-Lite

LBFGS-Lite: A header-only L-BFGS unconstrained optimizer.
C++
314
star
9

Fast-Racing

An Open-source Strong Baseline for SE(3) Planning in Autonomous Drone Racing
C++
216
star
10

sampling-based-path-finding

C++
212
star
11

CMPCC

CMPCC: Corridor-based Model PredictiveContouring Control for Aggressive Drone Flight
C
197
star
12

Implicit-SDF-Planner

[IROS 2023] Continuous Implicit SDF Based Any-shape Robot Trajectory Optimization
C++
188
star
13

Fast-tracker

C++
187
star
14

am_traj

Alternating Minimization Based Trajectory Generation for Quadrotor Aggressive Flight
C++
185
star
15

Elastic-Tracker

Elastic Tracker: A Spatio-temporal Trajectory Planner Flexible Aerial Tracking
C++
167
star
16

FAST-Dynamic-Vision

Detecting and Tracking Dynamic Objects with Event and Depth Sensing
C++
126
star
17

Implicit-SVSDF-Planner

[SIGGRAPH 2024 & TOG]
C++
119
star
18

VID-Fusion

VID-Fusion: Robust Visual-Inertial-Dynamics Odometry for Accurate External Force Estimation
C++
115
star
19

Car-like-Robotic-swarm

Source code for the decentralized car-like robotic swarm
C++
114
star
20

uneven_planner

An Efficient Trajectory Planner for Car-like Robots on Uneven Terrain
C++
103
star
21

FastSim

93
star
22

EVA-planner

EVA-planner: an EnVironmental Adaptive Gradient-based Local Planner for Quadrotors.
C++
91
star
23

TGK-Planner

C++
91
star
24

Terrestrial-Aerial-Navigation

An autonomous navigation framework that brings complete autonomy to terrestrial-aerial bimodal vehicles (TABVs)
C++
82
star
25

Fast-Perching

Real-Time Trajectory Planning for Aerial Perching
C++
73
star
26

kino_sampling_with_regional_opti

C++
73
star
27

3D2M-planner

C#
72
star
28

SDLP

Seidel's LP Algorithm: Linear-Complexity Linear Programming for Small-Dimensional Variables
C++
70
star
29

Radar-Diffusion

Python
66
star
30

SDQP

Small-Dimensional Quadratic Programming in Linear Time
C++
61
star
31

visPlanner

C++
58
star
32

OPNet

Learning Unknown Space for Autonomous Navigation in Clustered Environment
C++
56
star
33

VID-Dataset

C++
55
star
34

VertexEnumeration3D

Fast Vertex Enumeration for 3D Polytopes
C++
52
star
35

forces_resilient_planner

External Forces Resilient Safe Motion Planning for Quadrotor
C
47
star
36

EDG-TEAM

Enhanced Decentralized Autonomous Aerial Robot Teams with Group Planning
C++
42
star
37

std-trees

STD-Trees: Spatio-temporal Deformable Trees for Multirotors Kinodynamic Planning
C++
41
star
38

Auto-Filmer

A Videography Planner for Quadrotors
C++
38
star
39

CertifiableMutualLocalization

MATLAB
29
star
40

laser_simulator

lightweight laser simulator
C++
25
star
41

GPA-Teleoperation

C++
24
star
42

e2e_opt

JavaScript
20
star
43

VID-Flight-Platform

The flight platforn for the VID-Dataset
19
star
44

UnityVisExample

C#
19
star
45

TABV-Platform

A cusomized terrestrial-aerial bimodal vehicle (TABV) platform for terrestrial-aerial autonomous navigation.
16
star
46

Primitive-Planner

Primitive-Planner: An Ultra Lightweight Quadrotor Planner with Time-optimal Primitives
16
star
47

LMBM

Nonsmooth Unconstrained Optimization via Limited Memory Bundle Method
Fortran
15
star
48

mpc-car-tutorial

A tutorial of using MPC (both implementations of nonlinear MPC and linear time-varying MPC) for reference tracking with a bicycle model.
C
12
star
49

FACT-Coordinate-Initialization

Open source dode for paper FACT: Fast and Active Coordinate Initialization for Vision-based Drone Swarm
C++
11
star
50

OSQP_Interface

An Easy-to-Use OSQP Interface for Convex Quadratic Programming.
C++
7
star
51

Assistive-Racing

A Trajectory-based Flight Assistive System for Novice Pilots in Drone Racing Scenario
C++
7
star
52

Auto-Param-Adaption

Automatic parameter adaptation for quadrotor trajectory planning
6
star
53

Xsens_driver

Python
4
star
54

GLPK_Interface

An Easy-to-Use GLPK Interface for General-Dimension Linear Programming.
C++
3
star
55

LF-3PM

a LiDAR-based Framework for Perception-aware Planning with Perturbation-induced Metric
3
star
56

Active-Relative-Localization

Open source dode for paper Preserving Relative Localization of FoV-Limited Drone Swarm via Active Mutual Observation
1
star