Swarm-Formation is a distributed swarm trajectory optimization framework for formation flight in dense environments.
- A differentiable graph-theory-based cost function that effectively describes the interaction topology of robots and quantifies the similarity distance between three-dimensional formations.
- A spatial-temporal optimization framework with a joint cost function that takes formation similarity, obstacle avoidance, and dynamic feasibility into account, which makes the swarm robots possess the ability to move in formation while avoiding obstacles.
- October 9, 2022 - An improved version which achieves fully autonomous large-scale formation flight in dense environments with a complete formation navigation system has been submitted to IEEE Transactions on Robotics Preprint, Bilibili.
- April 20, 2022 - A robust version v1.1 has been open-sourced for ICRA2022.
Author: Lun Quan*, Longji Yin*, Chao Xu, and Fei Gao, from Fast-Lab,Zhejiang University.
Paper: Distributed Swarm Trajectory Optimization for Formation Flight in Dense Environments, Lun Quan*, Longji Yin*, Chao Xu, and Fei Gao. Accepted in ICRA2022.
@article{quan2021distributed,
title={Distributed Swarm Trajectory Optimization for Formation Flight in Dense Environments},
author={Lun Quan and Longji Yin and Chao Xu and Fei Gao},
journal={arXiv preprint arXiv:2109.07682},
year={2021}
}
If our source code is used in your academic projects, please cite our paper. Thank you!
Video Links: Bilibili (only for Mainland China) or Youtube.
Compiling tests passed on ubuntu 18.04 and 20.04 with ros installed. You can just execute the following commands one by one.
sudo apt-get install libarmadillo-dev
git clone https://github.com/ZJU-FAST-Lab/Swarm-Formation.git
cd Swarm-Formation
catkin_make -j1
source devel/setup.bash
roslaunch ego_planner rviz.launch
Then open a new command window in the same workspace and execute the following commands one by one.
source devel/setup.bash
roslaunch ego_planner normal_hexagon.launch
Then use "2D Nav Goal" in rviz to publish the goal for swarm formation navigation. You need to specify the value of flight_type in run_in_sim.launch:
Now only two forms are supported to specify the target point.
- flight_type = 2: use global waypoints
- flight_type = 3: use "2D Nav Goal" to select goal
Finally, you can see a normal hexagon formation navigating in random forest map.
If you find this work useful or interesting, please kindly give us a star ⭐, thanks!😀
If your operating system doesn't support ROS noetic, docker is a great alternative.
First of all, you have to build the project and create an image like so:
## Assuimg you are in the correct project directory
make docker_build
After the image is created, copy and paste the following command to the terminal to run the image:
xhost +
make docker_run
Then execute the following command;
roslaunch ego_planner normal_hexagon.launch
- We recommend developers to use rosmon to replace the roslaunch
- Why we use rosmon? : It is very developer-friendly, especially for the development of multi-robots.
- How to use rosmon? :
Install:
Run the simple example of our project:
sudo apt install ros-${ROS_DISTRO}-rosmon source /opt/ros/${ROS_DISTRO}/setup.bash # Needed to use the 'mon launch' shortcut
Then open a new command window in the same workspace and use rosmon:source devel/setup.bash roslaunch ego_planner rviz.launch
source devel/setup.bash mon launch ego_planner normal_hexagon.launch
- May 9, 2022 -Add Interface: Publish target points through "2D Nav Goal" in rviz for swarm formation navigation.
- April 12, 2022 - A distributed swarm formation optizamition framework is released. An example of normal hexagon formation navigation in random forest map is given.
There are several important works which support this project:
- GCOPTER: An efficient and versatile multicopter trajectory optimizer built upon a novel sparse trajectory representation named MINCO.
- LBFGS-Lite: An Easy-to-Use Header-Only L-BFGS Solver.
- EGO-Swarm: A Fully Autonomous and Decentralized Quadrotor Swarm System in Cluttered Environments.
The source code is released under GPLv3 license.
We are still working on extending the proposed system and improving code reliability.
For any technical issues, please contact Lun Quan (lunquan@zju.edu.cn) or Fei Gao (fgaoaa@zju.edu.cn).
For commercial inquiries, please contact Fei Gao (fgaoaa@zju.edu.cn).