diff --git a/docs/technologies/img/pddl_planners.jpg b/docs/technologies/img/pddl_planners.jpg new file mode 100644 index 0000000..66705c9 Binary files /dev/null and b/docs/technologies/img/pddl_planners.jpg differ diff --git a/docs/technologies/plansys2.md b/docs/technologies/plansys2.md index 37ff0d9..33c425d 100644 --- a/docs/technologies/plansys2.md +++ b/docs/technologies/plansys2.md @@ -1,18 +1,11 @@ --- id: plansys2 -title: 'PlanSys2' +title: 'PlanSys2 & PDDL' --- -[PlanSys2](https://github.com/IntelligentRoboticsLabs/ros2_planning_system) - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_. +[PlanSys2](https://github.com/IntelligentRoboticsLabs/ros2_planning_system) - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_. Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). PlanSys2 поддерживает PDDL версии 2.1, текущая версия PDDL - 3.1. -Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). Согласно спецификации PDDL содержит следующие базовые сущности планируемой задачи: -* __Объекты__ (Objects) -* __Свойства__ (Predicates) объектов (True/False). -* __Начальное состояние__ (Initial state) -* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой -* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира. - -PlanSys2 поддерживает PDDL версии 2.1, тогда как последняя версия PDDL - 3.1. +Видео-презентация [1](https://www.youtube.com/watch?v=SQoN79BBQno), [2](https://www.youtube.com/watch?v=58pvI8rgUvk) ## Архитектура фреймворка @@ -85,4 +78,27 @@ PlanSys2 поддерживает PDDL версии 2.1, тогда как по ## Симуляция и полевые испытания -PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment). \ No newline at end of file +PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment). + +## Planning Domain Definition Language (PDDL) + +Согласно [спецификации](https://planning.wiki/ref) PDDL содержит следующие базовые сущности планируемой задачи: +* __Объекты__ (Objects) +* __Свойства__ (Predicates) объектов (True/False) +* __Начальное состояние__ (Initial state) +* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой +* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира. + +### Основные классы алгоритмов планирования +![pddl_planners](img/pddl_planners.jpg) + +### Плагины и утилиты для работы с PDDL +* Плагины для редакторов [VSCode](https://github.com/jan-dolejsi/vscode-pddl) ![vscode-pddl](https://img.shields.io/github/stars/jan-dolejsi/vscode-pddl.svg) ([video-tutorial](https://www.youtube.com/watch?v=BFlCz49ETcA&list=PL1Q0jeuU6XppflOPFx1qQVuWbXTcjxevU)), [Sublime Text](https://github.com/Pold87/myPDDL) ![myPDDL](https://img.shields.io/github/stars/Pold87/myPDDL.svg) +* [vPlanSim](https://github.com/mastrogiorgis/vPlanSim) - графический интерфейс для визуализации и симуляции PDDL-планирования на базе Python3.7, VTK8.2, PyQt5. ![vPlanSim](https://img.shields.io/github/stars/mastrogiorgis/vPlanSim.svg) +* Парсеры PDDL - [Julia](https://github.com/JuliaPlanners/PDDL.jl), [python](https://github.com/pucrs-automated-planning/pddl-parser), [C#](https://github.com/hfoffani/pddl-lib), [Java](https://github.com/gerryai/PDDL4J), [С++](https://github.com/wisdompoet/universal-pddl-parser) +* [planutils](https://github.com/AI-Planning/planutils) - библиотека общего назначения для разработки, запуска и оценки планировщиков. ![planutils](https://img.shields.io/github/stars/AI-Planning/planutils.svg) +* [blockly-pddl](https://github.com/AI-Planning/blockly-pddl) - транслятор PDDL-файлов в язык Blockly и обратно. ![blockly-pddl](https://img.shields.io/github/stars/AI-Planning/blockly-pddl.svg) + +### PDDL-фреймворки +* [pddlstream](https://github.com/caelan/pddlstream) - фреймворк для планирования, состоящий из языка действий и набора алгоритмов для AI-планирования при наличии процедур выборки. PDDLStream расширяет PDDL, вводя потоки и декларативные спецификации процедур выборки. Алгоритмы PDDLStream не зависят от предметной области и решают проблемы PDDLStream только с описанием каждого сэмплера как черного ящика. Мотивом появления PDDLStream был Task and Motion Planning (TAMP) - [paper](https://arxiv.org/pdf/1802.08705.pdf). ![pddlstream](https://img.shields.io/github/stars/caelan/pddlstream.svg) +* [pddlgym](https://github.com/tomsilver/pddlgym) - фреймворк, который автоматически создает среду OpenAI-Gym из спецификаций PDDL - [paper](https://arxiv.org/pdf/2002.06432.pdf). ![pddlgym](https://img.shields.io/github/stars/tomsilver/pddlgym.svg) \ No newline at end of file