HKUST-Aerial-Robotics / FUEL

Licence: GPL-3.0 license
An Efficient Framework for Fast UAV Exploration

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
Makefile
30231 projects
python
139335 projects - #7 most used programming language
CMake
9771 projects
common lisp
692 projects

Projects that are alternatives of or similar to FUEL

FlyingCarUdacity
🛩️⚙️ 3D Planning, PID Control, Extended Kalman Filter for the Udacity Flying Car Nanodegree // FCND-Term1
Stars: ✭ 16 (-96.44%)
Mutual labels:  uav, motion-planning
Tonic
An autonomous vehicle written in python
Stars: ✭ 85 (-81.11%)
Mutual labels:  autonomous-robots, autonomous-navigation
awesome-mobile-robotics
Useful links of different content related to AI, Computer Vision, and Robotics.
Stars: ✭ 243 (-46%)
Mutual labels:  uav, autonomous-robots
CLF reactive planning system
This package provides a CLF-based reactive planning system, described in paper: Efficient Anytime CLF Reactive Planning System for a Bipedal Robot on Undulating Terrain. The reactive planning system consists of a 5-Hz planning thread to guide a robot to a distant goal and a 300-Hz Control-Lyapunov-Function-based (CLF-based) reactive thread to co…
Stars: ✭ 21 (-95.33%)
Mutual labels:  motion-planning, autonomous-navigation
Teach Repeat Replan
Teach-Repeat-Replan: A Complete and Robust System for Aggressive Flight in Complex Environments
Stars: ✭ 411 (-8.67%)
Mutual labels:  uav, motion-planning
Fast Planner
A Robust and Efficient Trajectory Planner for Quadrotors
Stars: ✭ 718 (+59.56%)
Mutual labels:  uav, motion-planning
Topotraj
A robust UAV local planner based on the ICRA2020 paper: Robust Real-time UAV Replanning Using Guided Gradient-based Optimization and Topological Paths
Stars: ✭ 50 (-88.89%)
Mutual labels:  uav, motion-planning
gennav
Python Package for Robot Navigation
Stars: ✭ 24 (-94.67%)
Mutual labels:  motion-planning
Pontryagin-Differentiable-Programming
A unified end-to-end learning and control framework that is able to learn a (neural) control objective function, dynamics equation, control policy, or/and optimal trajectory in a control system.
Stars: ✭ 111 (-75.33%)
Mutual labels:  motion-planning
Inav Configurator
Stars: ✭ 243 (-46%)
Mutual labels:  uav
Dronin
The dRonin flight controller software.
Stars: ✭ 238 (-47.11%)
Mutual labels:  uav
dwl
The Dynamic Whole-body Locomotion library (DWL)
Stars: ✭ 70 (-84.44%)
Mutual labels:  motion-planning
Virtual-Lane-Boundary-Generation
Virtual Lane Boundary Generation for Human-Compatible Autonomous Driving
Stars: ✭ 22 (-95.11%)
Mutual labels:  motion-planning
Faster
3D Trajectory Planner in Unknown Environments
Stars: ✭ 246 (-45.33%)
Mutual labels:  uav
SS-Replan
Online Replanning in Belief Space for Partially Observable Task and Motion Problems
Stars: ✭ 43 (-90.44%)
Mutual labels:  motion-planning
Starrypilot
A lightweight autopilot software for Pixhawk
Stars: ✭ 243 (-46%)
Mutual labels:  uav
panther
Perception-Aware Trajectory Planner in Dynamic Environments
Stars: ✭ 115 (-74.44%)
Mutual labels:  uav
multi uav simulator
A quadrotor swarm simulator based on ROS (Robot Operating System).
Stars: ✭ 73 (-83.78%)
Mutual labels:  uav
UAV obstacle avoidance controller
UAV Obstacle Avoidance using Deep Recurrent Reinforcement Learning with Temporal Attention
Stars: ✭ 61 (-86.44%)
Mutual labels:  uav
Robotics-Resources
List of commonly used robotics libraries and packages
Stars: ✭ 71 (-84.22%)
Mutual labels:  motion-planning

FUEL

News:

  • Aug 24, 2021: The CPU-based simulation is released, CUDA is no longer required. Richer exploration environments are provided.

FUEL is a powerful framework for Fast UAV ExpLoration. Our method is demonstrated to complete challenging exploration tasks 3-8 times faster than state-of-the-art approaches at the time of publication. Central to it is a Frontier Information Structure (FIS), which maintains crucial information for exploration planning incrementally along with the online built map. Based on the FIS, a hierarchical planner plans frontier coverage paths, refine local viewpoints, and generates minimum-time trajectories in sequence to explore unknown environment agilely and safely. Try Quick Start to run a demo in a few minutes!

Recently, we further develop a fully decentralized approach for exploration tasks using a fleet of quadrotors. The quadrotor team operates with asynchronous and limited communication, and does not require any central control. The coverage paths and workload allocations of the team are optimized and balanced in order to fully realize the system's potential. The associated paper is under review, so code of this part will be released in the future.

Complete videos: video1, video2.

Authors: Boyu Zhou and Shaojie Shen from the HUKST Aerial Robotics Group.

Please cite our paper if you use this project in your research:

@article{zhou2021fuel,
  title={FUEL: Fast UAV Exploration Using Incremental Frontier Structure and Hierarchical Planning},
  author={Zhou, Boyu and Zhang, Yichen and Chen, Xinyi and Shen, Shaojie},
  journal={IEEE Robotics and Automation Letters},
  volume={6},
  number={2},
  pages={779--786},
  year={2021},
  publisher={IEEE}
}

Please kindly star this project if it helps you. We take great efforts to develope and maintain it 😁😁.

Table of Contents

Quick Start

This project has been tested on Ubuntu 16.04(ROS Kinetic) and 18.04(ROS Melodic). Take Ubuntu 18.04 as an example, run the following commands to install required tools:

  sudo apt-get install libarmadillo-dev ros-melodic-nlopt

Then simply clone and compile our package (using ssh here):

  cd ${YOUR_WORKSPACE_PATH}/src
  git clone [email protected]:HKUST-Aerial-Robotics/FUEL.git
  cd ../ 
  catkin_make

After compilation you can start a sample exploration demo. Firstly run Rviz for visualization:

  source devel/setup.bash && roslaunch exploration_manager rviz.launch

then run the simulation (run in a new terminals):

  source devel/setup.bash && roslaunch exploration_manager exploration.launch

By default you can see an office-like environment. Trigger the quadrotor to start exploration by the 2D Nav Goal tool in Rviz. A sample is shown below, where unexplored structures are shown in grey and explored ones are shown in colorful voxels. The FoV and trajectories of the quadrotor are also displayed.

Exploring Different Environments

The exploration environments in our simulator are represented by .pcd files. We provide several sample environments, which can be selected in simulator.xml:

  <!-- Change office.pcd to specify the exploration environment -->
  <!-- We provide office.pcd, office2.pcd, office3.pcd and pillar.pcd in this repo -->
  <node pkg ="map_generator" name ="map_pub" type ="map_pub" output = "screen" args="$(find map_generator)/resource/office.pcd"/>    

Other examples are listed below.

office2.pcd:

office3.pcd:

pillar.pcd:

If you want to use your own environments, simply place the .pcd files in map_generator/resource, and follow the comments above to specify it. You may also need to change the bounding box of explored space in exploration.launch:

    <arg name="box_min_x" value="-10.0"/>
    <arg name="box_min_y" value="-15.0"/>
    <arg name="box_min_z" value=" 0.0"/>
    <arg name="box_max_x" value="10.0"/>
    <arg name="box_max_y" value="15.0"/>
    <arg name="box_max_z" value=" 2.0"/>

To create your own .pcd environments easily, check the next section.

Creating a .pcd Environment

We provide a simple tool to create .pcd environments. First, run:

  rosrun map_generator click_map

Then in Rviz, use the 2D Nav Goal tool (shortcut G) to create your map. Two consecutively clicked points form a wall. An example is illustrated:

After you've finished, run the following node to save the map in another terminal:

  rosrun map_generator map_recorder ~/

Normally, a file named tmp.pcd will be saved at ~/. You may replace ~/ with any locations you want. Lastly, you can use this file for exploration, as mentioned here.

Known issues

Compilation issue

When running this project on Ubuntu 20.04, C++14 is required. Please add the following line in all CMakelists.txt files:

set(CMAKE_CXX_STANDARD 14)

Unexpected crash

If the exploration_node dies after triggering a 2D Nav Goal, it is possibly caused by the ros-nlopt library. In this case, we recommend to uninstall it and install nlopt following the official document. Then in the CMakeLists.txt of bspline_opt package, change the associated lines to link the nlopt library:

find_package(NLopt REQUIRED)
set(NLopt_INCLUDE_DIRS ${NLOPT_INCLUDE_DIR})

...

include_directories( 
    SYSTEM 
    include 
    ${catkin_INCLUDE_DIRS}
    ${Eigen3_INCLUDE_DIRS} 
    ${PCL_INCLUDE_DIRS}
    ${NLOPT_INCLUDE_DIR}
)

...

add_library( bspline_opt 
    src/bspline_optimizer.cpp 
    )
target_link_libraries( bspline_opt
    ${catkin_LIBRARIES} 
    ${NLOPT_LIBRARIES}
    # /usr/local/lib/libnlopt.so
    )  

Acknowledgements

We use NLopt for non-linear optimization and use LKH for travelling salesman problem.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].