Chen Feng2, Haojia Li2, Mingjie Zhang1, Xinyi Chen2, Boyu Zhou1,†, and Shaojie Shen2
1SYSU STAR Group
2HKUST Aerial Robotics Group
†Corresponding Author
- [30/06/2024]: FC-Hetero is accepted to IROS 2024 and selected as oral presentation (acceptance rate: 10%).
- [16/05/2024]: FC-Planner is selected as the finalist for ICRA 2024 Best UAV Paper Award.
- [02/05/2024]: All code of FC-Planner is released.
- [15/03/2024]: FC-Planner is extended to multi-UAV autonomous reconstruction as FC-Hetero, check this repo for details.
- [29/01/2024]: FC-Planner is accepted to ICRA 2024.
[ICRA'24] This repository maintains the implementation of "FC-Planner: A Skeleton-guided Planning Framework for Fast Aerial Coverage of Complex 3D Scenes".
FC-Planner is a highly efficient planning framework tailored for fast coverage of large and complex 3D scenes. Both the simulation and real-world experiments demonstrate the superior system simplicity and performance of our method compared to state-of-the-art ones.
Please cite our paper if you use this project in your research:
- FC-Planner: A Skeleton-guided Planning Framework for Fast Aerial Coverage of Complex 3D Scenes, Chen Feng, Haojia Li, Mingjie Zhang, Xinyi Chen, Boyu Zhou, and Shaojie Shen, 2024 IEEE International Conference on Robotics and Automation (ICRA).
@inproceedings{feng2024fc,
title={Fc-planner: A skeleton-guided planning framework for fast aerial coverage of complex 3d scenes},
author={Feng, Chen and Li, Haojia and Zhang, Mingjie and Chen, Xinyi and Zhou, Boyu and Shen, Shaojie},
booktitle={2024 IEEE International Conference on Robotics and Automation (ICRA)},
pages={8686--8692},
year={2024},
organization={IEEE}
}
Please kindly star ⭐️ this project if it helps you. We take great efforts to develop and maintain it 😁.
Prerequisite:
- ROS Noetic (Ubuntu 20.04) or ROS Melodic (Ubuntu 18.04)
- PCL 1.7 (1.10.0 Recommended)
- Eigen 3.4 (3.4.1 Recommended)
- Boost 1.71.0
sudo apt update
sudo apt install cpufrequtils
sudo apt install libompl-dev
The project has been tested on Ubuntu 20.04 LTS (ROS Noetic) and Ubuntu 18.04 LTS (ROS Melodic). Directly clone our package (using ssh here):
1) caktin tools (Recommended)
git clone [email protected]:HKUST-Aerial-Robotics/FC-Planner.git
cd FC-Planner
catkin config -DCMAKE_BUILD_TYPE=Release
catkin build --cmake-args -Wno-dev
cd src/hierarchical_coverage_planner/solution/LKH
make
If you have installed Anaconda, please use catkin build --cmake-args -Wno-dev -DPYTHON_EXECUTABLE=/usr/bin/python3
.
Tips: You can use ccache
to accelerate compilation.
sudo apt-get install ccache
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
catkin build --continue-on-failure
2) caktin make
git clone [email protected]:HKUST-Aerial-Robotics/FC-Planner.git
cd FC-Planner
catkin config -DCMAKE_BUILD_TYPE=Release
catkin_make --cmake-args -Wno-dev
cd src/hierarchical_coverage_planner/solution/LKH
make
If you have installed Anaconda, please use catkin_make --cmake-args -Wno-dev -DPYTHON_EXECUTABLE=/usr/bin/python3
.
Run Rviz
for coverage flight visualization and open another terminal for running the simulation:
sudo cpufreq-set -g performance
cd FC-Planner
source devel/setup.zsh && roslaunch hierarchical_coverage_planner rviz.launch
source devel/setup.zsh && roslaunch hierarchical_coverage_planner mbs.launch
Trigger the quadrotor to start planning by the 2D Nav Goal
, then 2D Pose Estimate
to start coverage flight as shown in the left gif. More scenes are provided in src/hierarchical_coverage_planner/launch
Afterwards, you will obtain the discrete trajectory in src/hierarchical_coverage_planner/solution/Traj/TrajInfoMBS.txt
. You can use this coverage trajectory to capture the images of the target, and then reconstruct it. The detailed step can be found in vis tool doc. The reconstruction result is depicted in the right gif.
If you have successfully run the simulation and want to use FC-Planner in your project, please explore the launch files in src/hierarchical_coverage_planner/launch
. Important parameters that may be changed in your usage. Notably, FC-Planner accepts surface point cloud as input, so you may be careful about the type of your data.
When you run the launch file, you will see detailed environment of your platform at the beginning of terminal outputs, e.g.,
------------------------YOUR DEVICE INFO------------------------
Project : FC-Planner
Author : Chen Feng
Current Time : Sat Jun 22 19:40:05 2024
CPU Info : 12th Gen Intel(R) Core(TM) i9-12900K
RAM Info : 31.14GB Physical Memory, 2.00GB Virtual Memory
OS Info : Linux 5.15.0-107-generic (x86_64)
GCC Version : 9.4.0
Eigen Version : 3.4.1
PCL Version : 1.10.0
Boost Version : 1.71.0
----------------------------------------------------------------
For the benefit of the community, we modularize the whole project and extract two important functions (space decomposition and viewpoint generation) as plug-in packages for your use.
The individual package of SSD is given for your purposeful usage, where some example scenes are provided in src/rosa/launch
.
Run Rviz
for SSD visualization and open another terminal for SSD execution:
sudo cpufreq-set -g performance
cd FC-Planner
source devel/setup.zsh && roslaunch rosa rviz.launch
source devel/setup.zsh && roslaunch rosa ${SCENE}.launch (e.g., redbird.launch)
Afterwards, you will see the SSD results of HKUST RedBird in your Rviz
as follows:
As for your customerized scene and more details, you can find in rosa package doc.
Here we provide an independent package of finding the minimal viewpoint set for a given area needed to cover, i.e., our proposed Iterative Updates of Viewpoint Pose.
Specifically, we give a 3D case guided by skeleton. Run Rviz
for visualization and open another terminal for viewpoint generation execution:
sudo cpufreq-set -g performance
cd FC-Planner
source devel/setup.zsh && roslaunch viewpoint_manager rviz.launch
source devel/setup.zsh && roslaunch viewpoint_manager mbs.launch
Afterwards, you will see the viewpoint generation results of Marina Bay Sands in your Rviz
as follows:
You can also use other guidance to generate viewpoints, e.g., normals. For example, we give a 2.5D case (indoor office) using normal guidance to generate viewpoints.
sudo cpufreq-set -g performance
cd FC-Planner
source devel/setup.zsh && roslaunch viewpoint_manager rviz_normal.launch
source devel/setup.zsh && roslaunch viewpoint_manager normal.launch
Afterwards, you will see the viewpoint generation results of this 2.5D case in your Rviz
as follows:
For more usage details, you can find in viewpoint manager doc.
Since ICRA2024 is held in Pacifico, Yokohama, we specially prepared a demo reconstructing Pacifico center for the conference, as shown in below.- PredRecon (ICRA2023): Prediction-boosted Planner for Aerial Reconstruction.
- FC-Planner (ICRA2024): Highly Efficient Global Planner for Aerial Coverage.
- FC-Hetero (IROS2024): Heterogenous Multi-UAV Planner for Aerial Reconstruction.