SOAR
[IROS'24 Oral] A Heterogeneous Multi-UAV Planner for Fast Autonomous Reconstruction
Install / Use
/learn @Robotics-STAR-Lab/SOARREADME
📢 News
- [09/10/2024]: The code of SOAR is released.
- [30/06/2024]: SOAR is accepted to IROS 2024 and selected as oral presentation (acceptance rate: 10%).
📜 Introduction
[IROS'24] This repository maintains the implementation of "SOAR: Simultaneous Exploration and Photographing with Heterogeneous UAVs for Fast Autonomous Reconstruction".
The key modules of SOAR are detailed in this overview.
<p align="center"> <img src="assets/videos/overview.gif" width = 90% /> </p>And we also provide a special demo for IROS2024.
<p align="center"> <img src="assets/videos/iros_demo.gif" width = 90% /> </p>If you find this work useful in your research, please consider citing:
@inproceedings{zhang2024soar,
title={SOAR: Simultaneous Exploration and Photographing with Heterogeneous UAVs for Fast Autonomous Reconstruction},
author={Zhang, Mingjie and Feng, Chen and Li, Zengzhi and Zheng, Guiyong and Luo, Yiming and Wang, Zhu and Zhou, Jinni and Shen, Shaojie and Zhou, Boyu},
booktitle={2024 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
pages={10975--10982},
year={2024},
organization={IEEE}
}
Please kindly star ⭐️ this project if it helps you. We take great efforts to develop and maintain it 😁.
🛠️ Installation
Prerequisite
- ROS Noetic (Ubuntu 20.04) or ROS Melodic (Ubuntu 18.04)
- PCL
- Eigen
For Marsim:
sudo apt update
sudo apt install libglfw3-dev libglew-dev
For GCOPTER:
sudo apt update
sudo apt install libompl-dev
Compilation
Project:
git clone https://github.com/Robotics-STAR-Lab/SOAR.git
cd SOAR
catkin_make
If you have installed Anaconda, please use catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3.
LKH-3.0.6:
cd src/planner/utils/lkh_mtsp_solver/LKH
make -j
🚀 Quick Start
Pisa Cathedral
source devel/setup.bash && roslaunch heterogeneous_manager rviz.launch
source devel/setup.bash && roslaunch heterogeneous_manager pisa.launch
<p align="center">
<img src="assets/videos/pisa.gif" width = 60% />
</p>
Sydney Opera House
source devel/setup.bash && roslaunch heterogeneous_manager rviz.launch
source devel/setup.bash && roslaunch heterogeneous_manager sydney.launch
<p align="center">
<img src="assets/videos/sydney.gif" width = 60% />
</p>
NOTE
Trigger the quadrotors to start planning with the 2D Nav Goal when the terminal displays wait for trigger. All scenes are provided in src/heterogeneous_manager/launch/XXX.launch
If you want to use the GPU version of MARSIM, you can change the parameter "use_gpu" to true in src/heterogeneous_manager/launch/XXX.launch
<arg name="use_gpu" value="true" />
Adjusting the Number of Photographers
The current version temporarily only supports a single explorer.
You can modify the pisa.launch or sydney.launch file as follows:
<!-- TODO: _NUM_ is the total number of explorer and photographers -->
<arg name="drone_num" value="_NUM_" />
... ...
<!-- Explorer -->
<group ns="quad_0">
<include file="$(find heterogeneous_manager)/launch/single_lidar_uav_exploration.xml">
<arg name="drone_id" value="0" />
... ...
</include>
<group if="$(arg use_sim)">
<include file="$(find heterogeneous_manager)/launch/single_lidar_uav.xml">
<arg name="drone_id" value="0" />
... ...
<!-- TODO: Adjust to the appropriate initial position. -->
<arg name="init_x_" value="" />
<arg name="init_y_" value="" />
<arg name="init_z_" value="" />
<arg name="init_yaw" value="" />
... ...
</include>
</group>
</group>
<!-- Photographer1 -->
<group ns="quad_1">
<include file="$(find heterogeneous_manager)/launch/single_camera_uav_exploration.xml">
<arg name="drone_id" value="1" />
... ...
</include>
<group if="$(arg use_sim)">
<include file="$(find heterogeneous_manager)/launch/single_camera_uav.xml">
<arg name="drone_id" value="1"/>
<!-- TODO: Adjust to the appropriate initial position. -->
<arg name="init_x_" value=""/>
<arg name="init_y_" value=""/>
<arg name="init_z_" value=""/>
<arg name="init_yaw" value=""/>
<arg name="odom_topic" value="$(arg odom_topic)"/>
</include>
</group>
</group>
<!-- Other photographers' groups -->
... ...
<!-- PhotographerX (X = _NUM_-1) -->
<group ns="quad_X">
<include file="$(find heterogeneous_manager)/launch/single_camera_uav_exploration.xml">
<!-- TODO: Adjust to the appropriate drone_id = _NUM_-1 -->
<arg name="drone_id" value="X" />
... ...
</include>
<group if="$(arg use_sim)">
<include file="$(find heterogeneous_manager)/launch/single_camera_uav.xml">
<!-- TODO: Adjust to the appropriate drone_id = _NUM_-1 -->
<arg name="drone_id" value="X"/>
<!-- TODO: Adjust to the appropriate initial position. -->
<arg name="init_x_" value=""/>
<arg name="init_y_" value=""/>
<arg name="init_z_" value=""/>
<arg name="init_yaw" value=""/>
<arg name="odom_topic" value="$(arg odom_topic)"/>
</include>
</group>
</group>
🤓 Acknowledgments
- FC-Planner: An Efficient Global Planner for Aerial Coverage.
- FUEL: An Efficient Framework for Fast UAV Exploration.
- RACER: A Rapid Exploration Framework for Multiple UAVs.
- GCOPTER: A General-Purpose Trajectory Optimizer for Multicopters.
- MARSIM: A Light-weight Point-realistic Simulator for LiDAR-based UAVs.
🤗 FC-family Works
1. What is FC-family?
We aim to develop intelligent perception-centric flight to realize Fast Coverage / reConstruction / inspeCtion etc.
2. Projects list
- PredRecon (ICRA2023): Prediction-boosted Planner for Aerial Reconstruction.
- FC-Planner (ICRA2024): Highly Efficient Global Planner for Aerial Coverage.
- SOAR (IROS2024): Heterogenous Multi-UAV Planner for Aerial Reconstruction.
Related Skills
node-connect
337.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
337.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.2kCommit, push, and open a PR
