From 3d52141f5538acbf4cd986fcea1cc4ebfaba18c3 Mon Sep 17 00:00:00 2001 From: Antonio Andriella <aandriella@iri.upc.edu> Date: Mon, 23 Nov 2020 21:16:02 +0100 Subject: [PATCH] add head noddling --- src/robot_behaviour/robot_reproducer.py | 66 +++++++++++++++++-------- 1 file changed, 45 insertions(+), 21 deletions(-) diff --git a/src/robot_behaviour/robot_reproducer.py b/src/robot_behaviour/robot_reproducer.py index b1b8cb2..2655bf3 100644 --- a/src/robot_behaviour/robot_reproducer.py +++ b/src/robot_behaviour/robot_reproducer.py @@ -110,12 +110,16 @@ class Robot: ''' print("Congrats method") b_executed = False + if self.face != None and self.gesture != None: + self.gesture.head_noddling_yes() + if counter >len(self.sentences['congratulation'])-1: counter=random.randint(0, len(self.sentences['congratulation'])-1) - self.speech.text_to_speech(self.sentences['congratulation'][counter], locked = True) self.face.reproduce_face_expression(facial_expression) - if eyes_coords!=None: - self.face.move_eyes(eyes_coords[0], eyes_coords[1]) + if eyes_coords != None: + self.face.move_eyes(eyes_coords[0], eyes_coords[1]) + self.speech.text_to_speech(self.sentences['congratulation'][counter], locked = True) b_executed = True + return b_executed def compassion(self, counter, facial_expression, eyes_coords=None): @@ -128,6 +132,9 @@ class Robot: ''' print("Compassion funct") b_executed = False + if self.face != None and self.gesture != None: + self.gesture.head_noddling_no() + if eyes_coords != None: self.face.move_eyes(eyes_coords[0], eyes_coords[1]) self.face.reproduce_face_expression(facial_expression) @@ -153,16 +160,15 @@ class Robot: token_id, token_from, token_to = token b_executed = False if self.face!=None and self.gesture==None: + self.face.reproduce_face_expression(facial_expression) + if eyes_coords != None: + self.face.move_eyes(eyes_coords[0], eyes_coords[1]) if who == "robot": if counter >= len(self.sentences['robot_move_back'])-1: counter = random.randint(0, len(self.sentences['robot_move_back'])-1) self.speech.text_to_speech(self.sentences['robot_move_back'][counter]) else: if counter >= len(self.sentences['user_move_back'])-1: counter = random.randint(0, len(self.sentences['user_move_back'])-1) self.speech.text_to_speech(self.sentences['user_move_back'][counter]) - rospy.sleep(0.1) - self.face.reproduce_face_expression(facial_expression) - if eyes_coords != None: - self.face.move_eyes(eyes_coords[0], eyes_coords[1]) b_executed = True elif self.face==None and self.gesture!=None: if who == "robot": @@ -189,8 +195,6 @@ class Robot: else: if counter >= len(self.sentences['user_move_back'])-1: counter = random.randint(0, len(self.sentences['user_move_back'])-1) self.speech.text_to_speech(self.sentences['user_move_back'][counter]) - rospy.sleep(0.1) - #success = self.gesture.pick_and_place(token_to, token_from) #self.gesture.initial_pos() b_executed = True @@ -202,7 +206,7 @@ class Robot: def reset_facial_expression(self): self.face.reproduce_face_expression("neutral") - rospy.sleep(0.1) + rospy.sleep(0.5) def assistance(self, lev_id, row, counter, token, facial_expression, eyes_coords, tokens, delay_for_speech): if eyes_coords != None: @@ -525,8 +529,8 @@ class Robot: def cancel_action(self): if self.gesture != None: self.gesture.cancel_motion() - self.reproduce_sentence("") #self.gesture.initial_pos() + self.reproduce_sentence("") #self.speech.cancel_reproduction() @@ -565,6 +569,7 @@ def main(argv): language_id = arg + #DEMO #1 provide instructions #'instruction_descending_odd':["Hola, em dic Socrates, encantat de coneixe't. @@ -573,8 +578,9 @@ def main(argv): # Si us plau, espera les meves instruccions abans de moure una fitxa."] row = 2 - tokens = [("321", 8), ("177", 9), ("125", 7)] - token = ("321", 8, 1) + tokens = [("135", 7), ("947", 8), ("125", 9)] + token = ("947", 8, 1) + if language_id == "es_ES": @@ -585,8 +591,12 @@ def main(argv): robot = Robot(speech=speech, sentences_file="config/sentences/sentences_es_ES", action_policy_filename=policy_filename, face=face, gesture=gesture) - instruction = "Hola, mi nombre es Socrates, encantado de conocerte. Soy el ayudante de Joan, y hoy vamos a hacer un ejercicio cognitivo, basado en el SKT, para entrenar tus habilidades cognitivas. El objetivo es ordenar fichas inpares en orden descendiente, del numero mas grande al numero mas pequeño." + + + instruction = "Hola Maria Teresa, mi nombre es Socrates, encantado de conocerte. Soy el ayudante de Joan, y hoy vamos a hacer un ejercicio cognitivo,para entrenar tus habilidades cognitivas. El objetivo es ordenar fichas inpares en orden descendiente, del número mas grande al número mas pequeño." robot.reproduce_sentence(instruction, locked=True) + rospy.sleep(1.5) + robot.reproduce_sentence("Cuando te equivocas, te puedo ayudar asì:", locked=True) #When you make a mistake a can help you in this way: l0 = "Acordarte la tarea asÃ:" l1 = "Animarte, asÃ:" @@ -595,27 +605,26 @@ def main(argv): # Remebering the rule robot.reproduce_sentence(l0, locked=True) + rospy.sleep(2) robot.assistance(lev_id=1, row=row, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=tokens, delay_for_speech=1) rospy.sleep(9) #Encouraging robot.reproduce_sentence(l1, locked=True) + rospy.sleep(2) robot.assistance(lev_id=1, row=row, counter=0, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=[tokens], delay_for_speech=1) rospy.sleep(9) #assistance - robot.assistance(lev_id=2, row=row, counter=0, token=token, facial_expression="neutral", eyes_coords=(0, 0), - tokens=tokens, delay_for_speech=1) - robot.reproduce_sentence(l2, locked=True) - robot.assistance(lev_id=2, row=row, counter=1, token=token, facial_expression="neutral", eyes_coords=(0,0), + robot.assistance(lev_id=2, row=row, counter=0, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=tokens, delay_for_speech=1) - rospy.sleep(10) + rospy.sleep(11) robot.reproduce_sentence(l2, locked=True) robot.assistance(lev_id=3, row=2, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=tokens, delay_for_speech=2.5) - rospy.sleep(12) + rospy.sleep(13) robot.reproduce_sentence(l2, locked=True) robot.assistance(lev_id=4, row=2, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), @@ -636,12 +645,19 @@ def main(argv): recommendation_7 = "Cuando te equivocas más de 4 veces, yo moveré la ficha por ti." recommendation_8 = "Es muy importante que tengas clara la tarea que tienes que hacer. Puedes explicar a Joan lo que tienes que hacer?" robot.reproduce_sentence(recommendation_1, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_2, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_3, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_4, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_5, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_6, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_7, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_8, locked=True) else: @@ -668,11 +684,13 @@ def main(argv): # Remebering the rule robot.reproduce_sentence(l0, locked=True) + rospy.sleep(2) robot.assistance(lev_id=1, row=row, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=tokens, delay_for_speech=1) rospy.sleep(9) #Encouraging robot.reproduce_sentence(l1, locked=True) + rospy.sleep(2) robot.assistance(lev_id=1, row=row, counter=0, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=[tokens], delay_for_speech=1) rospy.sleep(9) @@ -688,7 +706,7 @@ def main(argv): robot.reproduce_sentence(l2, locked=True) robot.assistance(lev_id=4, row=2, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), tokens=tokens, delay_for_speech=1) - rospy.sleep(8) + rospy.sleep(11) #offer token robot.reproduce_sentence(l3, locked=True) robot.assistance(lev_id=5, row=2, counter=1, token=token, facial_expression="neutral", eyes_coords=(0, 0), @@ -705,11 +723,17 @@ def main(argv): robot.reproduce_sentence(recommendation_1, locked=True) rospy.sleep(1.5) robot.reproduce_sentence(recommendation_2, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_3, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_4, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_5, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_6, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_7, locked=True) + rospy.sleep(2) robot.reproduce_sentence(recommendation_8, locked=True) #Encouraging -- GitLab