PDDLStream ist ein Planungsframework, das aus einer Aktionssprache und einer Reihe von Algorithmen für die Planung mit künstlicher Intelligenz (KI) bei Vorhandensein von Stichprobenverfahren besteht. PDDLStream erweitert die Planning Domain Definition Language (PDDL) durch die Einführung von Streams, deklarativen Spezifikationen von Stichprobenverfahren. PDDLStream-Algorithmen sind domänenunabhängig und lösen PDDLStream-Probleme mit nur einer Blackbox-Beschreibung jedes Samplers. Die motivierende Anwendung von PDDLStream war für die allgemeine Roboter-Aufgaben- und Bewegungsplanung (TAMP).
Der standardmäßige pddlstream- Zweig (main) ist die neueste stabile „Version“ von pddlstream . Der nach unten gerichtete pddlstream- Zweig ist die neueste und fortschrittlichste Version von pddlstream , aber auch etwas experimentell.
Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. PDDLStream: Integration symbolischer Planer und Blackbox-Sampler durch optimistische adaptive Planung, Internationale Konferenz für automatisierte Planung und Scheduling (ICAPS), 2020.
Caelan Garrett: [Benutzername]@csail.mit.edu
PDDLStream ist die „dritte Version“ des PDDLStream/STRIPStream-Planungsframeworks, die frühere Versionen ersetzen soll:
PDDLStream bietet gegenüber diesen Versionen mehrere Darstellungs- und Algorithmusverbesserungen. Vor allem hält es sich nach Möglichkeit an die PDDL-Konventionen und die PDDL-Syntax und enthält mehrere neue Algorithmen.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
Detailliertere Installationsanweisungen finden Sie bei Bedarf in der Dokumentation von FastDownward.
PDDLStream unterstützt aktiv Python2.7 sowie die neueste Version von Python3.
Stellen Sie sicher, dass Sie die Submodule von pddlstream rekursiv aktualisieren, wenn Sie neue Commits abrufen.
pddlstream$ git pull --recurse-submodules
Dieses Repository enthält mehrere robotische und nicht-robotische PDDLStream-Beispieldomänen.
Installieren Sie PyBullet unter OS X oder Linux mit:
$ pip install pybullet numpy scipy
Beispiele:
pddlstream$ python -m examples.pybullet.tamp.run
pddlstream$ python -m examples.pybullet.pr2.run
pddlstream$ python -m examples.pybullet.turtlebot_rovers.run
pddlstream$ python -m examples.pybullet.pr2_rovers.run
pddlstream$ python -m examples.pybullet.pr2_belief.run
pddlstream$ python -m examples.pybullet.kuka.run
Weitere Informationen zu meiner PyBullet-Planungsprimitivbibliothek finden Sie unter https://github.com/caelan/pybullet-planning.
Installieren Sie Numpy und Python TKinter unter Linux mit:
$ sudo apt-get install python-tk
$ pip install numpy
Beispiele:
pddlstream$ python -m examples.continuous_tamp.run
pddlstream$ python -m examples.motion.run
pddlstream$ python -m examples.discrete_tamp.run
pddlstream$ python -m examples.discrete_tamp.run
Einfache Beispiele, die ohne zusätzliche Abhängigkeiten ausgeführt werden können:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
Testfälle oder erweiterte (und undokumentierte) Funktionalität:
pddlstream$ python -m examples.advanced.adl.run
pddlstream$ python -m examples.advanced.defer.run
pddlstream$ python -m examples.advanced.exogenous.run
pddlstream$ python -m examples.advanced.fluent.run
pddlstream$ python -m examples.advanced.satisfy.run
pddlstream$ python -m examples.advanced.wild.run
Unmodifizierte PDDL-IPC-Beispiele, gelöst mit dem modifizierten Übersetzer von PDDLStream:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
Externe Projekte, die PDDLStream nutzen:
PDDLStream ist ein Planungsframework, das aus einer einzigen Planungssprache, aber mehreren Planungsalgorithmen besteht. Einige der Algorithmen unterscheiden sich grundlegend von anderen (z. B. inkrementell vs. fokussiert) und daher kann auch die Planungszeit erheblich variieren. Der adaptive Algorithmus erzielt in der Regel die beste Leistung für Domänen mit vielen möglichen Abtastwegen, beispielsweise Robotermanipulationsdomänen.
Die Metaprozedursolve(...) ermöglicht es dem Benutzer, mithilfe des Schlüsselwortarguments algorithm={} zwischen verfügbaren Algorithmen umzuschalten.
Objektbeschreibungen:
Viele (aber nicht alle) pddlstream- Algorithmen verfügen über eine diskrete Planungsphase, die mit jedem Suchalgorithmus im endlichen Zustandsraum implementiert werden kann, wie z. B. Breadth-First Search (BFS) und Uniform-Cost Search (UCS). Da pddlstream jedoch PDDL erweitert, kann diese Planungsphase auch durch moderne klassische Planungsalgorithmen implementiert werden, die die faktorisierte Struktur von Aktionssprachen wie PDDL nutzen, um die empirische Planungseffizienz erheblich zu verbessern. Eine Beispielklasse dieser Algorithmen sind heuristische Best-First-Suchalgorithmen, die Heursitiken automatisch und domänenunabhängig ableiten.
pddlstream wird mit FastDownward geliefert, einer umfangreichen Bibliothek, die viele PDDL-Planungsalgorithmen für die heuristische Best-First-Suche enthält. Ich habe in SEARCH_OPTIONS eine kleine Anzahl effektiver und allgemeiner Suchalgorithmen vorkonfiguriert, die mit dem Schlüsselwortargument Planner=? umgeschaltet werden können. Ich habe sie grob in der Reihenfolge von am wenigsten faul (geringste Kosten) bis am meisten faul (geringste Laufzeit) geordnet:
Die Laufzeit der diskreten Planungsphase variiert je nach gewähltem Suchalgorithmus. Bei vielen nicht kontradiktorischen Problemen lösen diese Algorithmen ein Problem entweder sofort oder werden, wenn sie nicht gierig genug sind, nicht innerhalb von 10 Minuten beendet. Ich empfehle, mit einer gierigeren Konfiguration zu beginnen und bei Bedarf zu einer weniger gierigen Konfiguration überzugehen.
Anstelle von FastDownward könnte jeder PDDL-Planungsalgorithmus verwendet werden; Ein Vorbehalt besteht jedoch darin, dass einige dieser Planer nur zur Unterstützung eines begrenzten Satzes an Darstellungsfunktionen implementiert sind (z. B. keine bedingten Effekte, keine abgeleiteten Prädikate usw.), was sowohl die Modellierung schwieriger als auch letztendlich die Planung in vielen realen Fällen weniger effizient machen kann -Weltplanungsdomänen (nicht IPC). Obwohl ich FastDownward wärmstens empfehle, gehören zu den PDDL-Planern, mit denen ich in der Vergangenheit mit einigem Erfolg zusammengearbeitet habe:
Klassische Planer
Numerische Planer:
Zeitplaner:
Diverse Planer:
„Retired“-Ordner weisen auf Code hin, der nicht mehr kontinuierlich unterstützt wird und daher wahrscheinlich veraltet ist.
Installieren Sie Drake unter OS X oder Ubuntu, indem Sie den folgenden Anweisungen folgen: http://drake.mit.edu/installation.html.
Alternativ können Sie Drake über Docker installieren, indem Sie den folgenden Anweisungen folgen: http://manipulation.csail.mit.edu/install_drake_docker.html. Verwenden Sie das entsprechende docker_run_bash-Skript mit dem Docker-Tag drake-20181128.
Beispiele:
~/pddlstream$ python -m examples.drake.run
Weitere PDDLStream + Drake-Beispiele finden Sie unter: https://github.com/RobotLocomotion/6-881-examples.