Skip to content

Multiple robots layered path planning algorithm implemented as a ROS node to control a swarm of nano quadrotors, Crazyflies 2.X, with real-time obstacle avoidance.

License

Notifications You must be signed in to change notification settings

RuslanAgishev/adaptive_swarm

Repository files navigation

Adaptive Swarm

ToH CHI Thesis

Package description

This project is a layered path planner algorithm to solve multiple agents navigation problem in a cluttered environment. Please, refer to the Master Thesis for more details.

The general path planning problem is divided into approximate global trajectory construction, which is further smoothed by a local path planning method. The proposed approach provides a solution based on a leader-followers architecture with a prescribed formation geometry that adapts dynamically to the environment and avoids collisions.

The path generated by the global planner based on rapidly-exploring random tree (RRT) algorithm is corrected with the artificial potential fields (APF) method that ensures robots trajectories to be collision-free, reshaping the geometry of the formation when required by environmental conditions. Take a look at motion_planning repository for more examples.

Getting started

Execute the following command in order to see how the planner algorithm works in simulation:

python scripts/layered_planner/layered_planner_sim.py 

Real flight

Here I would like to describe how to use the package for autonomous path planning of a group of nano-quadrotors Crazyflies.

Dependencies

Install ROS (the package is tested with kinetic version and Ubuntu 16.04), setup a workspace and build the packages:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
git clone --recursive https://github.com/whoenig/crazyflie_ros
git clone https://github.com/ethz-asl/vicon_bridge
git clone https://github.com/RuslanAgishev/adaptive_swarm.git
cd ~/catkin_ws
catkin_make
source devel/setup.bash

The path planning algrithm is built with a known map assumption. You can define obstacles location of your environment in layered_planner.py.

  • Launch external position estimator (Vicon motion capture system), and connect to drones:
roslaunch adaptive_swarm connect123.launch

Setup python path to swarmlib:

export PYTHONPATH=/path/to/catkin_ws/src/adaptive_swarm/scripts:$PYTHONPATH
  • Command the drones to fly in a formation through a map of obstacles:
rosrun adaptive_swarm layered_planner.py 

Citation

Feel free to cite the papers, if you find the package useful for your research.

@article{tsykunov2019swarmtouch,
  title={Swarmtouch: Guiding a swarm of micro-quadrotors with impedance control using a wearable tactile interface},
  author={Tsykunov, Evgeny and Agishev, Ruslan and Ibrahimov, Roman and Labazanova, Luiza and Tleugazy, Akerke and Tsetserukou, Dzmitry},
  journal={IEEE transactions on haptics},
  volume={12},
  number={3},
  pages={363--374},
  year={2019},
  publisher={IEEE}
}
@inproceedings{agishev:hal-02128383,
  TITLE = {{Tactile Interaction of Human with Swarm of Nano-Quadrotors augmented with Adaptive Obstacle Avoidance}},
  AUTHOR = {Agishev, Ruslan and Tsykunov, Evgeny and Labazanova, Luiza and Tleugazy, Akerke and Tsetserukou, Dzmitry},
  URL = {https://hal.science/hal-02128383},
  BOOKTITLE = {{1st International Workshop on Human-Drone Interaction}},
  ADDRESS = {Glasgow, United Kingdom},
  ORGANIZATION = {{Ecole Nationale de l'Aviation Civile [ENAC]}},
  YEAR = {2019},
  MONTH = May,
  KEYWORDS = {Human ; robot interaction ; tactile display ; wearable computers ; robot formation motion planning ; impedance control ; potential fields},
  PDF = {https://hal.science/hal-02128383/file/HDI_2019_paper_14.pdf},
  HAL_ID = {hal-02128383},
  HAL_VERSION = {v1},
}

License

Project is distributed under MIT License

About

Multiple robots layered path planning algorithm implemented as a ROS node to control a swarm of nano quadrotors, Crazyflies 2.X, with real-time obstacle avoidance.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published