def __init__(self):
     smach.StateMachine.__init__(self, outcomes=['succeeded', 'aborted', 'preempted'],
                              input_keys=['object_name'], 
                              output_keys=['standard_error','object_position','object_detected_name'])
     
     with self:
         self.userdata.standard_error = ''
         smach.StateMachine.add(
                                'Look_down',
                                move_head_form(head_left_right="center", head_up_down="down"),
                                transitions={'succeeded': 'detect_object', 
                                             'aborted': 'aborted', 
                                             'preempted': 'preempted'})
         smach.StateMachine.add(
                 'detect_object',
                 object_detect_sm(),
                 transitions={'succeeded': 'process_object', 'aborted': 'aborted', 
                 'preempted': 'preempted'})
         
         smach.StateMachine.add(
                 'process_object',
                 process_object(),
                 transitions={'succeeded': 'Look_normal', 'aborted': 'aborted', 
                 'preempted': 'preempted'})
         
         smach.StateMachine.add(
                'Look_normal',
                move_head_form(head_left_right="center", head_up_down="normal"),
                transitions={'succeeded': 'succeeded', 
                             'aborted': 'aborted', 
                             'preempted': 'preempted'})
    def __init__(self):
        smach.StateMachine.__init__(self, outcomes=['succeeded','aborted', 'preempted'], 
            input_keys=[], 
            output_keys=[])

        with self:

            smach.StateMachine.add('Wait_search_1', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Say_search', 'preempted':'preempted'})
            
            smach.StateMachine.add('Say_search', 
                                   text_to_say('I am looking for the referee',wait=False), 
                                   transitions={'succeeded':'Move_head_Left', 'aborted':'aborted'})
            
            smach.StateMachine.add('Move_head_Left',
                                   move_head_form( head_left_right='mid_left', head_up_down='up'),
                                   transitions={'succeeded':'Wait_search_2', 'aborted':'aborted'})
            
            smach.StateMachine.add('Wait_search_2', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Move_head_Right', 'preempted':'preempted'})
            
            smach.StateMachine.add('Move_head_Right',
                                   move_head_form( head_left_right='mid_right', head_up_down='up'),
                                   transitions={'succeeded':'Wait_search_3', 'aborted':'aborted'})
            
            smach.StateMachine.add('Wait_search_3', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Move_head_Middle', 'preempted':'preempted'})
            
            smach.StateMachine.add('Move_head_Middle',
                                   move_head_form( head_left_right='center', head_up_down='up'),
                                   transitions={'succeeded':'Wait_search_1', 'aborted':'Wait_search_1'})
Esempio n. 3
0
    def __init__(self):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'aborted', 'preempted'],
            input_keys=[],
            output_keys=[])

        with self:

            smach.StateMachine.add('Wait_search_1',
                                   Wait_search(),
                                   transitions={
                                       'succeeded': 'Say_search',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('Say_search',
                                   text_to_say('I am looking for the referee'),
                                   transitions={
                                       'succeeded': 'Move_head_Left',
                                       'aborted': 'aborted'
                                   })

            smach.StateMachine.add('Move_head_Left',
                                   move_head_form(head_left_right='mid_left',
                                                  head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'Wait_search_2',
                                       'aborted': 'aborted'
                                   })

            smach.StateMachine.add('Wait_search_2',
                                   Wait_search(),
                                   transitions={
                                       'succeeded': 'Move_head_Right',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('Move_head_Right',
                                   move_head_form(head_left_right='mid_right',
                                                  head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'Wait_search_3',
                                       'aborted': 'aborted'
                                   })

            smach.StateMachine.add('Wait_search_3',
                                   Wait_search(),
                                   transitions={
                                       'succeeded': 'Move_head_Middle',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('Move_head_Middle',
                                   move_head_form(head_left_right='center',
                                                  head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'aborted'
                                   })
    def __init__(self):
        smach.StateMachine.__init__(self, 
                                    outcomes=['succeeded', 'preempted', 'aborted'],
                                    input_keys=[],
                                    output_keys=['emergency_poi_name', 'wave_position', 'wave_yaw_degree'])


        with self:           
            self.userdata.emergency_location = []
            self.userdata.tts_lang = 'en_US'
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.possible_pois = []
            self.userdata.n_item = 0
                        
            smach.StateMachine.add(
                'Prepare_Data',
                Prepare_Data(),
                transitions={'succeeded': 'Search_Emergency'})
                
            smach.StateMachine.add(
                'Search_Emergency',
                Select_Possible_Poi(),
                transitions={'succeeded':'Say_Go_to_Room','finished_searching':'aborted'})
            
            smach.StateMachine.add(
                'Say_Go_to_Room',
                text_to_say("Now I am going to the next room"),
                transitions={'succeeded':'Navigate_to_Room','aborted':'aborted'})
            
            smach.StateMachine.add(
                'Navigate_to_Room',
                nav_to_poi(),
                remapping={'nav_to_poi_name':'nav_to_poi_name_possible'},
                transitions={'succeeded': 'Search_Wave', 'aborted': 'Navigate_to_Room', 'preempted': 'preempted'})
            
            smach.StateMachine.add(
                'Search_Wave',
                Search_Wave_SM(head_position='down',text_for_wave_searching='Where are you? I am trying to find and help you.'),
                transitions={'succeeded':'Normal_head_Out', 'preempted':'preempted', 
                             'aborted':'aborted', 
                             'end_searching':'Normal_head'})
            
            smach.StateMachine.add(
                                   'Normal_head_Out',
                                   move_head_form(head_left_right='center', head_up_down='normal'),
                                   transitions={'succeeded':'Prepare_Output_Search', 'preempted':'Prepare_Output_Search', 
                                                'aborted':'Prepare_Output_Search'})
            smach.StateMachine.add(
                                   'Normal_head',
                                   move_head_form(head_left_right='center', head_up_down='normal'),
                                   transitions={'succeeded':'Search_Emergency', 'preempted':'Search_Emergency', 
                                                'aborted':'Search_Emergency'})
            
            smach.StateMachine.add(
                'Prepare_Output_Search',
                Prepare_output_search(),
                transitions={'succeeded':'succeeded', 
                             'aborted':'aborted'})
    def __init__(self):
        smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error','in_learn_person'])

        with self:
            self.userdata.tts_wait_before_speaking=0
            self.userdata.tts_text=None
            self.userdata.tts_lang=None
            self.userdata.standard_error='OK'
            self.userdata.in_learn_person=1
            self.userdata.type_movment = 'home'
            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'INTRO','aborted':'INTRO'})
            smach.StateMachine.add('INTRO',
                                   acknowledgment(type_movement='home', tts_text=START_FRASE),
                                   transitions={'succeeded': 'Learn','aborted':'aborted'})

            # it learns the person that we have to follow
            smach.StateMachine.add('Learn',
                                   LearnPerson(learn_face=True),
                                   transitions={'succeeded': 'SM_STOP_LEARNING',
                                                'aborted': 'aborted'})

            smach.StateMachine.add('SM_STOP_LEARNING',
                                   text_to_say(LETS_GO),
                                   transitions={'succeeded': 'succeeded','aborted':'aborted'})
 def __init__(self):
     smach.StateMachine.__init__(self, outcomes=['succeeded','aborted', 'preempted'], 
         input_keys=[], 
         output_keys=[])
     
     with self:
         self.userdata.loop_iterations = 0
         self.userdata.wave_position = None
         self.userdata.wave_yaw_degree = None
         self.userdata.standard_error = ''
         
         # Concurrence
         sm_conc2 = smach.Concurrence(outcomes=['succeeded', 'aborted', 'preempted'],
                                     default_outcome='succeeded',
                                     input_keys=['tts_text', 'head_left_right', 'head_up_down'],
                                     output_keys=[])
         
         with sm_conc2:
             # Search for face
             smach.Concurrence.add('move_head_conc', move_head_form(None, None))
             
             smach.Concurrence.add('say_conc', random_speech_say())
         
         
         smach.StateMachine.add('Concurrence', sm_conc2, 
                             transitions={'succeeded':'succeeded', 
                                          'aborted':'aborted', 
                                          'preempted':'aborted'})
         smach.StateMachine.add('Wait_state',
                                Wait_search(),
                                transitions={'succeeded':'Prepare_head'})
         smach.StateMachine.add('Prepare_head',
                                prepare_move_head('normal'),
                                transitions={'succeeded':'Concurrence'})
Esempio n. 7
0
    def __init__(self):
        smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error','in_learn_person'])

        with self:
            self.userdata.tts_wait_before_speaking=0
            self.userdata.tts_text=None
            self.userdata.tts_lang=None
            self.userdata.standard_error='OK'
            self.userdata.in_learn_person=1
            self.userdata.type_movment = 'home'
            

            smach.StateMachine.add('INTRO',
                                   acknowledgment(type_movement='home', tts_text=START_FRASE),
                                   transitions={'succeeded': 'DEFAULT_POSITION','aborted':'DEFAULT_POSITION'})
            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'Learn','aborted':'Learn'})

            # it learns the person that we have to follow
            smach.StateMachine.add('Learn',
                                   LearnPerson(learn_face=True),
                                   transitions={'succeeded': 'SM_STOP_LEARNING',
                                                'aborted': 'aborted'})

            smach.StateMachine.add('SM_STOP_LEARNING',
                                   text_to_say(LETS_GO),
                                   transitions={'succeeded': 'succeeded','aborted':'aborted'})
Esempio n. 8
0
 def __init__(self, head_position=None):
     smach.StateMachine.__init__(self, outcomes=['succeeded', 'preempted', 'aborted', 'end_searching'],
                              input_keys=[],
                              output_keys=['wave_position', 'wave_yaw_degree','standard_error'])
     with self:
         self.userdata.loop_iterations = 0
         self.userdata.wave_position = None
         self.userdata.wave_yaw_degree = None
         smach.StateMachine.add(
                                'Move_head_prepare',
                                prepare_move_head(),
                                 transitions={'succeeded': 'move_head', 'aborted': 'aborted', 
                                             'preempted': 'preempted', 'end_searching':'end_searching'})
         smach.StateMachine.add(
                                'move_head',
                                move_head_form(head_up_down='normal'),
                                transitions={'succeeded': 'Say_Searching',
                                             'preempted':'Say_Searching',
                                             'aborted':'aborted'})
         smach.StateMachine.add(
             'Say_Searching',
             text_to_say("I am searching, let's see"),
             transitions={'succeeded':'wave_recognition', 'aborted':'wave_recognition', 'preempted':'wave_recognition'})
        
         smach.StateMachine.add(
             'wave_recognition',
             WaveDetection(),
             transitions={'succeeded': 'succeeded', 'aborted': 'Move_head_prepare', 
             'preempted': 'preempted'}) 
Esempio n. 9
0
    def __init__(self):
        smach.StateMachine.__init__(
            self, ['succeeded', 'preempted', 'aborted'],
            output_keys=['standard_error', 'in_learn_person'])

        with self:
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.tts_text = None
            self.userdata.tts_lang = None
            self.userdata.head_left_right = None
            self.userdata.head_up_down = None
            self.userdata.standard_error = 'OK'
            self.userdata.in_learn_person = 1

            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'INTRO',
                                       'aborted': 'INTRO'
                                   })

            smach.StateMachine.add('INTRO',
                                   text_to_say(START_FRASE),
                                   transitions={
                                       'succeeded':
                                       'START_FOLLOWING_COME_CLOSER',
                                       'aborted': 'START_FOLLOWING_COME_CLOSER'
                                   })

            smach.StateMachine.add('Listen',
                                   ListenWordSM_Concurrent("follow me"),
                                   transitions={
                                       'succeeded':
                                       'START_FOLLOWING_COME_CLOSER',
                                       'aborted': 'Listen'
                                   })

            smach.StateMachine.add('START_FOLLOWING_COME_CLOSER',
                                   text_to_say(START_FOLLOW_FRASE),
                                   transitions={
                                       'succeeded': 'SM_LEARN_PERSON',
                                       'aborted': 'aborted'
                                   })

            # it learns the person that we have to follow
            smach.StateMachine.add('SM_LEARN_PERSON',
                                   LearnPerson(learn_face=True),
                                   transitions={
                                       'succeeded': 'SM_STOP_LEARNING',
                                       'aborted': 'aborted'
                                   })

            smach.StateMachine.add('SM_STOP_LEARNING',
                                   text_to_say(LEARNED_PERSON_FRASE),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'aborted'
                                   })
    def __init__(self):
        smach.StateMachine.__init__(self, outcomes=['succeeded','aborted', 'preempted'], 
            input_keys=[], 
            output_keys=[])

        with self:
            
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.tts_text = ''
            self.userdata.tts_lang = 'en_US'

            smach.StateMachine.add('Wait_search_1', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Say_search', 'preempted':'preempted'})
            
            smach.StateMachine.add('Say_search', 
                                   text_to_say('I am looking for the person'), 
                                   transitions={'succeeded':'Move_head_Left', 'aborted':'aborted'})
            
            smach.StateMachine.add('Move_head_Left',
                                   move_head_form( head_left_right='mid_left', head_up_down='normal'),
                                   transitions={'succeeded':'Wait_search_2', 'aborted':'aborted'})
            
            smach.StateMachine.add('Wait_search_2', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Move_head_Right', 'preempted':'preempted'})
            
            smach.StateMachine.add('Move_head_Right',
                                   move_head_form( head_left_right='mid_right', head_up_down='normal'),
                                   transitions={'succeeded':'Wait_search_3', 'aborted':'aborted'})
            
            smach.StateMachine.add('Wait_search_3', 
                                   Wait_search(), 
                                   transitions={'succeeded':'Move_head_Middle', 'preempted':'preempted'})
            
            smach.StateMachine.add('Move_head_Middle',
                                   move_head_form( head_left_right='center', head_up_down='normal'),
                                   transitions={'succeeded':'succeeded', 'aborted':'aborted'})
    def __init__(self,feedback=True):
        smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error','in_learn_person'])
        self.feedback = feedback
        self.follow_pub = rospy.Publisher('/follow_me/id', Int32, latch=True)  
        with self:
            self.userdata.tts_wait_before_speaking=0
            self.userdata.tts_text=None
            self.userdata.tts_lang=None
            self.userdata.standard_error='OK'
            


            smach.StateMachine.add('INIT_VAR',
                                   init_var(),
                                   transitions={'succeeded': 'DEFAULT_POSITION',
                                                'aborted': 'DEFAULT_POSITION'})
            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'WAIT_TIME','aborted':'WAIT_TIME'})
            
            smach.StateMachine.add('WAIT_TIME',
                       wait_time(),
                       transitions={'succeeded': 'READ_TRACKER_TOPIC',
                                    'aborted': 'READ_TRACKER_TOPIC'})

#TODO:: aborted->CONTROL_TIME
            smach.StateMachine.add('READ_TRACKER_TOPIC',
                                   topic_reader(topic_name='/pipol_tracker_node/peopleSet',
                                                topic_type=personArray,topic_time_out=60),
                                   transitions={'succeeded':'SELECT_ID',
                                                'aborted':'aborted',
                                                'preempted':'preempted'},
                                   remapping={'topic_output_msg': 'tracking_msg'})
           
            
            # it learns the person that we have to follow
            smach.StateMachine.add('SELECT_ID',
                                   select_ID(self.follow_pub),
                                   transitions={'succeeded': 'NEW_PERSON',
                                                'aborted': 'WAIT_TIME'})
            
            smach.StateMachine.add('NEW_PERSON',
                       say_with_enable(text=NEW_PERSON,enable=self.feedback),
                       transitions={'succeeded': 'succeeded','preempted':'succeeded', 'aborted':'succeeded'})
Esempio n. 12
0
 def __init__(self, head_position=None, text_for_wave_searching="I am looking for you."):
     smach.StateMachine.__init__(self, outcomes=['succeeded', 'preempted', 'aborted'],
                              input_keys=[],
                              output_keys=['wave_position', 'wave_yaw_degree','standard_error'])
     with self:
         self.userdata.loop_iterations = 0
         self.userdata.wave_position = None
         self.userdata.wave_yaw_degree = None
         self.userdata.standard_error = ''
         
         smach.StateMachine('Dummy',
                            DummyStateMachine(),
                            transitions={'succeeded':'Say_follow'})
         smach.StateMachine('Say_follow',
                            text_to_say('Follow Me Please, I will guide you to the person'),
                            transitions={'succeeded':'succeeded', 'aborted':'aborted'})
         
         smach.StateMachine.add(
                                'Move_head_prepare',
                                prepare_move_head(head_position),
                                transitions={'succeeded': 'move_head', 'aborted': 'aborted', 
                                             'preempted': 'preempted'})
         smach.StateMachine.add(
                                'move_head',
                                move_head_form(head_up_down=head_position),
                                transitions={'succeeded': 'Say_Searching',
                                             'preempted':'Say_Searching',
                                             'aborted':'aborted'})
         smach.StateMachine.add(
             'Say_Searching',
             text_to_say("text_for_wave_searching"),
             transitions={'succeeded':'face_detection', 'aborted':'face_detection', 'preempted':'face_detection'})
        
         #Hard-coded maximum time in order to detect wave 
         smach.StateMachine.add(
             'face_detection',
             detect_face(),
             transitions={'succeeded': 'Say_Found', 'aborted': 'aborted', #TODO before it was Move_head_prepare
             'preempted': 'preempted'}) 
         
         smach.StateMachine.add(
             'Say_Found',
             text_to_say("Oh! I have found you finally."),
             transitions={'succeeded':'succeeded', 'aborted':'aborted', 'preempted':'preempted'})
def main():
    rospy.loginfo('Move_joint_pose_training INIT')

    sm = smach.StateMachine(outcomes=['succeeded', 'preempted', 'aborted'])
    with sm:
        #sm.userdata.move_head_pose = [-1, 0.1]
        #sm.userdata.move_head_pose = [-0.5, 0.1] Mid Right
        #sm.userdata.move_head_pose = [0.5, 0.1] Mid Left
        #sm.userdata.move_head_pose = [1, 0.1] Total Left
        #sm.userdata.move_head_pose = [0.1, 1] Head Down 
        #sm.userdata.move_head_pose = [0.0, 0.1] Head Normal front
        smach.StateMachine.add(
            'move_head',
            move_head_form('mid_right', 'normal'),
            transitions={'succeeded': 'succeeded','preempted':'preempted', 'aborted':'aborted'})
        

    sm.execute()
    rospy.spin()
Esempio n. 14
0
def main():
    rospy.loginfo('Move_joint_pose_training INIT')

    sm = smach.StateMachine(outcomes=['succeeded', 'preempted', 'aborted'])
    with sm:
        #sm.userdata.move_head_pose = [-1, 0.1]
        #sm.userdata.move_head_pose = [-0.5, 0.1] Mid Right
        #sm.userdata.move_head_pose = [0.5, 0.1] Mid Left
        #sm.userdata.move_head_pose = [1, 0.1] Total Left
        #sm.userdata.move_head_pose = [0.1, 1] Head Down
        #sm.userdata.move_head_pose = [0.0, 0.1] Head Normal front
        smach.StateMachine.add('move_head',
                               move_head_form('mid_right', 'normal'),
                               transitions={
                                   'succeeded': 'succeeded',
                                   'preempted': 'preempted',
                                   'aborted': 'aborted'
                               })

    sm.execute()
    rospy.spin()
Esempio n. 15
0
    def __init__(self, head_position=None):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted', 'end_searching'],
            input_keys=[],
            output_keys=['wave_position', 'wave_yaw_degree', 'standard_error'])
        with self:
            self.userdata.loop_iterations = 0
            self.userdata.wave_position = None
            self.userdata.wave_yaw_degree = None
            smach.StateMachine.add('Move_head_prepare',
                                   prepare_move_head(),
                                   transitions={
                                       'succeeded': 'move_head',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted',
                                       'end_searching': 'end_searching'
                                   })
            smach.StateMachine.add('move_head',
                                   move_head_form(head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'Say_Searching',
                                       'preempted': 'Say_Searching',
                                       'aborted': 'aborted'
                                   })
            smach.StateMachine.add('Say_Searching',
                                   text_to_say("I am searching, let's see"),
                                   transitions={
                                       'succeeded': 'wave_recognition',
                                       'aborted': 'wave_recognition',
                                       'preempted': 'wave_recognition'
                                   })

            smach.StateMachine.add('wave_recognition',
                                   WaveDetection(),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'Move_head_prepare',
                                       'preempted': 'preempted'
                                   })
Esempio n. 16
0
    def __init__(self):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'aborted', 'preempted'],
            input_keys=[],
            output_keys=[])

        with self:
            self.userdata.loop_iterations = 0
            self.userdata.wave_position = None
            self.userdata.wave_yaw_degree = None
            self.userdata.standard_error = ''

            # Concurrence
            sm_conc2 = smach.Concurrence(
                outcomes=['succeeded', 'aborted', 'preempted'],
                default_outcome='succeeded',
                input_keys=['tts_text', 'head_left_right', 'head_up_down'],
                output_keys=[])

            with sm_conc2:
                # Search for face
                smach.Concurrence.add('move_head_conc',
                                      move_head_form(None, None))

                smach.Concurrence.add('say_conc', random_speech_say())

            smach.StateMachine.add('Concurrence',
                                   sm_conc2,
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'aborted',
                                       'preempted': 'aborted'
                                   })
            smach.StateMachine.add('Wait_state',
                                   Wait_search(),
                                   transitions={'succeeded': 'Prepare_head'})
            smach.StateMachine.add('Prepare_head',
                                   prepare_move_head('normal'),
                                   transitions={'succeeded': 'Concurrence'})
Esempio n. 17
0
    def __init__(self):
        smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error','in_learn_person'])

        with self:
            self.userdata.tts_wait_before_speaking=0
            self.userdata.tts_text=None
            self.userdata.tts_lang=None
            self.userdata.head_left_right=None
            self.userdata.head_up_down=None
            self.userdata.standard_error='OK'
            self.userdata.in_learn_person=1

            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'INTRO','aborted':'INTRO'})

            smach.StateMachine.add('INTRO',
                                   text_to_say(START_FRASE),
                                   transitions={'succeeded': 'START_FOLLOWING_COME_CLOSER','aborted':'START_FOLLOWING_COME_CLOSER'})
            
            smach.StateMachine.add('Listen',
                                   ListenWordSM_Concurrent("follow me"),
                                   transitions={'succeeded': 'START_FOLLOWING_COME_CLOSER',
                                                'aborted': 'Listen'})
          
            smach.StateMachine.add('START_FOLLOWING_COME_CLOSER',
                                   text_to_say(START_FOLLOW_FRASE),
                                   transitions={'succeeded': 'SM_LEARN_PERSON','aborted':'aborted'})

            # it learns the person that we have to follow
            smach.StateMachine.add('SM_LEARN_PERSON',
                                   LearnPerson(learn_face=True),
                                   transitions={'succeeded': 'SM_STOP_LEARNING',
                                                'aborted': 'aborted'})

            smach.StateMachine.add('SM_STOP_LEARNING',
                                   text_to_say(LEARNED_PERSON_FRASE),
                                   transitions={'succeeded': 'succeeded','aborted':'aborted'})
 def __init__(self):
     smach.StateMachine.__init__(self,
                                 outcomes=['succeeded', 'preempted', 'aborted'])
     
     with self:
         self.userdata.tts_wait_before_speaking=0
         self.userdata.tts_text=None
         self.userdata.tts_lang=None
         self.userdata.nav_to_poi_name=None
         self.userdata.standard_error='OK'
         self.userdata.grammar_name=gramar
         self.userdata.in_learn_person=1 # todo is only for try
         
         smach.StateMachine.add('INIT_VAR',
                                init_var(),
                                transitions={'succeeded': 'CHANGE_STATE_MAP',
                                             'aborted': 'aborted','preempted':'preempted'})
         
         def navigation_MAP_cb(userdata,request):
             update = AcknowledgmentRequest()
             update.input = MAPPING_MODE
             return update
         
         def navigation_LOC_cb(userdata,request):
             update = AcknowledgmentRequest()
             update.input = LOCALIZATION_MODE
             return update
         
         smach.StateMachine.add('CHANGE_STATE_MAP',
                                 ServiceState('/pal_navigation_sm',Acknowledgment,
                                              request_cb = navigation_MAP_cb ),
                                 transitions = {'succeeded': 'LEARN_INIT',
                                                 'aborted':'CHANGE_STATE_MAP'})
         smach.StateMachine.add('LEARN_INIT',
                                restaurantInit(),
                                transitions={'succeeded': 'CONCURRENCE',
                                             'aborted': 'LEARN_INIT','preempted':'preempted'})
         
     
         
         sm=smach.Concurrence(outcomes=['succeeded', 'lost'],
                                default_outcome='succeeded',input_keys=["in_learn_person",
                                                                        'grammar_name'],
                                child_termination_cb = child_term_cb, outcome_cb=out_cb)
             
          
         with sm:
             # it follow the person for long time
             sm.add('FOLLOW_ME',
                             FollowOperator(distToHuman=0.4, feedback=False, learn_if_lost=True))
             # here it have to listen and put pois in the map
             sm.add('LISTEN_OPERATOR_RESTAURANT',
                             ListenOperator())
             
         smach.StateMachine.add('CONCURRENCE', sm, transitions={'succeeded': 'CHANGE_STATE_STOP',
                                                                'lost':'CONCURRENCE'})
         
         
         
         smach.StateMachine.add('CHANGE_STATE_STOP',
                                 ServiceState('/pal_navigation_sm',Acknowledgment,
                                              request_cb = navigation_LOC_cb ),
                                 transitions = {'succeeded': 'DEFAULT_POSITION',
                                                'aborted':'CHANGE_STATE_STOP'})
         smach.StateMachine.add('DEFAULT_POSITION',
                                move_head_form("center","up"),
                                transitions={'succeeded': 'fake_id','aborted':'fake_id'})
         
         
         # it say finsih that then we can stard serving orders
         smach.StateMachine.add('fake_id',
                                fake_id(),
                                transitions={'succeeded': 'FINISH',
                                 'aborted': 'FINISH','preempted':'FINISH'})
         # it say finsih that then we can stard serving orders
         smach.StateMachine.add('FINISH',
                                text_to_say(SAY_FINISH_FOLLOWING),
                                transitions={'succeeded': 'succeeded',
                                 'aborted': 'aborted','preempted':'preempted'})
Esempio n. 19
0
    def __init__(self,poi_name=None,time_out=10):
        smach.StateMachine.__init__(self, outcomes=['succeeded', 'preempted', 'aborted'],
                                     input_keys=['name', 'nav_to_poi_name', 'face','face_frame'],
                                     output_keys=['face', 'standard_error', 'face_frame'])
        self.poi_name=poi_name
        self.time_out=time_out
        with self:

            self.userdata.num_iterations = 0
            self.userdata.face = None
            self.userdata.wait_time = 5
            self.userdata.nav_to_poi_name=None
            self.userdata.face_frame=None
            
            # We define the different points
            smach.StateMachine.add(
                'prepare_poi',
                prepare_poi(self.poi_name),
                transitions={'poi': 'go_poi', 'no_poi': 'Concurrence'}) 
            smach.StateMachine.add(
                                   'Say_Searching',
                                   text_to_say('Right Now I am looking for you.',wait=True),
                                   transitions={'succeeded': 'go_poi', 'aborted': 'aborted', 
                                    'preempted': 'preempted'})
            
            smach.StateMachine.add(
                                   'go_poi',
                                   nav_to_poi(poi_name),
                                   transitions={'succeeded': 'Concurrence', 'aborted': 'Concurrence', #TODO
                                    'preempted': 'preempted'})

            # Concurrence
            sm_conc = smach.Concurrence(outcomes=['succeeded', 'aborted', 'preempted', 'endTime'],
                                        default_outcome='succeeded',
                                        input_keys=['name', 'nav_to_poi_name', 'face', 'wait_time'],
                                        output_keys=['face', 'standard_error', 'face_frame'],
                                        child_termination_cb = child_term_cb,
                                        outcome_cb=out_cb)
            
            with sm_conc:
                # Go around the room 
               # smach.Concurrence.add('walk_to_poi', nav_to_poi())                  
                #smach.Concurrence.add('turn', turn_infinit('left'))
                # Move head
                smach.Concurrence.add('TimeOut', TimeOut(self.time_out))
                 
                # Search for face
                smach.Concurrence.add('find_faces', recognize_face_concurrent())
                
                smach.Concurrence.add('say_search_faces', say_searching_faces())

            
            smach.StateMachine.add('Concurrence', sm_conc, 
                                transitions={'succeeded':'DEFAULT_POSITION', 
                                             'aborted':'Say_Finish', 
                                             'endTime': 'Say_Finish',
                                             'preempted':'Say_Finish'})

                  
            smach.StateMachine.add(
                                   'Say_Finish',
                                   text_to_say('I have finish with no exit the search',wait=False),
                                   transitions={'succeeded': 'DEFAULT_POSITION_NO', 'aborted': 'DEFAULT_POSITION_NO', 
                                    'preempted': 'preempted'})
            smach.StateMachine.add('DEFAULT_POSITION_NO',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'aborted','aborted':'aborted'})
            
            
            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'succeeded','aborted':'succeeded'})
    def __init__(self):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted'],
            input_keys=[],
            output_keys=[
                'emergency_poi_name', 'wave_position', 'wave_yaw_degree'
            ])

        with self:
            self.userdata.emergency_location = []
            self.userdata.tts_lang = 'en_US'
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.possible_pois = []
            self.userdata.n_item = 0

            smach.StateMachine.add(
                'Prepare_Data',
                Prepare_Data(),
                transitions={'succeeded': 'Search_Emergency'})

            smach.StateMachine.add('Search_Emergency',
                                   Select_Possible_Poi(),
                                   transitions={
                                       'succeeded': 'Say_Go_to_Room',
                                       'finished_searching': 'aborted'
                                   })

            smach.StateMachine.add(
                'Say_Go_to_Room',
                text_to_say("Now I am going to the next room"),
                transitions={
                    'succeeded': 'Navigate_to_Room',
                    'aborted': 'aborted'
                })

            smach.StateMachine.add(
                'Navigate_to_Room',
                nav_to_poi(),
                remapping={'nav_to_poi_name': 'nav_to_poi_name_possible'},
                transitions={
                    'succeeded': 'Search_Wave',
                    'aborted': 'Search_Wave',
                    'preempted': 'preempted'
                })

            smach.StateMachine.add(
                'Search_Wave',
                Search_Wave_SM(
                    head_position='down',
                    text_for_wave_searching=
                    'Where are you? I am trying to find and help you.'),
                transitions={
                    'succeeded': 'Normal_head_Out',
                    'preempted': 'preempted',
                    'aborted': 'aborted',
                    'end_searching': 'Normal_head'
                })

            smach.StateMachine.add('Normal_head_Out',
                                   move_head_form(head_left_right='center',
                                                  head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'Prepare_Output_Search',
                                       'preempted': 'Prepare_Output_Search',
                                       'aborted': 'Prepare_Output_Search'
                                   })
            smach.StateMachine.add('Normal_head',
                                   move_head_form(head_left_right='center',
                                                  head_up_down='normal'),
                                   transitions={
                                       'succeeded': 'Search_Emergency',
                                       'preempted': 'Search_Emergency',
                                       'aborted': 'Search_Emergency'
                                   })

            smach.StateMachine.add('Prepare_Output_Search',
                                   Prepare_output_search(),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'aborted'
                                   })
Esempio n. 21
0
    def __init__(self):
        smach.StateMachine.__init__(
            self, outcomes=['succeeded', 'preempted', 'aborted'])

        with self:
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.tts_text = None
            self.userdata.tts_lang = None
            self.userdata.nav_to_poi_name = None
            self.userdata.standard_error = 'OK'
            self.userdata.grammar_name = gramar
            self.userdata.in_learn_person = 1  # todo is only for try

            smach.StateMachine.add('INIT_VAR',
                                   init_var(),
                                   transitions={
                                       'succeeded': 'CHANGE_STATE_MAP',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            def navigation_MAP_cb(userdata, request):
                update = AcknowledgmentRequest()
                update.input = MAPPING_MODE
                return update

            def navigation_LOC_cb(userdata, request):
                update = AcknowledgmentRequest()
                update.input = LOCALIZATION_MODE
                return update

            smach.StateMachine.add('CHANGE_STATE_MAP',
                                   ServiceState('/pal_navigation_sm',
                                                Acknowledgment,
                                                request_cb=navigation_MAP_cb),
                                   transitions={
                                       'succeeded': 'LEARN_INIT',
                                       'aborted': 'CHANGE_STATE_MAP'
                                   })
            smach.StateMachine.add('LEARN_INIT',
                                   restaurantInit(),
                                   transitions={
                                       'succeeded': 'CONCURRENCE',
                                       'aborted': 'LEARN_INIT',
                                       'preempted': 'preempted'
                                   })

            sm = smach.Concurrence(
                outcomes=['succeeded', 'lost'],
                default_outcome='succeeded',
                input_keys=["in_learn_person", 'grammar_name'],
                child_termination_cb=child_term_cb,
                outcome_cb=out_cb)

            with sm:
                # it follow the person for long time
                sm.add(
                    'FOLLOW_ME',
                    FollowOperator(distToHuman=0.4,
                                   feedback=False,
                                   learn_if_lost=True))
                # here it have to listen and put pois in the map
                sm.add('LISTEN_OPERATOR_RESTAURANT', ListenOperator())

            smach.StateMachine.add('CONCURRENCE',
                                   sm,
                                   transitions={
                                       'succeeded': 'CHANGE_STATE_STOP',
                                       'lost': 'CONCURRENCE'
                                   })

            smach.StateMachine.add('CHANGE_STATE_STOP',
                                   ServiceState('/pal_navigation_sm',
                                                Acknowledgment,
                                                request_cb=navigation_LOC_cb),
                                   transitions={
                                       'succeeded': 'DEFAULT_POSITION',
                                       'aborted': 'CHANGE_STATE_STOP'
                                   })
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'fake_id',
                                       'aborted': 'fake_id'
                                   })

            # it say finsih that then we can stard serving orders
            smach.StateMachine.add('fake_id',
                                   fake_id(),
                                   transitions={
                                       'succeeded': 'FINISH',
                                       'aborted': 'FINISH',
                                       'preempted': 'FINISH'
                                   })
            # it say finsih that then we can stard serving orders
            smach.StateMachine.add('FINISH',
                                   text_to_say(SAY_FINISH_FOLLOWING),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })
Esempio n. 22
0
    def __init__(self, head_position=None, text_for_wave_searching="I am looking for you."):
        smach.StateMachine.__init__(self, outcomes=['succeeded', 'preempted', 'aborted', 'end_searching'],
                                 input_keys=[],
                                 output_keys=['wave_position', 'wave_yaw_degree','standard_error'])
        with self:
            self.userdata.loop_iterations = 0
            self.userdata.wave_position = None
            self.userdata.wave_yaw_degree = None
            self.userdata.standard_error = ''
            
            
            
            smach.StateMachine.add(
                                   'Move_head_prepare',
                                   prepare_move_head(head_position),
                                   transitions={'succeeded': 'Concurrence', 'aborted': 'aborted', 
                                                'preempted': 'preempted', 'end_searching':'end_searching'})
            
            sm_conc = smach.Concurrence(outcomes = ['succeeded', 'aborted', 'preempted', 'face_detected'], 
                                        default_outcome = 'succeeded', 
                                        input_keys = ['head_left_right', 
                                                      'head_up_down'], 
                                        output_keys = ['wave_position', 'wave_yaw_degree'],
                                        child_termination_cb = child_term_cb,
                                        outcome_cb=out_cb)
            with sm_conc:
#                 sm_conc.StateMachine.add(
#                                        'move_head',
#                                        move_head_form(head_up_down=head_position),
#                                        transitions={'succeeded': 'Say_Searching',
#                                                     'preempted':'Say_Searching',
#                                                     'aborted':'aborted'})
#                 sm_conc.StateMachine.add(
#                     'Say_Searching',
#                     text_to_say(text_for_wave_searching, wait = False),
#                     transitions={'succeeded':'wave_recognition', 'aborted':'wave_recognition', 'preempted':'wave_recognition'})
                sm_conc.add(
                            'move_head',
                            move_head_form(head_up_down=head_position))
                sm_conc.add(
                            'Say_Searching',
                            text_to_say(text_for_wave_searching, wait = False))
                sm_conc.add(
                            'wave_recognition',
                            WaveDetection(8.0)) 
            
            smach.StateMachine.add('Concurrence',
                                   sm_conc,
                                   transitions={'succeeded':'Say_Found', 
                                                'aborted':'Move_head_prepare',
                                                'preempted':'preempted',
                                                'face_detected':'Say_Found'})
               
            #Hard-coded maximum time in order to detect wave 
#             smach.StateMachine.add(
#                 'wave_recognition',
#                 WaveDetection(4.0),
#                 transitions={'succeeded': 'Say_Found', 'aborted': 'Move_head_prepare', 
#                 'preempted': 'preempted'}) 
            
            smach.StateMachine.add(
                'Say_Found',
                text_to_say("Oh! I have found you finally."),
                transitions={'succeeded':'succeeded', 'aborted':'aborted', 'preempted':'preempted'})
Esempio n. 23
0
    def __init__(self, feedback=True):
        smach.StateMachine.__init__(
            self, ['succeeded', 'preempted', 'aborted'],
            output_keys=['standard_error', 'in_learn_person'])
        self.feedback = feedback
        self.follow_pub = rospy.Publisher('/follow_me/id', Int32, latch=True)
        with self:
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.tts_text = None
            self.userdata.tts_lang = None
            self.userdata.standard_error = 'OK'

            smach.StateMachine.add('INIT_VAR',
                                   init_var(),
                                   transitions={
                                       'succeeded': 'DEFAULT_POSITION',
                                       'aborted': 'DEFAULT_POSITION'
                                   })

            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'WAIT_TIME',
                                       'aborted': 'WAIT_TIME'
                                   })

            smach.StateMachine.add('WAIT_TIME',
                                   wait_time(),
                                   transitions={
                                       'succeeded': 'READ_TRACKER_TOPIC',
                                       'aborted': 'READ_TRACKER_TOPIC'
                                   })

            #TODO:: aborted->CONTROL_TIME
            smach.StateMachine.add(
                'READ_TRACKER_TOPIC',
                topic_reader(topic_name='/pipol_tracker_node/peopleSet',
                             topic_type=personArray,
                             topic_time_out=60),
                transitions={
                    'succeeded': 'SELECT_ID',
                    'aborted': 'aborted',
                    'preempted': 'preempted'
                },
                remapping={'topic_output_msg': 'tracking_msg'})

            # it learns the person that we have to follow
            smach.StateMachine.add('SELECT_ID',
                                   select_ID(self.follow_pub),
                                   transitions={
                                       'succeeded': 'NEW_PERSON',
                                       'aborted': 'WAIT_TIME'
                                   })

            smach.StateMachine.add('NEW_PERSON',
                                   say_with_enable(text=NEW_PERSON,
                                                   enable=self.feedback),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'preempted': 'succeeded',
                                       'aborted': 'succeeded'
                                   })
Esempio n. 24
0
    def __init__(self, poi_name=None, time_out=10):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted'],
            input_keys=['name', 'nav_to_poi_name', 'face', 'face_frame'],
            output_keys=['face', 'standard_error', 'face_frame'])
        self.poi_name = poi_name
        self.time_out = time_out
        with self:
            self.userdata.name = ''
            self.userdata.num_iterations = 0
            self.userdata.face = None
            self.userdata.wait_time = 5
            self.userdata.nav_to_poi_name = None
            self.userdata.face_frame = None

            # We define the different points
            smach.StateMachine.add('prepare_poi',
                                   prepare_poi(self.poi_name),
                                   transitions={
                                       'poi': 'go_poi',
                                       'no_poi': 'Concurrence'
                                   })
            smach.StateMachine.add('Say_Searching',
                                   text_to_say(
                                       'Right Now I am looking for you.',
                                       wait=True),
                                   transitions={
                                       'succeeded': 'go_poi',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add(
                'go_poi',
                nav_to_poi(poi_name),
                transitions={
                    'succeeded': 'Concurrence',
                    'aborted': 'Concurrence',  #TODO
                    'preempted': 'preempted'
                })

            # Concurrence
            sm_conc = smach.Concurrence(
                outcomes=['succeeded', 'aborted', 'preempted', 'endTime'],
                default_outcome='succeeded',
                input_keys=['name', 'nav_to_poi_name', 'face', 'wait_time'],
                output_keys=['face', 'standard_error', 'face_frame'],
                child_termination_cb=child_term_cb,
                outcome_cb=out_cb)

            with sm_conc:
                # Go around the room
                # smach.Concurrence.add('walk_to_poi', nav_to_poi())
                #smach.Concurrence.add('turn', turn_infinit('left'))
                # Move head
                smach.Concurrence.add('TimeOut', TimeOut(self.time_out))

                # Search for face
                smach.Concurrence.add('find_faces',
                                      recognize_face_concurrent())

                smach.Concurrence.add('say_search_faces',
                                      say_searching_faces())

            smach.StateMachine.add('Concurrence',
                                   sm_conc,
                                   transitions={
                                       'succeeded': 'DEFAULT_POSITION',
                                       'aborted': 'Say_Finish',
                                       'endTime': 'Say_Finish',
                                       'preempted': 'Say_Finish'
                                   })

            smach.StateMachine.add('Say_Finish',
                                   text_to_say(
                                       'I have finish with no exit the search',
                                       wait=False),
                                   transitions={
                                       'succeeded': 'DEFAULT_POSITION_NO',
                                       'aborted': 'DEFAULT_POSITION_NO',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('DEFAULT_POSITION_NO',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'aborted',
                                       'aborted': 'aborted'
                                   })

            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'succeeded'
                                   })
Esempio n. 25
0
    def __init__(self,
                 head_position=None,
                 text_for_wave_searching="I am looking for you."):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted'],
            input_keys=[],
            output_keys=['wave_position', 'wave_yaw_degree', 'standard_error'])
        with self:
            self.userdata.loop_iterations = 0
            self.userdata.wave_position = None
            self.userdata.wave_yaw_degree = None
            self.userdata.standard_error = ''

            smach.StateMachine('Dummy',
                               DummyStateMachine(),
                               transitions={'succeeded': 'Say_follow'})
            smach.StateMachine(
                'Say_follow',
                text_to_say(
                    'Follow Me Please, I will guide you to the person'),
                transitions={
                    'succeeded': 'succeeded',
                    'aborted': 'aborted'
                })

            smach.StateMachine.add('Move_head_prepare',
                                   prepare_move_head(head_position),
                                   transitions={
                                       'succeeded': 'move_head',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })
            smach.StateMachine.add('move_head',
                                   move_head_form(head_up_down=head_position),
                                   transitions={
                                       'succeeded': 'Say_Searching',
                                       'preempted': 'Say_Searching',
                                       'aborted': 'aborted'
                                   })
            smach.StateMachine.add('Say_Searching',
                                   text_to_say("text_for_wave_searching"),
                                   transitions={
                                       'succeeded': 'face_detection',
                                       'aborted': 'face_detection',
                                       'preempted': 'face_detection'
                                   })

            #Hard-coded maximum time in order to detect wave
            smach.StateMachine.add(
                'face_detection',
                detect_face(),
                transitions={
                    'succeeded': 'Say_Found',
                    'aborted':
                    'aborted',  #TODO before it was Move_head_prepare
                    'preempted': 'preempted'
                })

            smach.StateMachine.add(
                'Say_Found',
                text_to_say("Oh! I have found you finally."),
                transitions={
                    'succeeded': 'succeeded',
                    'aborted': 'aborted',
                    'preempted': 'preempted'
                })
Esempio n. 26
0
    def __init__(self):
        smach.StateMachine.__init__(self,
                                    ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error'],
                                    input_keys=['in_learn_person'])
        
        with self:
            self.userdata.tts_wait_before_speaking=0
            self.userdata.tts_text=None
            self.userdata.tts_lang=None
            self.userdata.standar_error="ok"
            self.userdata.word_to_listen=None
            self.userdata.in_learn_person=person()
            self.userdata.head_left_right=None
            self.userdata.head_up_down=None
            self.userdata.in_learn_person.targetId=1
            print "HEY, THIS IS self.userdata.in_learn_person: " + str(self.userdata.in_learn_person)
            
            def go_back_request(userdata,request):
                start_request = NavigationGoBackRequest()
                start_request.enable=True
                start_request.meters=METERSBACK
                return start_request
            
            #maybe i will have to learn again
            smach.StateMachine.add('INIT_VAR',
                                   init_var(),
                                   transitions={'succeeded': 'GO_BACK',
                                                'aborted': 'aborted','preempted':'preempted'})
            
            # i stop the service
            def Cheack_Elevator_Stop(userdata, request):
                start_request = EnableCheckElevatorRequest()
                start_request.enable=False
                return start_request
            
            smach.StateMachine.add('STOP_CHECK_ELEVATOR',
                                  ServiceState('/check_elevator/enable',
                                  EnableCheckElevator,
                                  request_cb = Cheack_Elevator_Stop),
                                  transitions={'succeeded':'succeeded',
                                               'preempted':'succeeded',
                                                'aborted':'succeeded'})
            # it will go from the lift
            smach.StateMachine.add('GO_BACK',
                                    ServiceState('/reverse',
                                    NavigationGoBack,
                                    request_cb = go_back_request),
                                    transitions={'succeeded':'READ_TRACKER_TOPIC','aborted' : 'READ_TRACKER_TOPIC','preempted':'preempted'})
            
# i don't understant why is this goal here, i imagine for stop
            smach.StateMachine.add('SEND_GOAL',
                       nav_to_coord_concurrent('/base_link'),
                       transitions={'succeeded':'READ_TRACKER_TOPIC', 'aborted':'WHERE_IS_IT','preempted':'preempted'})
            
            
            
            smach.StateMachine.add('READ_TRACKER_TOPIC',
                                   topic_reader(topic_name='/pipol_tracker_node/peopleSet',
                                                topic_type=personArray,topic_time_out=60),
                                   transitions={'succeeded':'WHERE_IS_IT',
                                                'aborted':'READ_TRACKER_TOPIC',
                                                'preempted':'preempted'},
                                   remapping={'topic_output_msg': 'tracking_msg'})
             # it will have to look if it can find the person, know it's only one try
            smach.StateMachine.add('WHERE_IS_IT',
                       where_is_it(),
                       transitions={'i_dont_know':'SAY_COME_NEAR','ok_lets_go':'SAY_LETS_GO','preempted':'preempted'})
            
            #this is when i don't remember the person
            smach.StateMachine.add('SAY_COME_NEAR',
                                   text_to_say(SAY_COME_NEAR),
                                   transitions={'succeeded':'LEARN_AGAIN','aborted':'LEARN_AGAIN','preempted':'preempted'})
            
            #hear i will learn the peron another time
            smach.StateMachine.add('LEARN_AGAIN',
                                   LearnPerson(learn_face=False),
                                   transitions={'succeeded':'SAY_LETS_GO',
                                                'aborted':'SAY_COME_NEAR','preempted':'preempted'})
            
            
            
            smach.StateMachine.add('SAY_LETS_GO',
                                   text_to_say(SAY_LETS_GO),
                                   transitions={'succeeded':'TRACK_OPERATOR','aborted':'aborted','preempted':'preempted'})  
            
            
            smach.StateMachine.add('TRACK_OPERATOR',
                                   FollowOperator(learn_if_lost=False,feedback=True),
                                   transitions={'succeeded':'succeeded',
                                               'lost':'LOST_CREATE_GOAL','preempted':'preempted'})
            
            
            
            # i will prepere the navigation goal becouse i have lost the person   
            #the goal have to be a realy far goal   
            smach.StateMachine.add('LOST_CREATE_GOAL',create_nav_goal(),
                                   transitions={'succeeded':'SEARCH_OPERATOR',
                                               'aborted':'SEARCH_OPERATOR','preempted':'preempted'})
            
            
            
            sm=smach.Concurrence(outcomes=['gesture_recongize', 'nav_finisheed','preempted'],
                        default_outcome='nav_finisheed',
                        input_keys=["in_learn_person",'nav_to_coord_goal'],
                        output_keys=['wave_position', 'wave_yaw_degree','standard_error'],
                        child_termination_cb = child_term_cb,
                        outcome_cb=out_cb_follow)
            
            with sm:
                sm.userdata.standar_error="ok"
                #this goal will be a realy far goal
                smach.Concurrence.add('SEND_GOAL',
                                nav_to_coord("/base_link"))
 
                smach.Concurrence.add('SEARCH_OPERATOR_GESTURE',
                                Search_Wave_SM())
            
            smach.StateMachine.add('SEARCH_OPERATOR', sm,
                                     transitions={'gesture_recongize':'DEFAULT_POSITION',
                                                 'nav_finisheed':'SEARCH_OPERATOR_GESTURE_2','preempted':'preempted'})
           
        
            smach.StateMachine.add('SEARCH_OPERATOR_GESTURE_2',
                                   Search_Wave_SM(),
                                   transitions={'succeeded':'DEFAULT_POSITION',
                                               'aborted':'SEARCH_OPERATOR_GESTURE_2','preempted':'preempted', 'end_searching':'SEARCH_OPERATOR_GESTURE_2'})
            
            
            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center","up"),
                                   transitions={'succeeded': 'CREATE_GESTURE_NAV_GOAL','aborted':'CREATE_GESTURE_NAV_GOAL'})
            
            smach.StateMachine.add('CREATE_GESTURE_NAV_GOAL',
                                   create_nav_gesture_goal(),
                                   transitions={'succeeded':'RECOGNIZE_PERSON',
                                               'aborted':'aborted','preempted':'preempted'})


#             smach.StateMachine.add('SAY_CROSSING',
#                                    text_to_say(SAY_CROSSING),
#                                    transitions={'succeeded':'GO_TO_GESTURE',
#                                                'aborted':'GO_TO_GESTURE','preempted':'preempted'}) 
#             #if the navigation goal it's impossible it will be heare allways 
#             smach.StateMachine.add('GO_TO_GESTURE',
#                                    nav_to_coord('/base_link'),
#                                    transitions={'succeeded':'RECOGNIZE_PERSON',
#                                                'aborted':'RECOGNIZE_PERSON','preempted':'preempted'})  
#             
            #when i'm whit the person i have to look if it's the person
            smach.StateMachine.add('RECOGNIZE_PERSON',
                                   LearnPerson(learn_face=False),
                                   transitions={'succeeded':'SAY_GO_AGAIN',
                                               'aborted':'aborted','preempted':'preempted'})               
            
            
            
            smach.StateMachine.add('SAY_GO_AGAIN',
                                   text_to_say(SAY_GO_AGAIN),
                                   transitions={'succeeded':'FOLLOW_AGAIN',
                                               'aborted':'SEARCH_OPERATOR','preempted':'preempted'}) 
            
            # hear i finish the state
            smach.StateMachine.add('FOLLOW_AGAIN',
                       FollowOperator(feedback=True, learn_if_lost=True),
                       transitions={'succeeded':'succeeded',
                                   'lost':'aborted','preempted':'preempted'}) 
Esempio n. 27
0
    def __init__(self):
        smach.StateMachine.__init__(self,
                                    ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error'],
                                    input_keys=['in_learn_person'])

        with self:
            self.userdata.tts_wait_before_speaking = 0
            self.userdata.tts_text = None
            self.userdata.tts_lang = None
            self.userdata.standar_error = "ok"
            self.userdata.word_to_listen = None
            self.userdata.in_learn_person = person()
            self.userdata.head_left_right = None
            self.userdata.head_up_down = None
            self.userdata.in_learn_person.targetId = 1
            print "HEY, THIS IS self.userdata.in_learn_person: " + str(
                self.userdata.in_learn_person)

            def go_back_request(userdata, request):
                start_request = NavigationGoBackRequest()
                start_request.enable = True
                start_request.meters = METERSBACK
                return start_request

            #maybe i will have to learn again
            smach.StateMachine.add('INIT_VAR',
                                   init_var(),
                                   transitions={
                                       'succeeded': 'GO_BACK',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            # i stop the service
            def Cheack_Elevator_Stop(userdata, request):
                start_request = EnableCheckElevatorRequest()
                start_request.enable = False
                return start_request

            smach.StateMachine.add('STOP_CHECK_ELEVATOR',
                                   ServiceState(
                                       '/check_elevator/enable',
                                       EnableCheckElevator,
                                       request_cb=Cheack_Elevator_Stop),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'preempted': 'succeeded',
                                       'aborted': 'succeeded'
                                   })
            # it will go from the lift
            smach.StateMachine.add('GO_BACK',
                                   ServiceState('/reverse',
                                                NavigationGoBack,
                                                request_cb=go_back_request),
                                   transitions={
                                       'succeeded': 'READ_TRACKER_TOPIC',
                                       'aborted': 'READ_TRACKER_TOPIC',
                                       'preempted': 'preempted'
                                   })

            # i don't understant why is this goal here, i imagine for stop
            smach.StateMachine.add('SEND_GOAL',
                                   nav_to_coord_concurrent('/base_link'),
                                   transitions={
                                       'succeeded': 'READ_TRACKER_TOPIC',
                                       'aborted': 'WHERE_IS_IT',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add(
                'READ_TRACKER_TOPIC',
                topic_reader(topic_name='/pipol_tracker_node/peopleSet',
                             topic_type=personArray,
                             topic_time_out=60),
                transitions={
                    'succeeded': 'WHERE_IS_IT',
                    'aborted': 'READ_TRACKER_TOPIC',
                    'preempted': 'preempted'
                },
                remapping={'topic_output_msg': 'tracking_msg'})
            # it will have to look if it can find the person, know it's only one try
            smach.StateMachine.add('WHERE_IS_IT',
                                   where_is_it(),
                                   transitions={
                                       'i_dont_know': 'SAY_COME_NEAR',
                                       'ok_lets_go': 'SAY_LETS_GO',
                                       'preempted': 'preempted'
                                   })

            #this is when i don't remember the person
            smach.StateMachine.add('SAY_COME_NEAR',
                                   text_to_say(SAY_COME_NEAR),
                                   transitions={
                                       'succeeded': 'LEARN_AGAIN',
                                       'aborted': 'LEARN_AGAIN',
                                       'preempted': 'preempted'
                                   })

            #hear i will learn the peron another time
            smach.StateMachine.add('LEARN_AGAIN',
                                   LearnPerson(learn_face=False),
                                   transitions={
                                       'succeeded': 'SAY_LETS_GO',
                                       'aborted': 'SAY_COME_NEAR',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('SAY_LETS_GO',
                                   text_to_say(SAY_LETS_GO),
                                   transitions={
                                       'succeeded': 'TRACK_OPERATOR',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('TRACK_OPERATOR',
                                   FollowOperator(learn_if_lost=False,
                                                  feedback=True),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'lost': 'LOST_CREATE_GOAL',
                                       'preempted': 'preempted'
                                   })

            # i will prepere the navigation goal becouse i have lost the person
            #the goal have to be a realy far goal
            smach.StateMachine.add('LOST_CREATE_GOAL',
                                   create_nav_goal(),
                                   transitions={
                                       'succeeded': 'SEARCH_OPERATOR',
                                       'aborted': 'SEARCH_OPERATOR',
                                       'preempted': 'preempted'
                                   })

            sm = smach.Concurrence(
                outcomes=['gesture_recongize', 'nav_finisheed', 'preempted'],
                default_outcome='nav_finisheed',
                input_keys=["in_learn_person", 'nav_to_coord_goal'],
                output_keys=[
                    'wave_position', 'wave_yaw_degree', 'standard_error'
                ],
                child_termination_cb=child_term_cb,
                outcome_cb=out_cb_follow)

            with sm:
                sm.userdata.standar_error = "ok"
                #this goal will be a realy far goal
                smach.Concurrence.add('SEND_GOAL', nav_to_coord("/base_link"))

                smach.Concurrence.add('SEARCH_OPERATOR_GESTURE',
                                      Search_Wave_SM())

            smach.StateMachine.add('SEARCH_OPERATOR',
                                   sm,
                                   transitions={
                                       'gesture_recongize': 'DEFAULT_POSITION',
                                       'nav_finisheed':
                                       'SEARCH_OPERATOR_GESTURE_2',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('SEARCH_OPERATOR_GESTURE_2',
                                   Search_Wave_SM(),
                                   transitions={
                                       'succeeded': 'DEFAULT_POSITION',
                                       'aborted': 'SEARCH_OPERATOR_GESTURE_2',
                                       'preempted': 'preempted',
                                       'end_searching':
                                       'SEARCH_OPERATOR_GESTURE_2'
                                   })

            smach.StateMachine.add('DEFAULT_POSITION',
                                   move_head_form("center", "up"),
                                   transitions={
                                       'succeeded': 'CREATE_GESTURE_NAV_GOAL',
                                       'aborted': 'CREATE_GESTURE_NAV_GOAL'
                                   })

            smach.StateMachine.add('CREATE_GESTURE_NAV_GOAL',
                                   create_nav_gesture_goal(),
                                   transitions={
                                       'succeeded': 'RECOGNIZE_PERSON',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            #             smach.StateMachine.add('SAY_CROSSING',
            #                                    text_to_say(SAY_CROSSING),
            #                                    transitions={'succeeded':'GO_TO_GESTURE',
            #                                                'aborted':'GO_TO_GESTURE','preempted':'preempted'})
            #             #if the navigation goal it's impossible it will be heare allways
            #             smach.StateMachine.add('GO_TO_GESTURE',
            #                                    nav_to_coord('/base_link'),
            #                                    transitions={'succeeded':'RECOGNIZE_PERSON',
            #                                                'aborted':'RECOGNIZE_PERSON','preempted':'preempted'})
            #
            #when i'm whit the person i have to look if it's the person
            smach.StateMachine.add('RECOGNIZE_PERSON',
                                   LearnPerson(learn_face=False),
                                   transitions={
                                       'succeeded': 'SAY_GO_AGAIN',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            smach.StateMachine.add('SAY_GO_AGAIN',
                                   text_to_say(SAY_GO_AGAIN),
                                   transitions={
                                       'succeeded': 'FOLLOW_AGAIN',
                                       'aborted': 'SEARCH_OPERATOR',
                                       'preempted': 'preempted'
                                   })

            # hear i finish the state
            smach.StateMachine.add('FOLLOW_AGAIN',
                                   FollowOperator(feedback=True,
                                                  learn_if_lost=True),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'lost': 'aborted',
                                       'preempted': 'preempted'
                                   })
Esempio n. 28
0
    def __init__(self,
                 head_position=None,
                 text_for_wave_searching="I am looking for you."):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted', 'end_searching'],
            input_keys=[],
            output_keys=['wave_position', 'wave_yaw_degree', 'standard_error'])
        with self:
            self.userdata.loop_iterations = 0
            self.userdata.wave_position = None
            self.userdata.wave_yaw_degree = None
            self.userdata.standard_error = ''

            smach.StateMachine.add('Move_head_prepare',
                                   prepare_move_head(head_position),
                                   transitions={
                                       'succeeded': 'Concurrence',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted',
                                       'end_searching': 'end_searching'
                                   })

            sm_conc = smach.Concurrence(
                outcomes=[
                    'succeeded', 'aborted', 'preempted', 'face_detected'
                ],
                default_outcome='succeeded',
                input_keys=['head_left_right', 'head_up_down'],
                output_keys=['wave_position', 'wave_yaw_degree'],
                child_termination_cb=child_term_cb,
                outcome_cb=out_cb)
            with sm_conc:
                #                 sm_conc.StateMachine.add(
                #                                        'move_head',
                #                                        move_head_form(head_up_down=head_position),
                #                                        transitions={'succeeded': 'Say_Searching',
                #                                                     'preempted':'Say_Searching',
                #                                                     'aborted':'aborted'})
                #                 sm_conc.StateMachine.add(
                #                     'Say_Searching',
                #                     text_to_say(text_for_wave_searching, wait = False),
                #                     transitions={'succeeded':'wave_recognition', 'aborted':'wave_recognition', 'preempted':'wave_recognition'})
                sm_conc.add('move_head',
                            move_head_form(head_up_down=head_position))
                sm_conc.add('Say_Searching',
                            text_to_say(text_for_wave_searching, wait=False))
                sm_conc.add('wave_recognition', WaveDetection(8.0))

            smach.StateMachine.add('Concurrence',
                                   sm_conc,
                                   transitions={
                                       'succeeded': 'Say_Found',
                                       'aborted': 'Move_head_prepare',
                                       'preempted': 'preempted',
                                       'face_detected': 'Say_Found'
                                   })

            #Hard-coded maximum time in order to detect wave
            #             smach.StateMachine.add(
            #                 'wave_recognition',
            #                 WaveDetection(4.0),
            #                 transitions={'succeeded': 'Say_Found', 'aborted': 'Move_head_prepare',
            #                 'preempted': 'preempted'})

            smach.StateMachine.add(
                'Say_Found',
                text_to_say("Oh! I have found you finally."),
                transitions={
                    'succeeded': 'succeeded',
                    'aborted': 'aborted',
                    'preempted': 'preempted'
                })