69 lines
2.1 KiB
Text
69 lines
2.1 KiB
Text
(define (problem my_problem)
|
||
(:domain roboarm)
|
||
(:objects
|
||
ur_manipulator_gripper - arm
|
||
printer - printer
|
||
world - zone
|
||
box1 box2 box3 box4 box5 box6 - part
|
||
asm0 asm1 asm2 asm3 asm4 asm5 asm6 - assembly
|
||
)
|
||
|
||
(:init
|
||
not(part_at box1 world)
|
||
not(part_at box2 world)
|
||
not(part_at box3 world)
|
||
not(part_at box4 world)
|
||
not(part_at box5 world)
|
||
not(part_at box6 world)
|
||
(part_of box1 asm1)
|
||
(part_of box2 asm2)
|
||
(part_of box3 asm3)
|
||
(part_of box4 asm4)
|
||
(part_of box5 asm5)
|
||
(part_of box6 asm6)
|
||
(assembly_order asm0 asm1)
|
||
(assembly_order asm1 asm2)
|
||
(assembly_order asm2 asm3)
|
||
(assembly_order asm3 asm4)
|
||
(assembly_order asm4 asm5)
|
||
(assembly_order asm5 asm6)
|
||
|
||
(printer_available printer)
|
||
(arm_available ur_manipulator_gripper)
|
||
(assembly_at asm0 world)
|
||
(assembled asm0)
|
||
)
|
||
|
||
(:goal (and
|
||
(assembled asm6)
|
||
))
|
||
)
|
||
|
||
; нужно указать желаемое конечное состояние
|
||
; (эффект в конце действия)
|
||
; в нашем случае, допустим, будет asm6
|
||
; чтобы включить принтер в процесс, у нас должны спавниться детали
|
||
|
||
; будет что-то типа (not part_at box1 workzone)
|
||
|
||
; и action print
|
||
; начальные условия: not part_at box workzone
|
||
; принтер доступен
|
||
; в ходе дела парт печатается, принтер не доступен
|
||
; в конце - принтер доступен, деталь в зоне
|
||
|
||
; нужно в генераторе добавить поддержку условий at start и at end
|
||
; но пока что это можно прописать текстом
|
||
|
||
|
||
; предикаты -
|
||
; рука доступна - рука
|
||
; сборка в зоне - сборка зона
|
||
; деталь часть сборки - деталь сборка
|
||
; собрана - сборка
|
||
; сборочный порядок - предсборка следсборка
|
||
|
||
; +
|
||
; деталь в зоне - деталь зона
|
||
; принтер доступен - принтер
|
||
|