Loading repository data…
Loading repository data…
atb033 / repository
Python implementation of a bunch of multi-robot path-planning algorithms.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
This repository consists of the implementation of some multi-agent path-planning algorithms in Python. The following algorithms are currently implemented:
Install the necessary dependencies by running.
python3 -m pip install -r requirements.txt
In these methods, it is the responsibility of the central planner to provide a plan to the robots.
SIPP is a local planner, using which, a collision-free plan can be generated, after considering the static and dynamic obstacles in the environment. In the case of multi-agent path planning, the other agents in the environment are considered as dynamic obstacles.
For SIPP multi-agent prioritized planning, run:
cd ./centralized/sipp
python3 multi_sipp.py input.yaml output.yaml
To visualize the generated results
python3 visualize_sipp.py input.yaml output.yaml
To record video
python3 visualize_sipp.py input.yaml output.yaml --video 'sipp.avi' --speed 1
| Test 1 (Success) | Test 2 (Failure) |
|---|---|
Conclict-Based Search (CBS), is a multi-agent global path planner.
Run:
cd ./centralized/cbs
python3 cbs.py input.yaml output.yaml
To visualize the generated results:
python3 ../visualize.py input.yaml output.yaml
| Test 1 (Success) | Test 2 (Success) |
|---|---|
| 8x8 grid | 32x32 grid |
|---|---|
The plan, which is computed in discrete time, can be postprocessed to generate a plan-execution schedule, that takes care of the kinematic constraints as well as imperfections in plan execution.
This work is based on: Multi-Agent Path Finding with Kinematic Constraints
Once the plan is generated using CBS, please run the following to generate the plan-execution schedule:
cd ./centralized/scheduling
python3 minimize.py ../cbs/output.yaml real_schedule.yaml
In this approach, it is the responsibility of each robot to find a feasible path. Each robot sees other robots as dynamic obstacles, and tries to compute a control velocity which would avoid collisions with these dynamic obstacles.
cd ./decentralized
python3 decentralized.py -f velocity_obstacle/velocity_obstacle.avi -m velocity_obstacle
| Test 1 | Test 2 |
|---|---|
cd ./decentralized
python3 decentralized.py -m nmpc
| Test 1 | Test 2 |
|---|---|