ZJU-FAST-Lab / Swarm-Formation

Formation Flight in Dense Environments
GNU General Public License v3.0
406 stars 64 forks source link
aerial-robotics distributed-systems formation-flight motion-planning multi-robot spatial-temporal swarm trajectory-optimization

Swarm-Formation

Swarm-Formation is a distributed swarm trajectory optimization framework for formation flight in dense environments.

News

Table of Contents

1. About

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.

2. Quick Start within 3 Minutes

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.

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 :star:, thanks!:grinning:

2.1 Quick Start with Docker

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

3. Tips

  1. 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:
      sudo apt install ros-${ROS_DISTRO}-rosmon
      source /opt/ros/${ROS_DISTRO}/setup.bash # Needed to use the 'mon launch' shortcut

      Run the simple example of our project:

      source devel/setup.bash
      roslaunch ego_planner rviz.launch

      Then open a new command window in the same workspace and use rosmon:

      source devel/setup.bash
      mon launch ego_planner normal_hexagon.launch

4. Important updates

5. Acknowledgements

There are several important works which support this project:

6. Licence

The source code is released under GPLv3 license.

7. Maintenance

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).