Skip to content

📍🗺️ A Python library for Multi-Agents Planning and Pathfinding (Centralized and Decentralized)

License

Notifications You must be signed in to change notification settings

APLA-Toolbox/pymapf

Repository files navigation

Logo

PyMAPF

✨ A Python toolbox for Multi-Agents Planning (Centralized and Decentralized) ✨

tests pip-package codecov CodeFactor Percentage of issues still open PipPerMonths Pip version fury.io GitHub license GitHub contributors

Report Bug · Request Feature

Loved the project? Please consider donating to help it improve!

Features 🌱

  • ✨ Built to be expanded: easy to add new planners
  • 🖥️ Supported on Ubuntu
  • 🎌 Built with Python
  • 🔎 Reactive Distributed Planners (Nonlinear Model Predictive Control, Velocity Obstacles)
  • 🧭 Centralized Planners (Space-Time A*)
  • 📊 Benchmark Tools (Incoming...)
  • 🍻 Maintained (Incoming: Enhanced Conflict-Based Search, Local-Repair A*, Replanning RRT*...)
Logo

Dependencies 🖇️

  • Install Python (3.7.5 is the tested version)
  • Install Pip: sudo apt install python3-pip
  • Upgrade Pip: python3 -m pip install --upgrade pip

Using the repository 💾

  • Clone the repo: git clone https://github.com/apla-toolbox/pymapf
  • Cd into the repo cd pymapf
  • Install requirements: python3 -m pip install -r requirements.txt

Using the pip package 📦

  • Install the package: python3 -m pip install pymapf

Usage 📑

Scripts 💨

Launch hub switch scripts using:

  • python3 scripts/switch_positions_nmpc.py
  • python3 scripts/switch_positions_vel_obstacles.py (broken)

More to come...

Library 🗺️

from pymapf.decentralized import MultiAgentNMPC
from pymapf.decentralized.position import Position
import numpy as np

sim = MultiAgentNMPC()
sim.register_agent("r2d2", Position(0, 3), Position(10, 7))
sim.register_agent("bb8", Position(0, 7), Position(5, 10))
sim.register_agent("c3po", Position(10, 7), Position(5, 0))
sim.register_obstacle(2, np.pi/4, Position(0, 0))
sim.run_simulation()
sim.visualize("filename_test", 10, 10)
from pymapf.decentralized.velocity_obstacle import MultiAgentVelocityObstacle
from pymapf.decentralized.position import Position

sim = MultiAgentVelocityObstacle(simulation_time=8.0)
sim.register_agent("r2d2", Position(0, 3), Position(10, 7))
sim.register_agent("bb8", Position(0, 7), Position(5, 10))
sim.register_agent("c3po", Position(10, 7), Position(5, 0))
sim.run_simulation()
sim.visualize("filename_test_2", 10, 10)

Cite 📰

If you use the project in your work, please consider citing it with:

@misc{https://doi.org/10.13140/rg.2.2.14030.28486,
  doi = {10.13140/RG.2.2.14030.28486},
  url = {http://rgdoi.net/10.13140/RG.2.2.14030.28486},
  author = {Erwin Lejeune and Sampreet Sarkar},
  language = {en},
  title = {Survey of the Multi-Agent Pathfinding Solutions},
  publisher = {Unpublished},
  year = {2021}
}

List of publications & preprints using pymapf (please open a pull request to add missing entries):

Contribute 🆘

Open an issue to state clearly the contribution you want to make. Upon aproval send in a PR with the Issue referenced. (Implement Issue #No / Fix Issue #No).

Maintainers Ⓜ️

  • Erwin Lejeune
  • Sampreet Sarkar

About

📍🗺️ A Python library for Multi-Agents Planning and Pathfinding (Centralized and Decentralized)

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages