MCPcopy Create free account
hub / github.com/HKUST-Aerial-Robotics/FUEL

github.com/HKUST-Aerial-Robotics/FUEL @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
4,062 symbols 8,013 edges 511 files 310 documented · 8% updated 20mo ago★ 1,44364 open issues

Browse by type

Functions 2,947 Types & classes 1,115
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

FUEL

News:

  • Feb 24, 2023: the code for multi-UAV exploration is released! check this link.
  • 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 has been published in IEEE TRO. Check code here.

Complete videos: video1, video2.

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

Please cite our paper if you use this project in your research: - FUEL: Fast UAV Exploration using Incremental Frontier Structure and Hierarchical Planning, Boyu Zhou, Yichen Zhang, Xinyi Chen, Shaojie Shen, IEEE Robotics and Automation Letters (RA-L) with ICRA 2021 option

@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 :star: this project if it helps you. We take great efforts to develope and maintain it :grin::grin:.

Table of Contents

Quick Start

This project has been tested on Ubuntu 18.04(ROS Melodic) and 20.04(ROS Noetic).

Firstly, you should install nlopt v2.7.1:

git clone -b v2.7.1 https://github.com/stevengj/nlopt.git
cd nlopt
mkdir build
cd build
cmake ..
make
sudo make install

Next, you can run the following commands to install other required tools:

sudo apt-get install libarmadillo-dev

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

cd ${YOUR_WORKSPACE_PATH}/src
git clone git@github.com: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:



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

Acknowledgements

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

Core symbols most depended-on inside this repo

Shape

Method 2,109
Class 1,089
Function 838
Enum 26

Languages

C++87%
C8%
Python5%

Modules by API surface

uav_simulator/local_sensing/include/backward.hpp181 symbols
fuel_planner/utils/backward/backward.hpp181 symbols
fuel_planner/plan_manage/include/plan_manage/backward.hpp181 symbols
uav_simulator/so3_quadrotor_simulator/include/ode/boost/numeric/odeint/algebra/default_operations.hpp69 symbols
uav_simulator/so3_quadrotor_simulator/include/ode/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp42 symbols
uav_simulator/Utils/multi_map_server/include/multi_map_server/Map3D.h36 symbols
fuel_planner/active_perception/src/frontier_finder.cpp36 symbols
uav_simulator/so3_disturbance_generator/include/so3_disturbance_generator/DisturbanceUIConfig.h35 symbols
uav_simulator/so3_disturbance_generator/cfg/cpp/so3_disturbance_generator/DisturbanceUIConfig.h35 symbols
uav_simulator/local_sensing/src/helper_math.h35 symbols
uav_simulator/so3_quadrotor_simulator/include/ode/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp32 symbols
uav_simulator/so3_quadrotor_simulator/src/dynamics/Quadrotor.cpp29 symbols

For agents

$ claude mcp add FUEL \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page