PDDLStream — это среда планирования, состоящая из языка действий и набора алгоритмов для планирования искусственного интеллекта (ИИ) при наличии процедур выборки. PDDLStream расширяет язык определения предметной области планирования (PDDL), вводя потоки, декларативные спецификации процедур выборки. Алгоритмы PDDLStream не зависят от предметной области и решают проблемы PDDLStream, используя только описание черного ящика каждого сэмплера. Мотивирующим применением PDDLStream было планирование задач и движений роботов общего назначения (TAMP).
Ветка pddlstream по умолчанию (основная) — это новейшая стабильная «выпуска» pddlstream . Нисходящая ветвь pddlstream — это самая последняя и усовершенствованная версия pddlstream , но она также является несколько экспериментальной.
Кэлан Р. Гарретт, Томас Лосано-Перес, Лесли П. Кельблинг. PDDLStream: интеграция символических планировщиков и сэмплеров черного ящика посредством оптимистического адаптивного планирования, Международная конференция по автоматизированному планированию и составлению графиков (ICAPS), 2020.
Кэлан Гарретт: [имя пользователя]@csail.mit.edu
PDDLStream — это «третья версия» структуры планирования PDDLStream/STRIPStream, предназначенная для замены предыдущих версий:
PDDLStream вносит несколько улучшений в представлении и алгоритмах по сравнению с этими версиями. В частности, он по возможности придерживается соглашений и синтаксиса PDDL и содержит несколько новых алгоритмов.
$ git clone --recursive --branch main [email protected]:caelan/pddlstream.git
$ cd pddlstream
pddlstream$ git submodule update --init --recursive
pddlstream$ ./downward/build.py
При необходимости обратитесь к документации FastDownward для получения более подробных инструкций по установке.
PDDLStream активно поддерживает Python2.7, а также самую последнюю версию Python3.
Обязательно рекурсивно обновляйте подмодули pddlstream при получении новых коммитов.
pddlstream$ git pull --recurse-submodules
Этот репозиторий содержит несколько примеров роботизированных и нероботизированных доменов PDDLStream.
Установите PyBullet на OS X или Linux, используя:
$ pip install pybullet numpy scipy
Примеры:
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
См. https://github.com/caelan/pybullet-planning для получения дополнительной информации о моей библиотеке примитивов планирования PyBullet.
Установите numpy и Python TKinter в Linux, используя:
$ sudo apt-get install python-tk
$ pip install numpy
Примеры:
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
Простые примеры, которые можно запустить без дополнительных зависимостей:
pddlstream$ python -m examples.blocksworld.run
pddlstream$ python -m examples.blocksworld.run_derived
pddlstream$ python -m examples.kitchen.run
Тестовые случаи или расширенная (и недокументированная) функциональность:
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
Немодифицированные примеры PDDL IPC, решенные с использованием модифицированного транслятора PDDLStream:
pddlstream$ python -m examples.ipc.rovers.run
pddlstream$ python -m examples.ipc.satellites.run
Внешние проекты, использующие PDDLStream:
PDDLStream — это среда планирования, состоящая из одного языка планирования, но нескольких алгоритмов планирования. Некоторые алгоритмы радикально отличаются от других (например, пошаговый или целенаправленный), поэтому время планирования также может существенно различаться. Адаптивный алгоритм обычно лучше всего работает в областях со многими возможными путями выборки, таких как области манипуляции роботами.
Мета-процедураsolve(...) позволяет пользователю переключаться между доступными алгоритмами с помощью ключевого слова аргументалгоритм={} .
Описание недвижимости:
Многие (но не все) алгоритмы pddlstream имеют дискретную фазу планирования, которую можно реализовать с использованием любого алгоритма поиска в конечном пространстве состояний, такого как поиск в ширину (BFS) и поиск с равномерной стоимостью (UCS). Однако, поскольку pddlstream расширяет PDDL, этот этап планирования также может быть реализован с помощью современных классических алгоритмов планирования, которые используют факторизованную структуру языков действий, таких как PDDL, для значительного повышения эффективности эмпирического планирования. Алгоритмы эвристического поиска по принципу «лучший первый», которые автоматически выводят эвристику независимо от предметной области , являются одним из примеров класса этих алгоритмов.
pddlstream поставляется с предварительно упакованной FastDownward, обширной библиотекой, которая содержит множество алгоритмов планирования PDDL с эвристическим поиском по принципу «лучшее — сначала». Я предварительно настроил небольшое количество эффективных и общих алгоритмов поиска в SEARCH_OPTIONS, которые можно переключать с помощью аргумента ключевого слова planner=?. Я примерно расположил их в порядке от наименее ленивых (самая низкая стоимость) до самых ленивых (самое низкое время выполнения):
Время выполнения этапа дискретного планирования варьируется в зависимости от выбранного алгоритма поиска. Для многих неконкурентных задач эти алгоритмы либо решают проблему мгновенно, либо, если они недостаточно жадны, не завершают работу в течение 10 минут. Я рекомендую начать с более жадной конфигурации и при желании перейти к менее жадной.
Вместо FastDownward можно использовать любой алгоритм планирования PDDL; однако следует отметить, что некоторые из этих планировщиков реализованы только для поддержки ограниченного набора репрезентативных функций (например, отсутствие условных эффектов, отсутствие производных предикатов и т. д.), что может затруднить моделирование и, в конечном итоге, сделать планирование менее эффективным во многих реальных ситуациях. -мировые (не относящиеся к IPC) домены планирования. Хотя я настоятельно рекомендую FastDownward, некоторые планировщики PDDL, с которыми я сотрудничал в прошлом с некоторым успехом, включают:
Классические планировщики
Числовые планировщики:
Временные планировщики:
Разнообразные планировщики:
Папки «Устаревшие» указывают на код, который больше не поддерживается постоянно и, следовательно, вероятно, устарел.
Установите Drake на OS X или Ubuntu, следуя следующим инструкциям: http://drake.mit.edu/installation.html.
Альтернативно установите Drake через Docker, следуя следующим инструкциям: http://manipulation.csail.mit.edu/install_drake_docker.html. Используйте соответствующий скрипт docker_run_bash с тегом docker drake-20181128.
Примеры:
~/pddlstream$ python -m examples.drake.run
Дополнительные примеры PDDLStream + Drake можно найти по адресу: https://github.com/RobotLocomotion/6-881-examples.