robossembler.org/docs/pddl/assembly_domain_hackaby.pddl

114 lines
2.9 KiB
Text
Raw Permalink Normal View History

;; Modified domain taken from
;; "Knowledge transfer in robot manipulation tasks" by Jacob O. Huckaby 2014
(define (domain assembly_domain_hackaby)
(:requirements :strips :typing :adl :fluents)
(:types
arm ; robotic manipulator arm
workspace ; workspace for assembly operations and storage
grip weld scan - tool ; manipulator tool for grip, weld, solder and other operations
part ; solid part, that cannot be disassembled
assembly ; assembly - can dissassembled
)
(:predicates
(arm-canreach ?a - arm ?s - workspace)
(arm-at ?a - arm ?s - workspace)
(arm-capabilities ?a - arm ?t - tool)
(arm-active ?a - arm ?t - tool)
(arm-holding ?a - arm ?p - part)
(part-at ?p - part ?s - workspace)
(part-state ?p - part ?t - tool)
(pose-detected ?a - arm ?p - part ?s - workspace)
)
(:action activate
:parameters (?a - arm ?old - tool ?new - tool)
:precondition (and
(arm-capabilities ?a ?new)
(arm-active ?a ?old))
:effect (and
(arm-active ?a ?new)
(not (arm-active ?a ?old))) )
(:action detect-pose-part
:parameters (?a - arm ?p - part ?s - workspace ?t - scan)
:precondition (and
(arm-at ?a ?s)
(arm-active ?a ?t)
(part-at ?p ?s))
:effect (pose-detected ?a ?p ?s)
)
(:action detect-pose-workspace
:parameters (?a - arm ?p - part ?s - workspace)
:precondition (and
(arm-at ?a ?s)
(arm-active ?a detect)
(arm-holding ?a ?p))
:effect (pose-detected ?a ?p ?s)
)
(:action grasp
:parameters (?a - arm ?p - part ?s - workspace)
:precondition (and
(arm-at ?a ?s)
(arm-active ?a grip)
(arm-holding ?a no-part)
(part-at ?p ?s)
(pose-detected ?a ?p ?s))
:effect (and
(arm-holding ?a ?p)
(not (arm-holding ?a no-part))
(not (part-at ?p ?s))
(not (pose-detected ?a ?p ?s)))
)
(:action ungrasp
:parameters (?a - arm ?p - part ?s - workspace)
:precondition (and
(arm-at ?a ?s)
(arm-active ?a grip)
(arm-holding ?a ?p)
(pose-detected ?a ?p ?s))
:effect (and
(arm-holding ?a no-part)
(not (arm-holding ?a ?p))
(part-at ?p ?s)
(not (pose-detected ?a ?p ?s)))
)
(:action move
:parameters (?a - arm ?from - workspace ?to - workspace)
:precondition (and
(arm-at ?a ?from)
(arm-canreach ?a ?to)
(arm-holding ?a no-part))
:effect (and
(arm-at ?a ?to)
(not (arm-at ?a ?from)))
)
(:action carry
:parameters (?a - arm ?p - part ?from - workspace ?to - workspace)
:precondition (and
(arm-at ?a ?from)
(arm-canreach ?a ?to)
(arm-holding ?a ?p))
:effect (and
(arm-at ?a ?to)
(not (arm-at ?a ?from)))
)
(:action employ
:parameters (?a - arm ?t - tool ?p - part ?s - workspace)
:precondition (and
(arm-at ?a ?s)
(arm-active ?a ?t)
(arm-holding ?a no-part)
(part-at ?p ?s)
(pose-detected ?a ?p ?s))
:effect (and
(part-state ?p ?t)
(not (pose-detected ?a ?p ?s)))
)
)