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

Overview

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]).

Issues
  • Some questions about controller

    Some questions about controller

    1. What's the difference between using desired roll,pitch and using desired body rate to control FCU?
    2. Are there any tips for helping tune PID?
    3. In Airsim, it's simple flight mode without FCU SITL and just using pv controller. Do you want to use real FCU in SITL or HITL for se3 controller in the future?
    opened by dssdyx 2
  •  CMake Error at utils/uav_simulator/Utils/uav_utils

    CMake Error at utils/uav_simulator/Utils/uav_utils

    When compiling the repo, I encounter an error, such as

    CMake Error at utils/uav_simulator/Utils/uav_utils/CMakeLists.txt:31 (find_package): By not providing "FindEigen.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Eigen", but CMake did not find one.

    Could not find a package configuration file provided by "Eigen" with any of the following names:

    EigenConfig.cmake
    eigen-config.cmake
    

    But I type sudo gedit /usr/include/eigen3/Eigen/src/Core/util/Macros.h in the terminal, and find the version is 3.3.4.

    Meanwhile, I find the ego-planner repo also has a file uav_utils/CMakeLists.txt same to Fast-Racing, and I can successfully compile ego-planner, but Fast-Racing not. I need help. Thanks!

    opened by YUJX19 2
  • RVIZ has blank display

    RVIZ has blank display

    Hi,

    I followed your instruction and tested with the Zhangjiajie environment. It work - at least with the AirSim environment (finished all the gates successfully. However, Rviz has one issues. it is blank (no map is displayed)

    and I get this warning: [ WARN] [1630074867.684464842]: Invalid argument "/world_enu" passed to canTransform argument source_frame in tf2 frame_ids cannot start with a '/' like:

    Could you please check if tf2 frames is setup correctly?

    Best regards,

    opened by t-thanh 1
  • How can I run this project in the other scenes of UE4?

    How can I run this project in the other scenes of UE4?

    How can I run this code in the default “Blocks” scene of airsim? "[ WARN] [1646829103.736563994]: Nothing to publish, octree is empty" and "rpclib: client error C0002: Function 'simGetImages' was called with an invalid number of arguments. will appear", when I run the command roslaunch plan_manage zhangjiajie.launch. Do I need to modify the source code of the airsim plug-in?

    opened by YUJX19 0
  • Rviz will crash after i use 3d Nav Goal.

    Rviz will crash after i use 3d Nav Goal.

    rviZ will crash, after i use 3D Nav Goal.

    [ INFO] [1651493818.239098900]: Begin to optimize the traj~ rviz: /usr/local/include/eigen3/Eigen/src/SVD/SVDBase.h:101: const MatrixVType& Eigen::SVDBase::matrixV() const [with Derived = Eigen::JacobiSVD<Eigen::Matrix<double, 2, 3, 0, 2, 3>, 2>; Eigen::SVDBase::MatrixVType = Eigen::Matrix<double, 3, 3>; typename Eigen::internal::traits::MatrixType::Scalar = double]: Assertion `m_isInitialized && "SVD is not initialized."' failed. [rviz-1] process has died [pid 5130, exit code -6, cmd /home/cheng/catkin_ws/devel/lib/rviz/rviz -d /home/cheng/Fast_catkin_ws/src/Fast-Racing/src/plan_manage/launch/map_se3.rviz __name:=rviz __log:=/home/cheng/.ros/log/9fd63378-ca11-11ec-a66e-502f9bcf7948/rviz-1.log]. log file: /home/cheng/.ros/log/9fd63378-ca11-11ec-a66e-502f9bcf7948/rviz-1*.log all processes on machine have died, roslaunch will exit shutting down processing monitor... ... shutting down processing monitor complete done

    Although planning is still working, and simulator is working too.But I can also not see the trajectory in my Rviz, and Rviz just crashes. I work on ubuntu18.04, melodic, unreal4.25, eigen3.3.0, gcc-8.4.0. How can I solve this problem? Thank you!

    opened by fendiling 0
  • How to tune the PID parameter?

    How to tune the PID parameter?

    How to adjust the PID parameter of the multirotor? I only get the drone's trajectory but can't control it smoothly. BTW, could you mind pointing me how to determine the value of the map/x_size of MAP?

    opened by YUJX19 3
  • Error about the simulator

    Error about the simulator

    When I run ./run.sh -windowed, even if the simulation can be turned on normally, but there are errors: [2021.11.06-03.01.44:335][ 0]LogActor: Warning: BP_CameraDirector_C /Game/ZhangJiajieMountain/Maps/Demonstration.Demonstration:PersistentLevel.CameraDirector has natively added scene component(s), but none of them were set as the actor's RootComponent - picking one arbitrarily [2021.11.06-03.01.44:436][ 0]LogStreaming: Error: Couldn't find file for package /AirSim/Weather/WeatherFX/WeatherActor requested by async loading code. NameToLoad: /AirSim/Weather/WeatherFX/WeatherActor [2021.11.06-03.01.44:436][ 0]LogStreaming: Error: Found 0 dependent packages... [2021.11.06-03.01.44:437][ 0]LogTemp: Warning: Warning, WeatherAPI got invalid weather actor class! [2021.11.06-03.01.44:437][ 0]LogStreaming: Error: Couldn't find file for package /AirSim/Weather/UI/MenuActor requested by async loading code. NameToLoad: /AirSim/Weather/UI/MenuActor [2021.11.06-03.01.44:437][ 0]LogStreaming: Error: Found 0 dependent packages... [2021.11.06-03.01.44:437][ 0]LogTemp: Warning: Warning, WeatherAPI got invalid menu actor class!

    And when I run./zhangjiajie.sh, rviz can be opened and the planning is nice, but the simulator can't go on. And there are errors:

    Exception raised by the API:
    rpclib: function 'simGetGroundTruthEnvironment' (called with 1 arg(s)) threw an exception. The exception is not derived from std::exception. No further information available.
    

    How can I deal? Thanks!

    opened by YuHuan1021 0
Releases(v1.0)
Owner
ZJU FAST Lab
ZJU FAST Lab
Experimental Worms Armageddon WormKit module that implements real-time online multiplayer for racing schemes

wkRealTime v.0.0.4d Experimental Worms Armageddon WormKit module that implements real-time online multiplayer for racing schemes. Installation Place w

null 14 Jun 17, 2022
Baseline Arduino shield for temperature, humidity, soil moisture and ambient light

Introduction Green-Shield is an Arduino R3 shield for temperature, humidity, soil moisture and ambient light optimized for use in greenhouses where th

#Eduh 3 Dec 29, 2021
Baseline implementations for common algorithms in C++

Algo Baselines Baseline implementations for common algorithms in C++. The code in this repo will probably not be generic enough that you can use it fo

null 2 Jan 21, 2022
ModuLiDAR is an all-in-one open-source software for autonomous UGVs and industrial robots.

ModuLiDAR is an all-in-one open-source software for autonomous UGVs and industrial robots. the target industries that ModuLiDAR is working on are farming industry, mining industry, warehouses industry, and construction industry.

null 18 Jun 16, 2022
Open source simulator for autonomous vehicles built on Unreal Engine / Unity, from Microsoft AI & Research

Welcome to AirSim AirSim is a simulator for drones, cars and more, built on Unreal Engine (we now also have an experimental Unity release). It is open

Microsoft 13.2k Jun 28, 2022
Open source software for autonomous drones.

Prometheus - 自主无人机开源项目 [English Readme] Prometheus是希腊神话中最具智慧的神明之一,希望本项目能为无人机研发带来无限的智慧与光明。 项目总览 Prometheus是一套开源的自主无人机软件平台,为无人机的智能与自主飞行提供全套解决方案。本项目基于PX4

Amov Lab 1.3k Jun 25, 2022
CARLA is an open-source simulator for autonomous driving research.

CARLA is an open-source simulator for autonomous driving research. CARLA has been developed from the ground up to support development, training, and validation of autonomous driving systems.

CARLA 7.9k Jun 27, 2022
Drone music application for Gameboy

Droneboy Drone music application for Gameboy. This little app creates endless tones or drones on the Gameboys four channels. You can manipulate volume

null 21 Jun 1, 2022
Developing a Drone from scratch in ROS Gazebo

Project Building a drone and developing its control system. Table of Contents Project Table of Contents About The Project Tech Stack File Structure Ge

null 15 Mar 22, 2022
This repository is a drone attitude measurement solution with 9-axis

This repository is a drone attitude measurement solution with 9-axis

Xianhao Ji 2 Feb 14, 2022
An open autonomous driving platform

We choose to go to the moon in this decade and do the other things, not because they are easy, but because they are hard. -- John F. Kennedy, 1962

Apollo Auto 20.9k Jun 23, 2022
AutoDrive Planning Research

AutoDrive Planning Research

Col_In_Coding 2 Nov 29, 2021
a Lightweight Motion Planning Package

MPlib MPlib is a lightweight python package for motion planning, which is decoupled from ROS and is easy to set up. With a few lines of python code, o

Hao Su's Lab, UCSD 29 May 30, 2022
The MoveIt motion planning framework

The MoveIt Motion Planning Framework Easy-to-use open source robotics manipulation platform for developing commercial applications, prototyping design

ROS Planning 1.1k Jun 21, 2022
Gunyah is a Type-1 hypervisor designed for strong security, performance and modularity.

Gunyah is a Type-1 hypervisor, meaning that it is independent of any high-level OS kernel, and runs in a higher CPU privilege level. It does not depend on any lower-privileged OS kernel/code for its core functionality. This increases its security and can support a much smaller trusted computing base than a Type-2 hypervisor.

Qualcomm Innovation Center 65 Jun 27, 2022
Quake Enhanced mod where one player (The Juggernaut) is very strong and all other players have to kill the Juggernaut

QE Juggernaut Quake Enhanced Juggernaut (A modification of the QEHunter mod by JPiolho.) This is a multiplayer mod where one player is the Juggernaut.

null 2 Jun 6, 2022
Autonomous recorder for vex robots using the PROS API

VEX Robot Recorder Description This is a demo project for the "Recorder" class that allows the user to record and play back past recorded autonomouses

null 2 Jun 14, 2022
Decentralized architecture for loss tolerant semi-autonomous robotics

gestalt-arch Decentralized architecture for loss tolerant semi-autonomous robotics Objective We demonstrate a decentralized robot control architecture

null 4 Dec 18, 2021
AWS Ambit Scenario Designer for Unreal Engine 4 (Ambit) is a suite of tools to streamline content creation at scale for autonomous vehicle and robotics simulation applications.

AWS Ambit Scenario Designer for Unreal Engine 4 Welcome to AWS Ambit Scenario Designer for Unreal Engine 4 (Ambit), a suite of tools to streamline 3D

AWS Samples 43 Jun 20, 2022