{"id":27598636,"url":"https://github.com/hkust-aerial-robotics/fuel","last_synced_at":"2025-05-15T03:05:23.337Z","repository":{"id":37429371,"uuid":"305115801","full_name":"HKUST-Aerial-Robotics/FUEL","owner":"HKUST-Aerial-Robotics","description":"An Efficient Framework for Fast UAV Exploration ","archived":false,"fork":false,"pushed_at":"2024-11-19T06:06:55.000Z","size":127787,"stargazers_count":1113,"open_issues_count":61,"forks_count":215,"subscribers_count":21,"default_branch":"main","last_synced_at":"2025-04-22T14:15:38.782Z","etag":null,"topics":["aerial-robotics","autonomous-navigation","autonomous-robots","motion-planning","uav"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HKUST-Aerial-Robotics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-10-18T14:06:42.000Z","updated_at":"2025-04-22T06:21:14.000Z","dependencies_parsed_at":"2022-07-08T18:43:08.540Z","dependency_job_id":"328a044f-e970-4d90-b29b-f92f8bd4c412","html_url":"https://github.com/HKUST-Aerial-Robotics/FUEL","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUST-Aerial-Robotics%2FFUEL","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUST-Aerial-Robotics%2FFUEL/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUST-Aerial-Robotics%2FFUEL/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HKUST-Aerial-Robotics%2FFUEL/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HKUST-Aerial-Robotics","download_url":"https://codeload.github.com/HKUST-Aerial-Robotics/FUEL/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254264765,"owners_count":22041793,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aerial-robotics","autonomous-navigation","autonomous-robots","motion-planning","uav"],"created_at":"2025-04-22T14:15:36.164Z","updated_at":"2025-05-15T03:05:23.310Z","avatar_url":"https://github.com/HKUST-Aerial-Robotics.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FUEL\n\n__News:__\n\n- Feb 24, 2023: the code for **multi-UAV exploration** is released! check [this link](https://github.com/SYSU-STAR/RACER).\n- Aug 24, 2021: The CPU-based simulation is released, CUDA is no longer required. Richer exploration environments are provided.\n  \n**FUEL** is a powerful framework for **F**ast **U**AV **E**xp**L**oration.\nOur method is demonstrated to complete challenging exploration tasks **3-8 times** faster than state-of-the-art approaches at the time of publication.\nCentral 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](#quick-start) to run a demo in a few minutes!  \n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"files/1.gif\" width = \"400\" height = \"225\"/\u003e\n  \u003cimg src=\"files/2.gif\" width = \"400\" height = \"225\"/\u003e\n  \u003cimg src=\"files/3.gif\" width = \"400\" height = \"225\"/\u003e\n  \u003cimg src=\"files/4.gif\" width = \"400\" height = \"225\"/\u003e\n  \u003c!-- \u003cimg src=\"files/icra20_1.gif\" width = \"320\" height = \"180\"/\u003e --\u003e\n\u003c/p\u003e\n\n\nRecently, 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](https://github.com/SYSU-STAR/RACER).\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"files/racer1.gif\" width = \"400\" height = \"225\"/\u003e\n  \u003cimg src=\"files/racer2.gif\" width = \"400\" height = \"225\"/\u003e\n\u003c/p\u003e\n\n__Complete videos__: [video1](https://www.youtube.com/watch?v=_dGgZUrWk-8), [video2](https://www.bilibili.com/video/BV1yf4y1P7Vj).\n\n__Authors__: [Boyu Zhou](http://sysu-star.com) from SYSU and [Shaojie Shen](http://uav.ust.hk/group/) from the [HUKST Aerial Robotics Group](http://uav.ust.hk/).\n\nPlease cite our paper if you use this project in your research:\n- [__FUEL: Fast UAV Exploration using Incremental Frontier Structure and Hierarchical Planning__](https://arxiv.org/abs/2010.11561), Boyu Zhou, Yichen Zhang, Xinyi Chen, Shaojie Shen, IEEE Robotics and Automation Letters (**RA-L**) with ICRA 2021 option\n\n```\n@article{zhou2021fuel,\n  title={FUEL: Fast UAV Exploration Using Incremental Frontier Structure and Hierarchical Planning},\n  author={Zhou, Boyu and Zhang, Yichen and Chen, Xinyi and Shen, Shaojie},\n  journal={IEEE Robotics and Automation Letters},\n  volume={6},\n  number={2},\n  pages={779--786},\n  year={2021},\n  publisher={IEEE}\n}\n```\n\nPlease kindly star :star: this project if it helps you. We take great efforts to develope and maintain it :grin::grin:.\n\n## Table of Contents\n\n- [FUEL](#fuel)\n  - [Table of Contents](#table-of-contents)\n  - [Quick Start](#quick-start)\n  - [Exploring Different Environments](#exploring-different-environments)\n  - [Creating a _.pcd_ Environment](#creating-a-pcd-environment)\n  - [Acknowledgements](#acknowledgements)\n\n## Quick Start\n\nThis project has been tested on Ubuntu 18.04(ROS Melodic) and 20.04(ROS Noetic).\n\nFirstly, you should install __nlopt v2.7.1__:\n```\ngit clone -b v2.7.1 https://github.com/stevengj/nlopt.git\ncd nlopt\nmkdir build\ncd build\ncmake ..\nmake\nsudo make install\n```\n\nNext, you can run the following commands to install other required tools:\n```\nsudo apt-get install libarmadillo-dev\n```\n\n\u003c!-- To simulate the depth camera, we use a simulator based on CUDA Toolkit. Please install it first following the [instruction of CUDA](https://developer.nvidia.com/zh-cn/cuda-toolkit). \n\nAfter successful installation, in the **local_sensing** package in **uav_simulator**, remember to change the 'arch' and 'code' flags in CMakelist.txt according to your graphics card devices. You can check the right code [here](https://github.com/tpruvot/ccminer/wiki/Compatibility). For example:\n\n```\n  set(CUDA_NVCC_FLAGS \n    -gencode arch=compute_61,code=sm_61;\n  ) \n``` --\u003e\n\nThen simply clone and compile our package (using ssh here):\n\n```\ncd ${YOUR_WORKSPACE_PATH}/src\ngit clone git@github.com:HKUST-Aerial-Robotics/FUEL.git\ncd ../ \ncatkin_make\n```\n\nAfter compilation you can start a sample exploration demo. Firstly run ```Rviz``` for visualization: \n\n```\nsource devel/setup.bash \u0026\u0026 roslaunch exploration_manager rviz.launch\n```\nthen run the simulation (run in a new terminals): \n```\nsource devel/setup.bash \u0026\u0026 roslaunch exploration_manager exploration.launch\n```\n\nBy 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.\n\n\u003c!-- You will find a cluttered scene to be explored (20m x 12m x 2m) and the drone . You can trigger the exploration to start by  A sample simulation is shown in the figure. The unknown obstacles are shown in grey, while the frontiers are shown as colorful voxels. The planned and executed trajectories are also displayed. --\u003e\n\n \u003cp id=\"demo1\" align=\"center\"\u003e\n  \u003cimg src=\"files/office.gif\" width = \"600\" height = \"325\"/\u003e\n \u003c/p\u003e\n\n\n## Exploring Different Environments\n\nThe exploration environments in our simulator are represented by [.pcd files](https://pointclouds.org/documentation/tutorials/pcd_file_format.html).\nWe provide several sample environments, which can be selected in [simulator.xml](fuel_planner/exploration_manager/launch/simulator.xml):\n\n\n```xml\n  \u003c!-- Change office.pcd to specify the exploration environment --\u003e\n  \u003c!-- We provide office.pcd, office2.pcd, office3.pcd and pillar.pcd in this repo --\u003e\n  \u003cnode pkg =\"map_generator\" name =\"map_pub\" type =\"map_pub\" output = \"screen\" args=\"$(find map_generator)/resource/office.pcd\"/\u003e    \n```\n\nOther examples are listed below.\n\n_office2.pcd_:\n\u003cp id=\"demo2\" align=\"center\"\u003e\n\u003cimg src=\"files/office2.gif\" width = \"600\" height = \"325\"/\u003e\n\u003c/p\u003e\n\n_office3.pcd_:\n\u003cp id=\"demo3\" align=\"center\"\u003e\n\u003cimg src=\"files/office3.gif\" width = \"600\" height = \"325\"/\u003e\n\u003c/p\u003e\n\n_pillar.pcd_:\n\u003cp id=\"demo4\" align=\"center\"\u003e\n\u003cimg src=\"files/pillar.gif\" width = \"320\" height = \"325\"/\u003e\n\u003c/p\u003e\n\nIf you want to use your own environments, simply place the .pcd files in [map_generator/resource](uav_simulator/map_generator/resource), and follow the comments above to specify it.\nYou may also need to change the bounding box of explored space in [exploration.launch](https://github.com/HKUST-Aerial-Robotics/FUEL/blob/main/fuel_planner/exploration_manager/launch/exploration.launch):\n\n```xml\n    \u003carg name=\"box_min_x\" value=\"-10.0\"/\u003e\n    \u003carg name=\"box_min_y\" value=\"-15.0\"/\u003e\n    \u003carg name=\"box_min_z\" value=\" 0.0\"/\u003e\n    \u003carg name=\"box_max_x\" value=\"10.0\"/\u003e\n    \u003carg name=\"box_max_y\" value=\"15.0\"/\u003e\n    \u003carg name=\"box_max_z\" value=\" 2.0\"/\u003e\n```\n\nTo create your own .pcd environments easily, check the [next section](#creating-a-pcd-environment).\n\n## Creating a _.pcd_ Environment\n\nWe provide a simple tool to create .pcd environments.\nFirst, run:\n\n```\n  rosrun map_generator click_map\n```\n\nThen in ```Rviz```, use the ```2D Nav Goal``` tool (shortcut G) to create your map. Two consecutively clicked points form a wall.\nAn example is illustrated:\n\n\u003cp id=\"demo5\" align=\"center\"\u003e\n\u003cimg src=\"files/create_map.gif\" width = \"600\" height = \"340\"/\u003e\n\u003c/p\u003e\n\nAfter you've finished, run the following node to save the map in another terminal:\n\n```\n  rosrun map_generator map_recorder ~/\n```\n\nNormally, a file named __tmp.pcd__ will be saved at ```~/```. You may replace ```~/``` with any locations you want.\nLastly, you can use this file for exploration, as mentioned [here](#exploring-different-environments).\n\n## Acknowledgements\n  We use **NLopt** for non-linear optimization and use **LKH** for travelling salesman problem.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkust-aerial-robotics%2Ffuel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhkust-aerial-robotics%2Ffuel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhkust-aerial-robotics%2Ffuel/lists"}