70 lines
2.1 KiB
Text
70 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
|
|||
|
; но пока что это можно прописать текстом
|
|||
|
|
|||
|
|
|||
|
; предикаты -
|
|||
|
; рука доступна - рука
|
|||
|
; сборка в зоне - сборка зона
|
|||
|
; деталь часть сборки - деталь сборка
|
|||
|
; собрана - сборка
|
|||
|
; сборочный порядок - предсборка следсборка
|
|||
|
|
|||
|
; +
|
|||
|
; деталь в зоне - деталь зона
|
|||
|
; принтер доступен - принтер
|
|||
|
|