From 901f3916089c698de1dcdc55807ba3a38329689e Mon Sep 17 00:00:00 2001
From: Antonio Andriella <aandriella@iri.upc.edu>
Date: Thu, 4 Jan 2018 14:22:11 +0100
Subject: [PATCH] domain_skt

---
 domain_skt.pddl | 127 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 127 insertions(+)
 create mode 100644 domain_skt.pddl

diff --git a/domain_skt.pddl b/domain_skt.pddl
new file mode 100644
index 0000000..b439465
--- /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)
+		)
+	)
+)
-- 
GitLab