epoxx-arch / adaptive_swarm

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.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Adaptive Swarm

Package description

This project is a layered path planner algorithm to solve multiple agents navigation problem in a cluttered environment.

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 my Master thesis, if you find the package useful for your research.

@software{Agishev_Adaptive_Control_of_2019,
author = {Agishev, Ruslan and Tsykunov, Evgeny},
month = {5},
title = {{Adaptive Control of Swarm of Drones for Obstacle Avoidance}},
url = {https://github.com/RuslanAgishev/adaptive_swarm},
school = {Skolkovo Institute of Science and Technology},
version = {0.0.1},
year = {2019}
}

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.

License:MIT License


Languages

Language:Jupyter Notebook 84.4%Language:Python 15.0%Language:CMake 0.6%