PDDLStream est un cadre de planification composé d'un langage d'action et d'une suite d'algorithmes pour la planification de l'intelligence artificielle (IA) en présence de procédures d'échantillonnage. PDDLStream étend le langage PDDL (Planning Domain Definition Language) en introduisant des flux, des spécifications déclaratives des procédures d'échantillonnage. Les algorithmes PDDLStream sont indépendants du domaine et résolvent les problèmes PDDLStream avec seulement une description boîte noire de chaque échantillonneur. L'application motivante de PDDLStream était destinée à la planification des tâches et des mouvements des robots à usage général (TAMP).
La branche pddlstream par défaut (principale) est la dernière "version" stable de pddlstream . La branche descendante de pddlstream est la version la plus récente et la plus avancée de pddlstream, mais elle est également quelque peu expérimentale.
Caelan R. Garrett, Tomás Lozano-Pérez, Leslie P. Kaelbling. PDDLStream : Intégration de planificateurs symboliques et d'échantillonneurs de boîte noire via une planification adaptative optimiste, Conférence internationale sur la planification et la planification automatisées (ICAPS), 2020.
Caelan Garrett : [nom d'utilisateur]@csail.mit.edu
PDDLStream est la « troisième version » du cadre de planification PDDLStream/STRIPStream, destinée à remplacer les versions précédentes :
PDDLStream apporte plusieurs améliorations représentationnelles et algorithmiques par rapport à ces versions. Plus particulièrement, il adhère aux conventions et à la syntaxe PDDL dans la mesure du possible et contient plusieurs nouveaux algorithmes.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
Si nécessaire, consultez la documentation de FastDownward pour des instructions d'installation plus détaillées.
PDDLStream prend activement en charge python2.7 ainsi que la version la plus récente de python3.
Assurez-vous de mettre à jour de manière récursive les sous-modules de pddlstream lors de l'extraction de nouveaux commits.
pddlstream$ git pull --recurse-submodules
Ce référentiel contient plusieurs exemples de domaines PDDLStream robotiques et non robotiques.
Installez PyBullet sur OS X ou Linux en utilisant :
$ pip install pybullet numpy scipy
Exemples :
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
Voir https://github.com/caelan/pybullet-planning pour plus d'informations sur ma bibliothèque de primitives de planification PyBullet.
Installez numpy et Python TKinter sur Linux en utilisant :
$ sudo apt-get install python-tk
$ pip install numpy
Exemples :
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
Exemples simples pouvant être exécutés sans dépendances supplémentaires :
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
Cas de tests ou fonctionnalités avancées (et non documentées) :
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
Exemples PDDL IPC non modifiés résolus à l'aide du traducteur modifié de PDDLStream :
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
Projets externes utilisant PDDLStream :
PDDLStream est un cadre de planification composé d'un seul langage de planification mais de plusieurs algorithmes de planification. Certains algorithmes sont radicalement différents des autres (par exemple, incrémentiel ou ciblé) et le temps de planification peut donc également varier considérablement. L'algorithme adaptatif fonctionne généralement mieux pour les domaines comportant de nombreuses voies d'échantillonnage possibles, tels que les domaines de manipulation de robots.
La méta-procédure solve(...) permet à l'utilisateur de basculer entre les algorithmes disponibles à l'aide de l'argument mot-clé algorithm={} .
Descriptions des propriétés :
De nombreux algorithmes pddlstream (mais pas tous) ont une phase de planification discrète qui peut être implémentée à l'aide de n'importe quel algorithme de recherche dans un espace d'état fini, tel que la recherche en largeur d'abord (BFS) et la recherche à coût uniforme (UCS). Cependant, comme pddlstream étend PDDL, cette phase de planification peut également être implémentée par des algorithmes de planification classiques de pointe, qui exploitent la structure factorisée de langages d'action tels que PDDL pour améliorer considérablement l'efficacité de la planification empirique. Les algorithmes de recherche heuristique de type « meilleur premier », qui dérivent automatiquement des heursitiques de manière indépendante du domaine , constituent un exemple de classe de ces algorithmes.
pddlstream est livré pré-emballé avec FastDownward, une bibliothèque prolifique qui contient de nombreux algorithmes de planification PDDL de recherche heuristique de premier ordre. J'ai préconfiguré un petit nombre d'algorithmes de recherche efficaces et généraux dans SEARCH_OPTIONS, qui peuvent être activés à l'aide de l'argument mot-clé planificateur=?. Je les ai grossièrement classés du moins paresseux (coût le plus bas) au plus paresseux (durée d'exécution la plus basse) :
La durée d'exécution de la phase de planification discrète varie en fonction de l'algorithme de recherche sélectionné. Pour de nombreux problèmes non conflictuels, ces algorithmes résoudront un problème instantanément ou, s'ils ne sont pas assez gourmands, ne se termineront pas dans les 10 minutes. Je recommande de commencer par une configuration plus gourmande et d'évoluer vers une configuration moins gourmande si vous le souhaitez.
N’importe quel algorithme de planification PDDL pourrait être utilisé à la place de FastDownward ; cependant, il convient de noter que certains de ces planificateurs ne sont implémentés que pour prendre en charge un ensemble limité de caractéristiques de représentation (par exemple, pas d'effets conditionnels, pas de prédicats dérivés, etc.), ce qui peut rendre à la fois la modélisation plus difficile et, en fin de compte, la planification moins efficace dans de nombreux cas réels. -domaines de planification mondiaux (non IPC). Bien que je recommande fortement FastDownward, certains planificateurs PDDL avec lesquels j'ai interagi dans le passé avec un certain succès incluent :
Agendas classiques
Planificateurs numériques :
Planificateurs temporels :
Planificateurs divers :
Les dossiers « Retraité » indiquent du code qui n'est plus pris en charge en permanence et qui est donc probablement obsolète.
Installez Drake sur OS X ou Ubuntu en suivant les instructions suivantes : http://drake.mit.edu/installation.html.
Vous pouvez également installer Drake via Docker en suivant les instructions suivantes : http://manipulation.csail.mit.edu/install_drake_docker.html. Utilisez le script docker_run_bash approprié avec la balise docker drake-20181128.
Exemples :
~/pddlstream$ python -m examples.drake.run
Des exemples supplémentaires de PDDLStream + Drake peuvent être trouvés sur : https://github.com/RobotLocomotion/6-881-examples.