This is the code repository for the paper contributed to IEEE T-RO: FALCON: Fast Autonomous Aerial Exploration using Coverage Path Guidance.
This paper introduces FALCON, a Fast Autonomous aerial robot expLoration planner using COverage path guidaNce. FALCON effectively harnesses the full potential of online generated coverage paths in enhancing exploration efficiency. We also introduce a lightweight exploration planner evaluation environment that allows for comparing exploration planners across a variety of testing scenarios using an identical quadrotor simulator.
Please cite our paper if you use this project in your research:
Zhang, Y., Chen, X., Feng, C., Zhou, B., & Shen, S. (2024). FALCON: Fast Autonomous Aerial Exploration using Coverage Path Guidance. arXiv preprint arXiv:2407.00577.
@article{zhang2024falcon,
title={FALCON: Fast Autonomous Aerial Exploration using Coverage Path Guidance},
author={Yichen Zhang, Xinyi Chen, Chen Feng, Boyu Zhou, Shaojie Shen},
journal={arXiv preprint arXiv:2407.00577},
year={2024}
}
Please kindly star ⭐ this project if it helps you. Thanks for your support! 💖
The setup commands have been tested on Ubuntu 20.04 (ROS Noetic). If you are using a different Ubuntu distribution, please modify accordingly.
- Install dependencies
# Install libraries sudo apt install libgoogle-glog-dev libdw-dev libdwarf-dev libarmadillo-dev sudo apt install libc++-dev libc++abi-dev # Install cmake 3.26.0-rc6 (3.20+ required) wget https://cmake.org/files/v3.26/cmake-3.26.0-rc6.tar.gz tar -xvzf cmake-3.26.0-rc6.tar.gz cd cmake-3.26.0-rc6 ./bootstrap make sudo make install # restart terminal # Install NLopt 2.7.1 git clone --depth 1 --branch v2.7.1 https://github.com/stevengj/nlopt.git cd nlopt mkdir build && cd build cmake .. make -j sudo make install # Install Open3D 0.18.0 cd YOUR_Open3D_PATH git clone --depth 1 --branch v0.18.0 https://github.com/isl-org/Open3D.git cd Open3D mkdir build && cd build cmake -DBUILD_PYTHON_MODULE=OFF .. make -j # make -j4 if out of memory sudo make install
- Clone the repository
cd ${YOUR_WORKSPACE_PATH}/src git clone https://github.com/HKUST-Aerial-Robotics/FALCON.git cd .. catkin_make source devel/setup.bash # or source devel/setup.zsh
-
set CUDA_NVCC_FLAGS in
CMakeLists.txt
under pointcloud_render package. More informationset(CUDA_NVCC_FLAGS -gencode arch=compute_XX,code=sm_XX;)
-
Config Open3D app path in mesh_render package
# mesh_render.yaml mesh_render: open3d_resource_path: /YOUR_Open3D_PATH/Open3D/build/bin/resources
-
Launch RViz visualization
roslaunch exploration_manager rviz.launch
-
Launch FALCON planner with predefined maps
roslaunch exploration_manager exploration.launch map_name:="octa_maze"
maps provided:
- classical_office
- complex_office
- darpa_tunnel
- duplex_office
- octa_maze
- power_plant
auto_start
is used to start the exploration automatically, the default value is "true" in exploration_planner.yaml. If you want to start the exploration manually, please set it to "false".# exploration_planner.yaml exploration_manager: auto_start: true
The exploration planner evaluation environment (EPEE) supports custom maps input in point cloud (.pcd, .ply) or mesh (.stl) format. The provided maps are placed in the resource
folder under the map_render
package. This is the default relative path for the map file searching.
You can use the provided maps or create your own maps from 3D modeling software (e.g., SolidWorks, OpenSCAD, etc.) or existing contents (e.g., assets from Unreal Fab, realistic maps in MARSIM, etc.).
If you want to use your own maps at other locations, please put the map file under this folder or specify the full path in the map config file.
The map config files are located in the config/map
folder under the exploration_manager
package.
For each map, you need to specify the initial pose of the UAV and the map size, task bbox size, and the visualization bbox size. Considering the map resource file may have a different corrdinate system, the T_m_w
matrix is used to transform the map to the world frame for proper depth rendering.
It is recommended to use the UniQuad platform for real-world UAV deployment. The UniQuad platform is a unified and versatile quadrotor platform series that offers high flexibility to adapt to a wide range of commontasks, excellent customizability for advanced demands, and easy maintenance in case of crashes. Our real-world UAV deployment is based on the Uni250C from the UniQuad platform.
- LKH: An effective implementation of the Lin-Kernighan heuristic for solving the traveling salesman problem
- NLOpt: An open-source library for nonlinear optimization
- Open3D: An open-source library that supports rapid development of software that deals with 3D data
- FUEL: a powerful framework for Fast UAV ExpLoration
- Lidar sensing from MARSIM
- Large-scale scenario (> 1e6 m^3) compatibility
- ROS2 support