def main():
    rospy.init_node('learn_face_test')

    sm = smach.StateMachine(outcomes=['succeeded', 'preempted', 'aborted'])
    with sm:
        # it preper the name for learning
      
        smach.StateMachine.add(
            'learn_face',
            new_database_and_learn(learning_time=5, minConfidence=80, name_face="pepito", name_database='"following'),
            transitions={'succeeded': 'succeeded','aborted' : 'aborted_info'})
        # it prints the standard error
        smach.StateMachine.add(
            'aborted_info',
            learn_Face_error(),
            transitions={'succeeded': 'succeeded', 'aborted':'aborted'})

    # This is for the smach_viewer so we can see what is happening, rosrun smach_viewer smach_viewer.py it's cool!
    sis = smach_ros.IntrospectionServer(
        'learn_face_introspection', sm, '/LFI_ROOT')
    sis.start()

    sm.execute()

    rospy.spin()
    sis.stop()
Example #2
0
def main():
    rospy.init_node('learn_face_test')

    sm = smach.StateMachine(outcomes=['succeeded', 'preempted', 'aborted'])
    with sm:
        # it preper the name for learning

        smach.StateMachine.add('learn_face',
                               new_database_and_learn(
                                   learning_time=5,
                                   minConfidence=80,
                                   name_face="pepito",
                                   name_database='"following'),
                               transitions={
                                   'succeeded': 'succeeded',
                                   'aborted': 'aborted_info'
                               })
        # it prints the standard error
        smach.StateMachine.add('aborted_info',
                               learn_Face_error(),
                               transitions={
                                   'succeeded': 'succeeded',
                                   'aborted': 'aborted'
                               })

    # This is for the smach_viewer so we can see what is happening, rosrun smach_viewer smach_viewer.py it's cool!
    sis = smach_ros.IntrospectionServer('learn_face_introspection', sm,
                                        '/LFI_ROOT')
    sis.start()

    sm.execute()

    rospy.spin()
    sis.stop()
Example #3
0
    def __init__(self,learn_face=False):
        smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'],
                                    output_keys=['standard_error','in_learn_person'])
        self.learn_face = learn_face
        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': 'READ_TRACKER_TOPIC',
                                                'aborted': 'SAY_LIFTIME'})
            smach.StateMachine.add('SAY_LIFTIME',
                                   text_to_say(SAY_GO_MIDLE),
                                   transitions={'succeeded': 'CONTROL_TIME',
                                                'aborted': 'SAY_LIFTIME'})

            smach.StateMachine.add('CONTROL_TIME',
                                   control_time(),
                                   transitions={'succeeded': 'READ_TRACKER_TOPIC',
                                                'lif_time': 'SAY_LIFTIME'})

#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':'READ_TRACKER_TOPIC',
                                                '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.learn_face, self.follow_pub),
                                   transitions={'succeeded': 'STOP_LEARNING',
                                                'aborted': 'CONTROL_TIME','learn_face':'FACE_SAY'})
            
            smach.StateMachine.add('FACE_SAY',
                                   text_to_say(SAY_LEARN),
                                   transitions={'succeeded': 'LEARN_FACE','aborted':'LEARN_FACE'})
                        # it learns the person that we have to follow
            smach.StateMachine.add('LEARN_FACE',
                                   new_database_and_learn(learning_time=2, minConfidence=80, 
                                                          name_face="following", name_database="follow"),
                                   transitions={'succeeded': 'STOP_LEARNING',
                                                'aborted': 'CONTROL_TIME'})
            

            smach.StateMachine.add('STOP_LEARNING',
                                   text_to_say(SAY_FINISH),
                                   transitions={'succeeded': 'succeeded','aborted':'STOP_LEARNING'})
    def __init__(self,time_enroll=10):
        smach.StateMachine.__init__(self, outcomes=['succeeded', 'preempted', 'aborted'],
                                        input_keys=['name_face','delete_database'],
                                        output_keys=['name_face'])

        with self:
            self.userdata.name_face = ''
            self.userdata.asr_userSaid = ''
            self.userdata.grammar_name = ''
            
            # Ask for name
            smach.StateMachine.add(
                'listen_name',
                AskQuestionSM("Hi, what's your name?", GRAMMAR_NAME),
                transitions={'succeeded': 'prepare_name', 'aborted': 'ask_name_again', 
                'preempted': 'preempted'}) 
            
            # We prepare the name for face_detection 
            smach.StateMachine.add(
                "prepare_name",
                prepare_name(),
                transitions={'succeeded': 'say_start', 'aborted': 'ask_name_again', 
                'preempted': 'preempted'})  
            
            # Ask for name again
            smach.StateMachine.add(
                'ask_name_again',
                AskQuestionSM("Sorry, I don't understand you. Can you repeat your name, please?", GRAMMAR_NAME),
                transitions={'succeeded': 'prepare_name', 'aborted': 'aborted', 
                'preempted': 'preempted'}) 
           
            smach.StateMachine.add(
                'say_start',
                text_to_say("OK,  now i am going to enroll your  face, don't  move"),
                transitions={'succeeded': 'learn_face', 'aborted': 'aborted', 
                'preempted': 'preempted'}) 
            

            # Start learning
            smach.StateMachine.add(
                'learn_face',
                 new_database_and_learn(time_enroll),
                 transitions={'succeeded': 'prepare_say_name', 'aborted': 'aborted', 
                'preempted': 'preempted'}) 
            
            # Say learn name
            smach.StateMachine.add(
                'prepare_say_name',
                prepare_say_name(),
                transitions={'succeeded': 'say_name', 'aborted': 'aborted', 
                'preempted': 'preempted'}) 
            
            smach.StateMachine.add(
                'say_name',
                text_to_say(),
                transitions={'succeeded': 'succeeded', 'aborted': 'aborted', 
                'preempted': 'preempted'}) 
 def __init__(self):
     smach.StateMachine.__init__(self, ['succeeded', 'preempted', 'aborted'])
     #rospy.init_node("SM_GPSR_ORDERS")
     with self:
         
         smach.StateMachine.add(
                 'Stand_Still',
                 text_to_say(text="Please don't move for a moment",wait_before_speaking=0),
                 transitions={'succeeded': 'DataBase_and_Learn'})
         
         smach.StateMachine.add( 
                 'DataBase_and_Learn',
                 new_database_and_learn(name_face='referee', name_database='Soar'),
                 transitions={'succeeded': 'succeeded'})       
Example #6
0
    def __init__(self):
        smach.StateMachine.__init__(self,
                                    ['succeeded', 'preempted', 'aborted'])
        #rospy.init_node("SM_GPSR_ORDERS")
        with self:

            smach.StateMachine.add(
                'Stand_Still',
                text_to_say(text="Please don't move for a moment",
                            wait_before_speaking=0),
                transitions={'succeeded': 'DataBase_and_Learn'})

            smach.StateMachine.add('DataBase_and_Learn',
                                   new_database_and_learn(
                                       name_face='referee',
                                       name_database='Soar'),
                                   transitions={'succeeded': 'succeeded'})
Example #7
0
    def __init__(self, learn_face=False):
        smach.StateMachine.__init__(
            self, ['succeeded', 'preempted', 'aborted'],
            output_keys=['standard_error', 'in_learn_person'])
        self.learn_face = learn_face
        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': 'READ_TRACKER_TOPIC',
                                       'aborted': 'SAY_LIFTIME'
                                   })
            smach.StateMachine.add('SAY_LIFTIME',
                                   text_to_say(SAY_GO_MIDLE),
                                   transitions={
                                       'succeeded': 'CONTROL_TIME',
                                       'aborted': 'SAY_LIFTIME'
                                   })

            smach.StateMachine.add('CONTROL_TIME',
                                   control_time(),
                                   transitions={
                                       'succeeded': 'READ_TRACKER_TOPIC',
                                       'lif_time': 'SAY_LIFTIME'
                                   })

            #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': 'READ_TRACKER_TOPIC',
                    '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.learn_face, self.follow_pub),
                                   transitions={
                                       'succeeded': 'STOP_LEARNING',
                                       'aborted': 'CONTROL_TIME',
                                       'learn_face': 'FACE_SAY'
                                   })

            smach.StateMachine.add('FACE_SAY',
                                   text_to_say(SAY_LEARN),
                                   transitions={
                                       'succeeded': 'LEARN_FACE',
                                       'aborted': 'LEARN_FACE'
                                   })
            # it learns the person that we have to follow
            smach.StateMachine.add('LEARN_FACE',
                                   new_database_and_learn(
                                       learning_time=2,
                                       minConfidence=80,
                                       name_face="following",
                                       name_database="follow"),
                                   transitions={
                                       'succeeded': 'STOP_LEARNING',
                                       'aborted': 'CONTROL_TIME'
                                   })

            smach.StateMachine.add('STOP_LEARNING',
                                   text_to_say(SAY_FINISH),
                                   transitions={
                                       'succeeded': 'succeeded',
                                       'aborted': 'STOP_LEARNING'
                                   })
Example #8
0
    def __init__(self, time_enroll=10):
        smach.StateMachine.__init__(
            self,
            outcomes=['succeeded', 'preempted', 'aborted'],
            input_keys=['name_face', 'delete_database'],
            output_keys=['name_face'])

        with self:
            self.userdata.name_face = ''
            self.userdata.asr_userSaid = ''
            self.userdata.grammar_name = ''

            # Ask for name
            smach.StateMachine.add('listen_name',
                                   AskQuestionSM("Hi, what's your name?",
                                                 GRAMMAR_NAME),
                                   transitions={
                                       'succeeded': 'prepare_name',
                                       'aborted': 'ask_name_again',
                                       'preempted': 'preempted'
                                   })

            # We prepare the name for face_detection
            smach.StateMachine.add("prepare_name",
                                   prepare_name(),
                                   transitions={
                                       'succeeded': 'say_start',
                                       'aborted': 'ask_name_again',
                                       'preempted': 'preempted'
                                   })

            # Ask for name again
            smach.StateMachine.add(
                'ask_name_again',
                AskQuestionSM(
                    "Sorry, I don't understand you. Can you repeat your name, please?",
                    GRAMMAR_NAME),
                transitions={
                    'succeeded': 'prepare_name',
                    'aborted': 'aborted',
                    'preempted': 'preempted'
                })

            smach.StateMachine.add(
                'say_start',
                text_to_say(
                    "OK,  now i am going to enroll your  face, don't  move"),
                transitions={
                    'succeeded': 'learn_face',
                    'aborted': 'aborted',
                    'preempted': 'preempted'
                })

            # Start learning
            smach.StateMachine.add('learn_face',
                                   new_database_and_learn(time_enroll),
                                   transitions={
                                       'succeeded': 'prepare_say_name',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

            # Say learn name
            smach.StateMachine.add('prepare_say_name',
                                   prepare_say_name(),
                                   transitions={
                                       'succeeded': 'say_name',
                                       'aborted': 'aborted',
                                       'preempted': 'preempted'
                                   })

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