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.
Execute the following command in order to see how the planner algorithm works in simulation:
python scripts/layered_planner/layered_planner_sim.py
Here I would like to describe how to use the package for autonomous path planning of a group of nano-quadrotors Crazyflies.
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
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}
}
Project is distributed under MIT License