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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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