PDDLStream es un marco de planificación compuesto por un lenguaje de acción y un conjunto de algoritmos para la planificación de Inteligencia Artificial (IA) en presencia de procedimientos de muestreo. PDDLStream amplía el lenguaje de definición de dominio de planificación (PDDL) al introducir flujos y especificaciones declarativas de procedimientos de muestreo. Los algoritmos de PDDLStream son independientes del dominio y resuelven los problemas de PDDLStream con solo una descripción de caja negra de cada muestreador. La aplicación motivadora de PDDLStream fue para la planificación de tareas y movimientos de robots de uso general (TAMP).
La rama pddlstream predeterminada (principal) es la "versión" estable más nueva de pddlstream . La rama descendente pddlstream es la versión más reciente y avanzada de pddlstream pero también es algo experimental.
Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. PDDLStream: Integración de planificadores simbólicos y muestreadores de Blackbox mediante una planificación adaptativa optimista, Conferencia internacional sobre planificación y programación automatizadas (ICAPS), 2020.
Caelan Garrett: [nombre de usuario]@csail.mit.edu
PDDLStream es la "tercera versión" del marco de planificación PDDLStream/STRIPStream, destinada a reemplazar las versiones anteriores:
PDDLStream realiza varias mejoras algorítmicas y de representación con respecto a estas versiones. En particular, se adhiere a las convenciones y la sintaxis de PDDL siempre que sea posible y contiene varios algoritmos nuevos.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
Si es necesario, consulte la documentación de FastDownward para obtener instrucciones de instalación más detalladas.
PDDLStream es compatible activamente con python2.7 y con la versión más reciente de python3.
Asegúrese de actualizar recursivamente los submódulos de pddlstream cuando realice nuevas confirmaciones.
pddlstream$ git pull --recurse-submodules
Este repositorio contiene varios dominios de ejemplo de PDDLStream robóticos y no robóticos.
Instale PyBullet en OS X o Linux usando:
$ pip install pybullet numpy scipy
Ejemplos:
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
Consulte https://github.com/caelan/pybullet-planning para obtener más información sobre mi biblioteca de primitivas de planificación PyBullet.
Instale numpy y Python TKinter en Linux usando:
$ sudo apt-get install python-tk
$ pip install numpy
Ejemplos:
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
Ejemplos simples que se pueden ejecutar sin dependencias adicionales:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
Casos de prueba o funcionalidad avanzada (e indocumentada):
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
Ejemplos de PDDL IPC sin modificar resueltos utilizando el traductor modificado de PDDLStream:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
Proyectos externos que hacen uso de PDDLStream:
PDDLStream es un marco de planificación compuesto por un único lenguaje de planificación pero múltiples algoritmos de planificación. Algunos de los algoritmos son radicalmente diferentes a otros (por ejemplo, incremental versus enfocado) y, por lo tanto, el tiempo de planificación también puede variar sustancialmente. El algoritmo adaptativo normalmente funciona mejor en dominios con muchas vías de muestreo posibles, como los dominios de manipulación de robots.
El metaprocedimiento solve(...) permite al usuario alternar entre algoritmos disponibles utilizando el argumento de palabra clave algoritmo={} .
Descripciones de propiedades:
Muchos (pero no todos) los algoritmos pddlstream tienen una fase de planificación discreta que se puede implementar utilizando cualquier algoritmo de búsqueda de espacio de estados finito, como la búsqueda primero en amplitud (BFS) y la búsqueda de costo uniforme (UCS). Sin embargo, debido a que pddlstream extiende PDDL, esta fase de planificación también se puede implementar mediante algoritmos de planificación clásicos de última generación, que aprovechan la estructura factorizada de lenguajes de acción como PDDL para mejorar enormemente la eficiencia de la planificación empírica. Los algoritmos de búsqueda heurística del mejor primero, que derivan automáticamente heursíticas de manera independiente del dominio , son una clase de ejemplo de estos algoritmos.
pddlstream viene preempaquetado con FastDownward, una prolífica biblioteca que contiene muchos algoritmos de planificación PDDL de búsqueda heurística de mejor primero. He preconfigurado una pequeña cantidad de algoritmos de búsqueda generales y efectivos en SEARCH_OPTIONS, que se pueden alternar usando el argumento de palabra clave planificador=?. Los he clasificado aproximadamente en orden de menos perezosos (menor costo) a más perezosos (menor tiempo de ejecución):
El tiempo de ejecución de la fase de planificación discreta varía según el algoritmo de búsqueda seleccionado. Para muchos problemas que no son conflictivos, estos algoritmos resolverán un problema instantáneamente o, si no son lo suficientemente codiciosos, no terminarán en 10 minutos. Recomiendo comenzar con una configuración más codiciosa y avanzar hacia una menos codiciosa si lo desea.
Se podría utilizar cualquier algoritmo de planificación PDDL en lugar de FastDownward; Sin embargo, una advertencia es que algunos de estos planificadores sólo se implementan para soportar un conjunto limitado de características representacionales (por ejemplo, sin efectos condicionales, sin predicados derivados, etc.), lo que puede hacer que el modelado sea más difícil y, en última instancia, la planificación menos eficiente en muchos casos reales. -Dominios de planificación mundial (no IPC). Si bien recomiendo encarecidamente FastDownward, algunos planificadores de PDDL con los que he interactuado en el pasado con cierto éxito incluyen:
Planificadores clásicos
Planificadores numéricos:
Planificadores temporales:
Planificadores diversos:
Las carpetas "retiradas" indican código que ya no se admite continuamente y, por lo tanto, probablemente esté desactualizado.
Instale Drake en OS X o Ubuntu siguiendo las siguientes instrucciones: http://drake.mit.edu/installation.html.
Alternativamente, instale Drake a través de la ventana acoplable siguiendo las siguientes instrucciones: http://manipulation.csail.mit.edu/install_drake_docker.html. Utilice el script docker_run_bash apropiado con la etiqueta docker drake-20181128.
Ejemplos:
~/pddlstream$ python -m examples.drake.run
Se pueden encontrar ejemplos adicionales de PDDLStream + Drake en: https://github.com/RobotLocomotion/6-881-examples.