• Stars
    star
    206
  • Rank 189,347 (Top 4 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created over 3 years ago
  • Updated about 3 years ago

Reviews

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

Repository Details

An Open-source Strong Baseline for SE(3) Planning in Autonomous Drone Racing

Fast-Racing

An Open-source Strong Baseline for SE(3) Planning in Autonomous Drone Racing

0. Overview

Fast-Racing is a strong baseline that focuses on high-quality and extremely aggressive SE(3) trajectory generation.

The back-end optimization is a parallel extension of GCOPTER for drone racing, also powered by MINCO.

Related Paper:

Please cite BOTH papers below if this repo helps you.

Video Links: youtube or bilibili.

1. Setup

All the tests are conducted in the Linux environment on a computer equipped with an Intel Core i7-10700 CPU and a GeForce RTX 2060 GPU.

Moreover, Our software is developed and tested in Ubuntu 18.04, 20.04 with ROS installed.

ROS can be installed here: ROS Installation.

Also, we need to install gcc>=8.0.0 and Eigen>=3.3.0.

(Notion: if you are using Ubuntu 20.04, just ignore this step because higher version of gcc and Eigen have been installed while you are installing ROS; but if you are using Ubuntu18.04, you need to update these versions.)

Install gcc>=8.0.0:

  1. Type the following command to install it.

    sudo apt-get install gcc-8 g++-8
    
  2. Verify installation by:

    gcc-8 --version
    

Install Eigen>=3.3.0

You can download the source code package from Eigen Installation.

Please make sure to install the correct version.

Your can run the following command to check Eigen version.

sudo gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h

2. Download Track Binaries

  1. Download the settings.json and move it to~/Documents/AirSim/settings.json.

  2. Download any one of the tracks such as Zhangjiajie.zip, and unzip it.

  3. Test it. Take Zhangjiajie as an example. Open a terminal window, cd to Zhangjiajie/directory. and type the following command:

    ./run.sh -windowed
    

3. Build on ROS

  1. Install the dependence.

    sudo apt-get install libarmadillo-dev
    sudo apt-get install ros-${ROS_VERSION_NAME}-octomap*
    sudo apt-get install ros-${ROS_VERSION_NAME}-tf2-sensor-msgs ros-${ROS_VERSION_NAME}-tf2-geometry-msgs ros-${ROS_VERSION_NAME}-mavros*
    

    where ${ROS_VERSION_NAME} is the name of your ROS release.

  2. Create an empty new workspace and clone this repository to your workspace:

    cd ~/your_catkin_ws/src
    git clone https://github.com/ZJU-FAST-Lab/Fast-Racing
    cd ..
    
  3. Compile it.

    If your default gcc isn't 8 or greater (check using gcc --version), then compilation will fail. In that case, use gcc-8 explicitly as follows.

    catkin_make -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 
    

4. Run the Simulation

  1. Run the track binary.

    Before the simulation racing, you need to run the rack binary.

    Open a terminal window, cd to Zhangjiajie/, Urbancity/ or Moderncity/ directory. and type the following command:

    ./run.sh -windowed
    
    1. Run the planner.

    Open a new terminal window, cd to ~/your_catkin_ws/ and type:

    source devel/setup.bash
    

    Then, run the script corresponding to the track. Take Zhangjiajie as the example:

    ./zhangjiajie.sh 
    

    After the global map is set up, you can use the 3D Nav Goal in RVIZ to trigger the planning.

Here is an example:

5. Use GPU or Not

Packages in this repo, plan_manage have GPU, CPU two different versions. By default, they are in CPU version for better compatibility. By changing

set(ENABLE_CUDA false)

in the CMakeList.txt in plan_manage packages, to

set(ENABLE_CUDA true)

CUDA will be turned-on to use the parallel architecture to speed up the computation of the optimization.

Please remember to also change the 'arch' and 'code' flags in the line of

    set(CUDA_NVCC_FLAGS 
      -gencode arch=compute_70,code=sm_70;
    ) 

in CMakeList.txt, if you encounter compiling error due to different Nvidia graphics card you use. You can check the right code here.

Don't forget to re-compile the code!

For installation of CUDA, please go to CUDA ToolKit

6. Licence

The source code is released under GPLv3 license.

7. Maintaince

For any technical issue, please contact Zhichao HAN ([email protected]) or Zhepei WANG ([email protected]).

For commercial inquiries, please contact Fei GAO ([email protected]).

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++
697
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++
324
star
8

LBFGS-Lite

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

sampling-based-path-finding

C++
212
star
10

large_scale_traj_optimizer

Fast (Fastest?) Minimum Snap Trajectory Generation with Analytical Gradient
C++
199
star
11

CMPCC

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

am_traj

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

Implicit-SDF-Planner

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

Fast-tracker

C++
181
star
15

Elastic-Tracker

Elastic Tracker: A Spatio-temporal Trajectory Planner Flexible Aerial Tracking
C++
163
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

EVA-planner

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

TGK-Planner

C++
90
star
23

FastSim

88
star
24

Terrestrial-Aerial-Navigation

An autonomous navigation framework that brings complete autonomy to terrestrial-aerial bimodal vehicles (TABVs)
C++
75
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

SDQP

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

visPlanner

C++
56
star
31

VID-Dataset

C++
55
star
32

OPNet

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

VertexEnumeration3D

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

forces_resilient_planner

External Forces Resilient Safe Motion Planning for Quadrotor
C
48
star
35

Radar-Diffusion

Python
48
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

VID-Flight-Platform

The flight platforn for the VID-Dataset
19
star
43

UnityVisExample

C#
19
star
44

e2e_opt

JavaScript
18
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