Добавлена статья о PlanSys2
This commit is contained in:
parent
92f55de629
commit
fc280b3aab
7 changed files with 90 additions and 1 deletions
BIN
docs/technologies/img/action.png
Normal file
BIN
docs/technologies/img/action.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 52 KiB |
BIN
docs/technologies/img/action_execution_flow.png
Normal file
BIN
docs/technologies/img/action_execution_flow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 130 KiB |
BIN
docs/technologies/img/action_execution_flow_example.png
Normal file
BIN
docs/technologies/img/action_execution_flow_example.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
BIN
docs/technologies/img/behaviour_tree_from_pddl.png
Normal file
BIN
docs/technologies/img/behaviour_tree_from_pddl.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
BIN
docs/technologies/img/plansys2_architecture.png
Normal file
BIN
docs/technologies/img/plansys2_architecture.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 150 KiB |
88
docs/technologies/plansys2.md
Normal file
88
docs/technologies/plansys2.md
Normal file
|
@ -0,0 +1,88 @@
|
|||
---
|
||||
id: plansys2
|
||||
title: 'PlanSys2'
|
||||
---
|
||||
|
||||
PlanSys2 - это система планирования для ROS2 от создателей ROSPlan (система планирования для ROS1). PlanSys2 не ограничивается планированием в рамках одного устройства, а поддерживает распределение задач между _многими взаимодействующими агентами_ в реальном времени. Исполнение планов реализовано на базе _Деревьев поведения_.
|
||||
|
||||
Планы и задачи описываются на Lisp-подобном языке PDDL (Planning Domain Definition Language). Согласно спецификации PDDL содержит следующие базовые сущности планируемой задачи:
|
||||
* __Объекты__ (Objects)
|
||||
* __Свойства__ (Predicates) объектов (True/False).
|
||||
* __Начальное состояние__ (Initial state)
|
||||
* __Спецификация целей__ (Goal specification): то, что мы хотим, чтобы было правдой
|
||||
* __Действия/Операторы__ (Actions/Operators): способы изменения состояния мира.
|
||||
|
||||
PlanSys2 поддерживает PDDL версии 2.1, тогда как последняя версия PDDL - 3.1.
|
||||
|
||||
## Архитектура фреймворка
|
||||
|
||||
Архитектура PlanSys2 модульная и каждый отдельный компонент может быть заменён.
|
||||
|
||||

|
||||
|
||||
Описание компонентов
|
||||
* __Planner Node__ - основной узел. Содержит алгоритм планирования и использует разные т.н. plan solvers - POPF, TFD. При генерации планов Planner Node обращается к узлам Domain Expert и Problem Expert, содержащими описания соответствующих предметным областям в формате PDDL.
|
||||
* __Domain Expert__ считывает PDDL-файлы и размещает их во внутренней памяти. Этот компонент содержит общее описание предметной области.
|
||||
* __Problem Expert__ содержит описание проблемы(задачи), которую нужно решить, включая конкретные экземпляры классов, предикаты, функции и цели, которые валидируются Domain Expert. то есть Problem Expert содержит динамическое знание приложения. Этот узел создаёт описания задач для Planner Node в формате PDDL.
|
||||
* __Executor Node__ запрашивает у Planner Node план и, если тот существует, то выполняет его. План превращается в _Дерево поведения (Behaviour Tree)_. Для исполнения действий используется протокол аукциона, который выбирает наиболее подходящий узел, реализующий выполняемое действие.
|
||||
* __Applications__ - приложения роботов, использующие PlanSys2. Содержат узлы, реализующие действия(__Actions__), и модель PDDL, которая их реализует. Любое приложение также включает в себя узел Controller Node, который
|
||||
обращается к знаниям Problem Expert для консультаций и установления экземпляров, предикатов и целей. Этот контроллер также запрашивает Executor Node для выполнения или отмены планов.
|
||||
* __Terminal__ - среда исполнения команд для управления и мониторинга PlanSys2.
|
||||
* Визуализирует структуру сущностей PDDL и информацию Problem Expert.
|
||||
* Показывает подробности о свойствах и действиях в терминах PDDL.
|
||||
* Устанавливает и удаляет экземпляры, свойства, функции и цели.
|
||||
* Визуализирует, исполняет и отслеживает планы.
|
||||
* Проверяет статус узлов, исполняющих действия.
|
||||
|
||||
|
||||
## Пример сборки автомобиля тремя роботами
|
||||
|
||||
Сначала формируется план в PDDL-формате:
|
||||
|
||||
```
|
||||
0 (move rb1 assembly_zone body_car_zone)
|
||||
0 (move rb2 assembly_zone steerwheel_zone)
|
||||
0 (move rb3 assembly_zone wheels_zone)
|
||||
5.001 (transport rb1 bc_1 body_car_zone assembly_zone)
|
||||
5.001 (transport rb2 stwhl_1 steerwheel_zone assembly_zone)
|
||||
5.001 (transport rb3 whl_1 wheels_zone assembly_zone)
|
||||
10.002 (assemble rb1 assembly_zone whl_1 bc_1 stwhl_1 car_1)
|
||||
10.002 (move rb2 assembly_zone body_car_zone)
|
||||
10.002 (move rb3 assembly_zone steerwheel_zone)
|
||||
15.003 (move rb1 assembly_zone wheels_zone)
|
||||
15.003 (transport rb2 bc_2 body_car_zone assembly_zone)
|
||||
15.003 (transport rb3 stwhl_2 steerwheel_zone assembly_zone)
|
||||
20.004 (transport rb1 whl_2 wheels_zone assembly_zone)
|
||||
20.004 (move rb3 assembly_zone body_car_zone)
|
||||
25.005 (assemble rb2 assembly_zone whl_2 bc_2 stwhl_2 car_2)
|
||||
25.005 (move rb1 assembly_zone steerwheel_zone)
|
||||
25.005 (transport rb3 bc_3 body_car_zone assembly_zone)
|
||||
30.006 (move rb2 assembly_zone wheels_zone)
|
||||
30.006 (transport rb1 stwhl_3 steerwheel_zone assembly_zone)
|
||||
35.007 (transport rb2 whl_3 wheels_zone assembly_zone)
|
||||
40.008 (assemble rb1 assembly_zone whl_3 bc_3 stwhl_3 car_3)
|
||||
```
|
||||
Данный план преобразуется в Дерево поведения, где заданы узлы для параллельного и последовательного выполнения задач:
|
||||
|
||||

|
||||
|
||||
Структура отдельного действия:
|
||||
|
||||

|
||||
|
||||
При определении порядка исполнения плана используется т.н. _Аукцион действий (action auction)_. Когда наступает очередь для выполнения действия (например, из схемы выше), формируется новая запись _ActionPerformerClient_ в таблице _ActionMap_.
|
||||
|
||||

|
||||
|
||||
Протокол работает так:
|
||||
* Когда ActionPerformerClient запись создана, посылается сообщение-запрос с описанием действия и его параметров
|
||||
* Ноды, находящиеся в состоянии ожидания и способные выполнить этот запрос, отвечают, подтверждая или отвергая данный запрос
|
||||
* После подтверждения ноды приступают к исполнению
|
||||
* Периодически ноды отправляют сообщения с обратной связью о действиях, которые они исполняют.
|
||||
|
||||
Пример:
|
||||

|
||||
|
||||
## Симуляция и полевые испытания
|
||||
|
||||
PlanSys2 был проверен сначала в симуляции, а потом и на реальной системе, состоящей из 3-ёх роботов. Исходные коды проекта опубликованы на [Github](https://github.com/IntelligentRoboticsLabs/plansys2_cooking_experiment).
|
|
@ -29,7 +29,8 @@
|
|||
'technologies/photopolymer',
|
||||
'technologies/wood',
|
||||
'technologies/machine-learning-in-robotics',
|
||||
'technologies/gripper-tools-research'
|
||||
'technologies/gripper-tools-research',
|
||||
'technologies/plansys2'
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue