framework/freecad_workbench/pddl/my_problem.pddl

70 lines
2.1 KiB
Text
Raw Normal View History

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