diff --git a/src/robot_behaviour/robot_reproducer.py b/src/robot_behaviour/robot_reproducer.py index 0cf6ea5ffd57e91f0b22b02d7b468d659c426317..9c9558ddb3ddd0f7c59848d89dec82538c5eccf1 100644 --- a/src/robot_behaviour/robot_reproducer.py +++ b/src/robot_behaviour/robot_reproducer.py @@ -199,6 +199,9 @@ class Robot: LEVELS OF ASSISTANCE FURNISHED BY THE ROBOT ''' + def reset_facial_expression(self): + self.face.reproduce_face_expression("neutral") + rospy.sleep(0.1) def assistance(self, lev_id, row, counter, token, facial_expression, eyes_coords, tokens, delay_for_speech): if eyes_coords != None: @@ -281,6 +284,7 @@ class Robot: b_executed = True else: self.face.reproduce_face_expression(facial_expression) + rospy.sleep(0.1) # TODO: test on the robot and see if the voice can be sinc with the movement otherwise include speech and text in the gesture method self.gesture.suggest_row(row) rospy.sleep(delay_for_speech) @@ -382,18 +386,15 @@ class Robot: rospy.sleep(delay_for_speech) self.face.reproduce_face_expression(facial_expression) self.speech.text_to_speech(self.sentences['lev_5'][1]) - self.speech.text_to_speech(self.sentences['lev_5'][2]) b_executed = True elif self.face == None and self.gesture != None: - # TODO: test on the robot and see if the voice can be sinc with the movement otherwise include speech and text in the gesture method self.speech.text_to_speech(self.sentences['lev_5'][0]) - self.gesture.offer_token(token_sol_from, self.reproduce_sentence, self.sentences['lev_5'][1], self.sentences['lev_5'][2]) + self.gesture.offer_token(token_sol_from, self.reproduce_sentence, self.sentences['lev_5'][1]) b_executed = True else: - # TODO: test on the robot and see if the voice can be sinc with the movement otherwise include speech and text in the gesture method self.speech.text_to_speech(self.sentences['lev_5'][0]) self.face.reproduce_face_expression(facial_expression) - self.gesture.offer_token(token_sol_from, self.reproduce_sentence, self.sentences['lev_5'][1], self.sentences['lev_5'][2]) + self.gesture.offer_token(token_sol_from, self.reproduce_sentence, self.sentences['lev_5'][1]) self.gesture.initial_pos() b_executed = True return b_executed @@ -520,9 +521,11 @@ class Robot: def cancel_action(self): if self.gesture != None: self.gesture.cancel_motion() + self.reproduce_sentence("") #self.gesture.initial_pos() #self.speech.cancel_reproduction() + def reproduce_sentence(self, text): self.speech.text_to_speech(text) @@ -535,7 +538,7 @@ class Robot: # # def fake_function(self, reproduce_sentence, text): # i=0 - # while(i<1000): + # while(i<1): # if i%10==0: # reproduce_sentence(text) # else: @@ -545,9 +548,9 @@ class Robot: def main(): speech = Speech("es_ES") - gesture = None#Gesture() + gesture = Gesture() face = Face() - policy_filename = "/home/pal/Documents/Framework/GenerativeMutualShapingRL/results/1/True/1/policy.pkl" + policy_filename = "/home/pal/carf_ws/src/carf/robot-patient-interaction/1/True/1/policy.pkl" robot = Robot(speech=speech, sentences_file="config/sentences/sentences_es_ES", action_policy_filename=policy_filename, face=face, gesture=gesture) counter = 0 @@ -555,10 +558,10 @@ def main(): token_to = "" who = "robot" row = 4 - tokens = [("111",8), ("256", 9), ("341", 10)] - token = ("111", 20, 5) + tokens = [("111",15), ("256", 17), ("341", 17)] + token = ("111", 9, 5) positive = False - lev_id = 3 + lev_id = 4 delay = 2.0 eye_coords = (0,0) #robot.fake_function(robot.play_sentence) @@ -575,21 +578,25 @@ def main(): # #take in input 5 params #robot.action["move_back"].__call__(who, token) #rospy.sleep(3.0) - for lev in range(4): - for c in range(3): - robot.assistance(lev_id=lev+1, row=2, counter=c, token=token, facial_expression="neutral", eyes_coords=eye_coords, tokens=tokens, delay_for_speech=1) - rospy.sleep(2.0) + # robot.assistance(lev_id=2, row=4, counter=1, token=token, facial_expression="neutral", eyes_coords=eye_coords, + # tokens=tokens, delay_for_speech=2) + + # for lev in range(4): + # for c in range(3): + # robot.assistance(lev_id=lev+1, row=2, counter=c, token=token, facial_expression="neutral", eyes_coords=eye_coords, tokens=tokens, delay_for_speech=1) + # rospy.sleep(2.0) #robot.move_onbehalf(token, counter, face) #robot.move_token_back(who="robot", token=token, counter=counter, facial_expression=face) - #robot.action["assistance"].__call__(lev_id, row, counter, token, face, eye_coords, tokens, delay) + for t in range(11,20): + robot.action["assistance"].__call__(lev_id, row, counter, ("111", t, 5), "neutral", eye_coords, tokens, delay) + rospy.sleep(10) #robot.action["lev_2"].__call__(row, counter) - #robot.action["lev_3"].__call__(counter, token, *tokens) #robot.action["lev_4"].__call__(counter, token) #robot.action["lev_5"].__call__(token) #robot.action["instruction"].__call__() #robot.action["max_attempt"].__call__(token) #robot.action["timeout"].__call__() - robot.action["pick"].__call__(positive=False, counter=2, facial_expression="confused", eyes_coords=None) + #robot.action["pick"].__call__(positive=False, counter=2, facial_expression="confused", eyes_coords=None) if __name__=="__main__": main() \ No newline at end of file