Added robossembler PDDL domain & problem example

This commit is contained in:
Igor Brylyov 2022-03-23 18:40:29 +03:00
parent 4eb6b0cd75
commit b51ea9fb08
2 changed files with 95 additions and 33 deletions

View file

@ -1,39 +1,72 @@
;; Modified domain taken from
;; "Knowledge transfer in robot manipulation tasks" by Jacob O. Huckaby 2014
(define (domain robossembler) (define (domain robossembler)
(:requirements :strips :typing :adl :fluents :durative-actions :typing) (:requirements :strips :typing :adl :fluents :durative-actions)
(:types
printer workspace - zone ; workspace for assembly operations and storage
arm ; robotic manipulator arm
; grip weld scan - tool ; manipulator tool for grip, weld, solder and other operations
part ; solid part, that cannot be disassembled
assembly ; assembly - can be dissassembled
)
;; Types ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (:predicates
(:types (arm-available ?a - arm)
robot (part-at ?p - part ?z - zone)
zone (printer-ready ?p - printer)
gap (part-of ?part - part ?whole - assembly)
part (assembly-order ?prev ?next - assembly)
gripper (assembled ?whole - assembly ?z - zone)
frame )
printer
material
);; end Types ;;;;;;;;;;;;;;;;;;;;;;;;;
;; Predicates ;;;;;;;;;;;;;;;;;;;;;;;;; (:functions)
(:predicates
(enviroment_setup ?r - robot ?g - gripper ?p - part)
);; end Predicates ;;;;;;;;;;;;;;;;;;;;
;; Functions ;;;;;;;;;;;;;;;;;;;;;;;;; (:durative-action print
(:functions :parameters (?p - part ?pr - printer)
:duration (= ?duration 10)
:condition (and
(at start (printer-ready ?pr))
)
:effect (and
(at start (not (printer-ready ?pr)))
(at end (part-at ?p ?pr))
)
)
);; end Functions ;;;;;;;;;;;;;;;;;;;; (:durative-action remove
:parameters (?p - part ?pr - printer ?z - zone ?a - arm)
:duration (= ?duration 1)
:condition (and
(at start (and
(part-at ?p ?pr)
(arm-available ?a)
))
)
:effect (and
(at start (not (arm-available ?a)))
(at end (and
(part-at ?p ?z)
(arm-available ?a)
(printer-ready ?pr)
))
)
)
;; Actions ;;;;;;;;;;;;;;;;;;;;;;;;;;;; (:durative-action assemble
(:durative-action assemble-1 :parameters (?p - part ?prev ?next - assembly ?w - workspace ?arm - arm)
:parameters (?r - robot ?g - gripper ?p - part) :duration (= ?duration 5)
:duration ( = ?duration 1) :condition (and
:effect (and(at start (enviroment_setup ?r ?g ?p))) (at start (assembled ?prev ?w))
) (at start (part-at ?p ?w))
(at start (part-of ?p ?next))
;(:durative-action move_gripper (at start (arm-available ?arm))
; :parameters (?r - robot ?g - gap) (at start (assembly-order ?prev ?next))
; :duration ( = ?duration 1) )
; :effect (at end(gripper_move ?r ?g)) :effect (and
;) (at start (not (arm-available ?arm)))
(at end (not (part-at ?p ?w)))
);; end Domain ;;;;;;;;;;;;;;;;;;;;;;;; (at end (arm-available ?arm))
(at end (assembled ?next ?w))
)
)
)

View file

@ -0,0 +1,29 @@
(define (problem p1)
(:domain robossembler)
(:objects
; information from Scene
rasmt - arm
printer1 printer2 - printer
workspace1 - workspace
; information from CAD
part1 part2 - part
subasm0 subasm1 subasm2 - assembly
)
(:init
; information from Scene
(printer-ready printer1)
(printer-ready printer2)
(arm-available rasmt)
; information from CAD
(assembled subasm0 workspace1)
(part-of part1 subasm1)
(part-of part2 subasm2)
(assembly-order subasm0 subasm1)
(assembly-order subasm1 subasm2)
)
(:goal (and
; information from CAD
(assembled subasm2 workspace1)
)
)
)