Simultaneous Exploration and Photographing with Heterogeneous UAVs for Fast Autonomous Reconstruction
Mingjie Zhang1,3,*, Chen Feng2,*, Zengzhi Li1,4, Guiyong Zheng1, Yiming Luo1,
Zhu Wang4, Jinni Zhou5, Shaojie Shen2, Boyu Zhou1,β
1 Sun Yat-Sen University. Β Β 2 The Hong Kong University of Science and Technology. Β Β
3 Northwestern Polytechnical University. Β Β 4 North China Electric Power University. Β Β
5 The Hong Kong University of Science and Technology (Guangzhou). Β Β
*Equal Contribution Β Β β Corresponding Authors
- [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%).
[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.
And we also provide a special demo for IROS2024.
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 π.
- ROS Noetic (Ubuntu 20.04) or ROS Melodic (Ubuntu 18.04)
- PCL
- Eigen
For Marsim:
sudo apt update sudo apt install libglfw3-dev libglew-devFor GCOPTER:
sudo apt update sudo apt install libompl-devProject:
git clone https://github.com/Robotics-STAR-Lab/SOAR.git cd SOAR catkin_makeIf 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 -jsource devel/setup.bash && roslaunch heterogeneous_manager rviz.launch source devel/setup.bash && roslaunch heterogeneous_manager pisa.launchsource devel/setup.bash && roslaunch heterogeneous_manager rviz.launch source devel/setup.bash && roslaunch heterogeneous_manager sydney.launchTrigger 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" />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>- 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.
We aim to develop intelligent perception-centric flight to realize Fast Coverage / reConstruction / inspeCtion etc.
- 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.



