diff --git a/domain_skt.pddl b/domain_skt.pddl new file mode 100644 index 0000000000000000000000000000000000000000..b439465f600b0d14ecd216370d80fc3a476ed19e --- /dev/null +++ b/domain_skt.pddl @@ -0,0 +1,127 @@ +(define (domain game-strips) + (:requirements :strips) + (:requirements :typing) + (:requirements :equality) + (:requirements :fluents) + (:requirements :conditional-effects) + + (:types block - object + from - location + level - engagement_level + robot patient - user + gripper hand - gripper + + ) + (:constants LEV1 - engagement_level + LEV2 - engagement_level + LEV3 - engagement_level + LEV4 - engagement_level + + + ) + (:predicates + (at ?x - object ?y - location) + (free ?x - gripper) + (carry ?x - user ?y - gripper ?z - object) + (piece ?x - object) + (loc ?x - location) + (gripper ?x - gripper) + (catch ?x - object ?y - location) + (free_loc ?x - location) + (agent ?x - user) + (userMove ?x - object ?y ?z - location) + (allowedMove ?x - object ?y ?z - location) + (suggestMove ?x - object ?y - location) + (suggestSolution ?x - object ?y - location) + (demonstrateMove ?x - object ?y - location) + (engagement ?level - engagement_level) + (demonstrationEngagement) + (checkMove) + (verbalEngagement ?level - engagement_level) + (verbalEngagement_1 ?level - engagement_level) + (verbalEngagement_2 ?level - engagement_level) + (verbalEngagement_3 ?level - engagement_level) + (verbalEngagement_4 ?level - engagement_level) + (releasedblock ?x - object ?y ?z - location) + (encourageUser) + (sendTricks) + (suggestSubset) + (suggestAnswer) + (performDemonstration) + (waitForUserMove) + (rightMove) + ) + + (:action encourage_user + :parameters( ) + :precondition(and (verbalEngagement LEV1)) + :effect(and (waitForUserMove) + ) + ) + + (:action suggest_subsets_user + :parameters( ?block - object ?from_1 ?from_2 ?from_3 - location) + :precondition(and (verbalEngagement LEV2) (not(= ?from_1 ?from_2)) (not(= ?from_1 ?from_3)) (not(= ?from_2 ?from_3)) (loc ?from_1) (loc ?from_2) (loc ?from_3) (suggestMove ?block ?from_1) (suggestMove ?block ?from_2) (suggestMove ?block ?from_3) (piece ?block)) + :effect(and (waitForUserMove) + ) + ) + + (:action suggest_solution_user + :parameters( ?block - object ?from - location) + :precondition(and (loc ?from) (verbalEngagement LEV3) (suggestAnswer) (suggestSolution ?block ?from) (piece ?block)) + :effect(and (waitForUserMove) + ) + ) + + (:action demonstrate_how_to_perform_move + :parameters( ?block - object ?from - location) + :vars(?level - engagement_level) + :precondition(and (loc ?from) (verbalEngagement LEV4) (performDemonstration) (demonstrateMove ?block ?from) (piece ?block)) + :effect(and (waitForUserMove) + ) + ) + + (:action grab + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition(and (waitForUserMove) (verbalEngagement ?level) (at ?block ?from) (userMove ?block ?from ?to) (piece ?block) (agent ?patient) (loc ?from) (loc ?to) (not(free_loc ?from)) (free_loc ?to) (not(catch ?block ?from ))) + :effect (and (not(free ?hand)) (at ?block ?from) (catch ?block ?from) (not(carry ?patient ?hand ?block)) + ) + ) + + (:action move + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition(and (not(checkMove)) (verbalEngagement ?level) (loc ?from) (loc ?to) (agent ?patient) (catch ?block ?from) (userMove ?block ?from ?to)) + :effect (and (not(checkMove)) (not(at ?block ?from)) (carry ?patient ?hand ?block) + ) + ) + + (:action move_is_correct + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition(and(piece ?block) (verbalEngagement ?level) (loc ?from) (not(checkMove)) (carry ?patient ?hand ?block) (catch ?block ?from) (verbalEngagement ?level) (userMove ?block ?from ?to) (allowedMove ?block ?from ?to) ) + :effect(and (rightMove) (not(waitForUserMove)) (checkMove) + ) + ) + + (:action move_is_not_correct + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition(and(piece ?block) (verbalEngagement ?level) (loc ?from) (loc ?to) (not(checkMove)) (carry ?patient ?hand ?block) (catch ?block ?from) (verbalEngagement ?level) (userMove ?block ?from ?to) (not(allowedMove ?block ?from ?to)) ) + :effect (and(not(rightMove)) (not(waitForUserMove)) (checkMove) + ) + ) + + (:action release_block_correct_position + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition (and (piece ?block) (checkMove) (rightMove) (verbalEngagement ?level) (allowedMove ?block ?from ?to) (userMove ?block ?from ?to) (agent ?patient) (catch ?block ?from) (loc ?from) (loc ?to) (not(free ?hand)) (gripper ?hand) (carry ?patient ?hand ?block)) + ;:effect(DEBUG) + ;:effect(and (at ?block ?to) (free ?gripper) (not(select ?block ?to)) (not(free_loc ?to)) (not(catch ?block ?from ?to)) (not(carry ?agent ?gripper ?block))) + :effect (and (rightMove) (at ?block ?from) (releasedblock ?block ?from ?to) + ) + ) + +(:action release_block_wrong_position + :parameters( ?patient - user ?hand - gripper ?block - object ?from ?to - location ?level - engagement_level) + :precondition (and (piece ?block) (not(rightMove)) (checkMove) (verbalEngagement ?level) (not(allowedMove ?block ?from ?to)) (userMove ?block ?from ?to) (agent ?patient) (catch ?block ?from) (loc ?from) (not(free ?hand)) (gripper ?hand) (carry ?patient ?hand ?block)) + :effect (and (not(rightMove)) (not(allowedMove ?block ?from ?to)) (releasedblock ?block ?from ?to) + ) + ) +)