Example #1
0
    def create(self):
        # x:1103 y:529, x:321 y:227
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.Pose_Init = "IdlePose"
        _state_machine.userdata.Closed_Gripper_Width = 1
        _state_machine.userdata.Open_Gripper_Width = 255
        _state_machine.userdata.ID = 0
        _state_machine.userdata.PoseStart = "PoseStart"

        # Additional creation code can be added inside the following tags
        # [MANUAL_CREATE]

        # [/MANUAL_CREATE]

        # x:30 y:365
        _sm_look_in_the_eyes_0 = OperatableStateMachine(outcomes=['finished'])

        with _sm_look_in_the_eyes_0:
            # x:189 y:48
            OperatableStateMachine.add('wait 3',
                                       WaitState(wait_time=3),
                                       transitions={'done': 'say ready'},
                                       autonomy={'done': Autonomy.Off})

            # x:171 y:288
            OperatableStateMachine.add('reset head',
                                       SaraSetHeadAngle(pitch=0.1, yaw=0),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Off})

            # x:164 y:163
            OperatableStateMachine.add(
                'say ready',
                SaraSay(
                    sentence=
                    "Good, I see you want this bag. But, could you hand it to me please?",
                    input_keys=[],
                    emotion=0,
                    block=True),
                transitions={'done': 'reset head'},
                autonomy={'done': Autonomy.Off})

        # x:30 y:365
        _sm_look_at_it_1 = OperatableStateMachine(outcomes=['fail'],
                                                  input_keys=['position'])

        with _sm_look_at_it_1:
            # x:126 y:99
            OperatableStateMachine.add('look',
                                       LookAtPos(),
                                       transitions={
                                           'failed': 'look',
                                           'done': 'look'
                                       },
                                       autonomy={
                                           'failed': Autonomy.Off,
                                           'done': Autonomy.Off
                                       },
                                       remapping={'pos': 'position'})

        # x:30 y:365
        _sm_point_at_it_2 = OperatableStateMachine(outcomes=['finished'],
                                                   input_keys=['position'])

        with _sm_point_at_it_2:
            # x:112 y:202
            OperatableStateMachine.add(
                'Action_point_at',
                self.use_behavior(
                    Action_point_atSM,
                    'recevoir sac/Recevoir sac/look at bag/designate bag/point at it/Action_point_at'
                ),
                transitions={
                    'finished': 'Action_point_at',
                    'failed': 'Action_point_at'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={'targetPoint': 'position'})

        # x:30 y:365
        _sm_move_to_it_3 = OperatableStateMachine(outcomes=['arrived'],
                                                  input_keys=['position'])

        with _sm_move_to_it_3:
            # x:204 y:52
            OperatableStateMachine.add('set distance',
                                       SetKey(Value=1),
                                       transitions={'done': 'get pose'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'distance'})

            # x:211 y:185
            OperatableStateMachine.add('get pose',
                                       Get_Reacheable_Waypoint(),
                                       transitions={'done': 'move to bag'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={
                                           'pose_in': 'position',
                                           'distance': 'distance',
                                           'pose_out': 'pose'
                                       })

            # x:188 y:279
            OperatableStateMachine.add('move to bag',
                                       SaraMoveBase(reference="map"),
                                       transitions={
                                           'arrived': 'arrived',
                                           'failed': 'arrived'
                                       },
                                       autonomy={
                                           'arrived': Autonomy.Off,
                                           'failed': Autonomy.Off
                                       },
                                       remapping={'pose': 'pose'})

        # x:30 y:365, x:130 y:365, x:230 y:365, x:330 y:365
        _sm_designate_bag_4 = ConcurrencyContainer(
            outcomes=['finished'],
            input_keys=['position'],
            conditions=[('finished', [('look at it', 'fail')]),
                        ('finished', [('point at it', 'finished')]),
                        ('finished', [('move to it', 'arrived')])])

        with _sm_designate_bag_4:
            # x:499 y:118
            OperatableStateMachine.add('move to it',
                                       _sm_move_to_it_3,
                                       transitions={'arrived': 'finished'},
                                       autonomy={'arrived': Autonomy.Inherit},
                                       remapping={'position': 'position'})

            # x:239 y:126
            OperatableStateMachine.add('point at it',
                                       _sm_point_at_it_2,
                                       transitions={'finished': 'finished'},
                                       autonomy={'finished': Autonomy.Inherit},
                                       remapping={'position': 'position'})

            # x:45 y:121
            OperatableStateMachine.add('look at it',
                                       _sm_look_at_it_1,
                                       transitions={'fail': 'finished'},
                                       autonomy={'fail': Autonomy.Inherit},
                                       remapping={'position': 'position'})

        # x:30 y:365, x:130 y:365, x:230 y:365, x:330 y:365
        _sm_receive_it_5 = ConcurrencyContainer(
            outcomes=['finished', 'failed'],
            input_keys=['Closed_Gripper_Width', 'Open_Gripper_Width'],
            conditions=[('finished', [('Action_Receive_Bag', 'finished'),
                                      ('look in the eyes', 'finished')]),
                        ('failed', [('Action_Receive_Bag', 'failed')])])

        with _sm_receive_it_5:
            # x:30 y:149
            OperatableStateMachine.add(
                'Action_Receive_Bag',
                self.use_behavior(
                    Action_Receive_BagSM,
                    'recevoir sac/Recevoir sac/receive it/Action_Receive_Bag'),
                transitions={
                    'finished': 'finished',
                    'failed': 'failed'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={
                    'Closed_Gripper_Width': 'Closed_Gripper_Width',
                    'Open_Gripper_Width': 'Open_Gripper_Width',
                    'Closed_Gripper_Width': 'Closed_Gripper_Width'
                })

            # x:259 y:150
            OperatableStateMachine.add('look in the eyes',
                                       _sm_look_in_the_eyes_0,
                                       transitions={'finished': 'finished'},
                                       autonomy={'finished': Autonomy.Inherit})

        # x:30 y:322
        _sm_look_at_bag_6 = OperatableStateMachine(outcomes=['finished'])

        with _sm_look_at_bag_6:
            # x:35 y:70
            OperatableStateMachine.add('setName',
                                       SetKey(Value="person"),
                                       transitions={'done': 'say 1'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'personName'})

            # x:233 y:109
            OperatableStateMachine.add(
                'say 1',
                SaraSay(sentence="Please, point at the bag you want.",
                        input_keys=[],
                        emotion=0,
                        block=True),
                transitions={'done': 'list'},
                autonomy={'done': Autonomy.Off})

            # x:28 y:193
            OperatableStateMachine.add('list',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'calc',
                                           'none_found': 'list'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'personName',
                                           'entity_list': 'entity_list',
                                           'number': 'number'
                                       })

            # x:230 y:363
            OperatableStateMachine.add(
                'get bag position from pointing',
                GetPointedPositionOnPlane(planeHeight=0.2),
                transitions={
                    'done': 'designate bag',
                    'not_pointing': 'say 1',
                    'pointing_up': 'say 1',
                    'failed': 'list'
                },
                autonomy={
                    'done': Autonomy.Off,
                    'not_pointing': Autonomy.Off,
                    'pointing_up': Autonomy.Off,
                    'failed': Autonomy.Off
                },
                remapping={
                    'entity': 'entity',
                    'position': 'position'
                })

            # x:34 y:362
            OperatableStateMachine.add(
                'calc',
                CalculationState(calculation=lambda x: x[0]),
                transitions={'done': 'get bag position from pointing'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'entity_list',
                    'output_value': 'entity'
                })

            # x:241 y:554
            OperatableStateMachine.add('designate bag',
                                       _sm_designate_bag_4,
                                       transitions={'finished': 'finished'},
                                       autonomy={'finished': Autonomy.Inherit},
                                       remapping={'position': 'position'})

        # x:30 y:365, x:182 y:454
        _sm_recevoir_sac_7 = OperatableStateMachine(
            outcomes=['failed', 'done'],
            input_keys=['Closed_Gripper_Width', 'Open_Gripper_Width'])

        with _sm_recevoir_sac_7:
            # x:66 y:44
            OperatableStateMachine.add('look at bag',
                                       _sm_look_at_bag_6,
                                       transitions={'finished': 'close'},
                                       autonomy={'finished': Autonomy.Inherit})

            # x:41 y:267
            OperatableStateMachine.add('receive it',
                                       _sm_receive_it_5,
                                       transitions={
                                           'finished': 'sayCAr',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       },
                                       remapping={
                                           'Closed_Gripper_Width':
                                           'Closed_Gripper_Width',
                                           'Open_Gripper_Width':
                                           'Open_Gripper_Width'
                                       })

            # x:81 y:157
            OperatableStateMachine.add(
                'close',
                SetGripperState(width=0, effort=0),
                transitions={
                    'object': 'receive it',
                    'no_object': 'receive it'
                },
                autonomy={
                    'object': Autonomy.Off,
                    'no_object': Autonomy.Off
                },
                remapping={'object_size': 'object_size'})

            # x:139 y:334
            OperatableStateMachine.add(
                'sayCAr',
                SaraSay(sentence="PLease tell me when we get to the car.",
                        input_keys=[],
                        emotion=0,
                        block=True),
                transitions={'done': 'done'},
                autonomy={'done': Autonomy.Off})

        # x:30 y:365
        _sm_listen_8 = OperatableStateMachine(outcomes=['done'])

        with _sm_listen_8:
            # x:50 y:76
            OperatableStateMachine.add(
                'SayFollow',
                SaraSay(
                    sentence=
                    "I will follow you to the car now. Tell me when we get to the car.",
                    input_keys=[],
                    emotion=0,
                    block=False),
                transitions={'done': 'LIsten'},
                autonomy={'done': Autonomy.Off})

            # x:161 y:148
            OperatableStateMachine.add('LIsten',
                                       GetSpeech(watchdog=10),
                                       transitions={
                                           'done': 'Listen2',
                                           'nothing': 'LIsten',
                                           'fail': 'LIsten'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'nothing': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={'words': 'words'})

            # x:201 y:256
            OperatableStateMachine.add(
                'Listen2',
                RegexTester(regex=".*((car)|(here it is)|(now)).*"),
                transitions={
                    'true': 'done',
                    'false': 'Listen2'
                },
                autonomy={
                    'true': Autonomy.Off,
                    'false': Autonomy.Off
                },
                remapping={
                    'text': 'words',
                    'result': 'result'
                })

        # x:520 y:327
        _sm_follow_9 = OperatableStateMachine(outcomes=['failed'],
                                              input_keys=['ID'])

        with _sm_follow_9:
            # x:128 y:127
            OperatableStateMachine.add(
                'Action_follow',
                self.use_behavior(Action_followSM,
                                  'Follow and listen/follow/Action_follow'),
                transitions={'failed': 'set name'},
                autonomy={'failed': Autonomy.Inherit},
                remapping={'ID': 'ID'})

            # x:288 y:346
            OperatableStateMachine.add('list people',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'get first ID',
                                           'none_found': 'failed'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'name',
                                           'entity_list': 'entity_list',
                                           'number': 'number'
                                       })

            # x:109 y:334
            OperatableStateMachine.add(
                'get first ID',
                CalculationState(calculation=lambda x: x[0].ID),
                transitions={'done': 'Action_follow'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'entity_list',
                    'output_value': 'ID'
                })

            # x:349 y:116
            OperatableStateMachine.add('set name',
                                       SetKey(Value="person"),
                                       transitions={'done': 'list people'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'name'})

        # x:30 y:365, x:130 y:365, x:230 y:365, x:330 y:365, x:430 y:365
        _sm_recevoir_sac_10 = ConcurrencyContainer(
            outcomes=['failed', 'done'],
            input_keys=['Closed_Gripper_Width', 'Open_Gripper_Width'],
            conditions=[('failed', [('Recevoir sac', 'failed')]),
                        ('done', [('Recevoir sac', 'done')]),
                        ('done', [('LookAtClosest', 'failed')])])

        with _sm_recevoir_sac_10:
            # x:30 y:40
            OperatableStateMachine.add('Recevoir sac',
                                       _sm_recevoir_sac_7,
                                       transitions={
                                           'failed': 'failed',
                                           'done': 'done'
                                       },
                                       autonomy={
                                           'failed': Autonomy.Inherit,
                                           'done': Autonomy.Inherit
                                       },
                                       remapping={
                                           'Closed_Gripper_Width':
                                           'Closed_Gripper_Width',
                                           'Open_Gripper_Width':
                                           'Open_Gripper_Width'
                                       })

            # x:234 y:114
            OperatableStateMachine.add('LookAtClosest',
                                       self.use_behavior(
                                           LookAtClosestSM,
                                           'recevoir sac/LookAtClosest'),
                                       transitions={'failed': 'done'},
                                       autonomy={'failed': Autonomy.Inherit})

        # x:390 y:296, x:111 y:269, x:230 y:365, x:542 y:339, x:465 y:331, x:530 y:380
        _sm_follow_and_listen_11 = ConcurrencyContainer(
            outcomes=['done', 'failed'],
            input_keys=['ID'],
            conditions=[('done', [('Listen', 'done')]),
                        ('failed', [('follow', 'failed')]),
                        ('done', [('continue', 'true')]),
                        ('done', [('continue', 'false')])])

        with _sm_follow_and_listen_11:
            # x:132 y:90
            OperatableStateMachine.add('follow',
                                       _sm_follow_9,
                                       transitions={'failed': 'failed'},
                                       autonomy={'failed': Autonomy.Inherit},
                                       remapping={'ID': 'ID'})

            # x:356 y:105
            OperatableStateMachine.add('Listen',
                                       _sm_listen_8,
                                       transitions={'done': 'done'},
                                       autonomy={'done': Autonomy.Inherit})

            # x:485 y:162
            OperatableStateMachine.add('continue',
                                       ContinueButton(),
                                       transitions={
                                           'true': 'done',
                                           'false': 'done'
                                       },
                                       autonomy={
                                           'true': Autonomy.Off,
                                           'false': Autonomy.Off
                                       })

        # x:76 y:535
        _sm_getidope_12 = OperatableStateMachine(outcomes=['done'],
                                                 output_keys=['ID'])

        with _sm_getidope_12:
            # x:55 y:63
            OperatableStateMachine.add('Person',
                                       SetKey(Value="person"),
                                       transitions={'done': 'GEtId'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'name'})

            # x:43 y:180
            OperatableStateMachine.add('GEtId',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'ID',
                                           'none_found': 'GEtId'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'name',
                                           'entity_list': 'Entities_list',
                                           'number': 'number'
                                       })

            # x:52 y:290
            OperatableStateMachine.add(
                'ID',
                CalculationState(calculation=lambda x: x[0].ID),
                transitions={'done': 'setID'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'Entities_list',
                    'output_value': 'ID'
                })

            # x:37 y:399
            OperatableStateMachine.add(
                'setID',
                SetRosParam(ParamName="behavior/Operator/Id"),
                transitions={'done': 'done'},
                autonomy={'done': Autonomy.Off},
                remapping={'Value': 'ID'})

        with _state_machine:
            # x:38 y:33
            OperatableStateMachine.add('continue',
                                       ContinueButton(),
                                       transitions={
                                           'true': 'GEtPose',
                                           'false': 'GEtPose'
                                       },
                                       autonomy={
                                           'true': Autonomy.Off,
                                           'false': Autonomy.Off
                                       })

            # x:35 y:351
            OperatableStateMachine.add(
                'ImHere',
                SaraSay(sentence="I am ready to carry your luggage!",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'recevoir sac'},
                autonomy={'done': Autonomy.Off})

            # x:28 y:539
            OperatableStateMachine.add(
                'GetIDOpe',
                _sm_getidope_12,
                transitions={'done': 'Follow and listen'},
                autonomy={'done': Autonomy.Inherit},
                remapping={'ID': 'ID'})

            # x:220 y:536
            OperatableStateMachine.add('Follow and listen',
                                       _sm_follow_and_listen_11,
                                       transitions={
                                           'done': 'Action_Give_Back_Bag',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       },
                                       remapping={'ID': 'ID'})

            # x:411 y:525
            OperatableStateMachine.add('Action_Give_Back_Bag',
                                       self.use_behavior(
                                           Action_Give_Back_BagSM,
                                           'Action_Give_Back_Bag'),
                                       transitions={
                                           'finished': 'GoBackHome',
                                           'failed': 'Action_Give_Back_Bag'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       })

            # x:16 y:206
            OperatableStateMachine.add('Init_Sequence',
                                       self.use_behavior(
                                           Init_SequenceSM, 'Init_Sequence'),
                                       transitions={
                                           'finished': 'move head up',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       })

            # x:634 y:522
            OperatableStateMachine.add(
                'GoBackHome',
                SaraSay(sentence="I will go back home now. Have a good day!",
                        input_keys=[],
                        emotion=0,
                        block=True),
                transitions={'done': 'setarm'},
                autonomy={'done': Autonomy.Off})

            # x:922 y:519
            OperatableStateMachine.add('Action_Move',
                                       self.use_behavior(
                                           Action_MoveSM, 'Action_Move'),
                                       transitions={
                                           'finished': 'finished',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       },
                                       remapping={'pose': 'Origin'})

            # x:35 y:281
            OperatableStateMachine.add('move head up',
                                       SaraSetHeadAngle(pitch=0.1, yaw=0),
                                       transitions={'done': 'ImHere'},
                                       autonomy={'done': Autonomy.Off})

            # x:35 y:427
            OperatableStateMachine.add('recevoir sac',
                                       _sm_recevoir_sac_10,
                                       transitions={
                                           'failed': 'failed',
                                           'done': 'GetIDOpe'
                                       },
                                       autonomy={
                                           'failed': Autonomy.Inherit,
                                           'done': Autonomy.Inherit
                                       },
                                       remapping={
                                           'Closed_Gripper_Width':
                                           'Closed_Gripper_Width',
                                           'Open_Gripper_Width':
                                           'Open_Gripper_Width'
                                       })

            # x:770 y:526
            OperatableStateMachine.add('setarm',
                                       RunTrajectory(file="sac_transport",
                                                     duration=0),
                                       transitions={'done': 'Action_Move'},
                                       autonomy={'done': Autonomy.Off})

            # x:24 y:134
            OperatableStateMachine.add('GEtPose',
                                       Get_Robot_Pose(),
                                       transitions={'done': 'Init_Sequence'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'pose': 'Origin'})

        return _state_machine
Example #2
0
    def create(self):
        # x:1474 y:331, x:56 y:575
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.half_turn = 3.1416
        _state_machine.userdata.person = "person"
        _state_machine.userdata.operator_param = "behavior/Operaror/Id"
        _state_machine.userdata.join = ["Move", "spr/initialpose"]
        _state_machine.userdata.leave = ["Move", "door2/exit"]

        # Additional creation code can be added inside the following tags
        # [MANUAL_CREATE]

        # [/MANUAL_CREATE]

        # x:1182 y:163
        _sm_rotate_0 = OperatableStateMachine(outcomes=['finished'])

        with _sm_rotate_0:
            # x:103 y:61
            OperatableStateMachine.add('Look Left',
                                       SaraSetHeadAngle(pitch=-0.35, yaw=0.5),
                                       transitions={'done': 'Rotate Left'},
                                       autonomy={'done': Autonomy.Off})

            # x:794 y:54
            OperatableStateMachine.add('Look Right',
                                       SaraSetHeadAngle(pitch=-0.35, yaw=-0.5),
                                       transitions={'done': 'Rotate Right'},
                                       autonomy={'done': Autonomy.Off})

            # x:325 y:61
            OperatableStateMachine.add('Rotate Left',
                                       WaitState(wait_time=8),
                                       transitions={'done': 'Look Center'},
                                       autonomy={'done': Autonomy.Off})

            # x:961 y:65
            OperatableStateMachine.add('Rotate Right',
                                       WaitState(wait_time=4),
                                       transitions={'done': 'Look Center 2'},
                                       autonomy={'done': Autonomy.Off})

            # x:1115 y:62
            OperatableStateMachine.add('Look Center 2',
                                       SaraSetHeadAngle(pitch=0.1, yaw=0),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Off})

            # x:484 y:54
            OperatableStateMachine.add('Look Center',
                                       SaraSetHeadAngle(pitch=-0.35, yaw=0),
                                       transitions={'done': 'Rotate Center'},
                                       autonomy={'done': Autonomy.Off})

            # x:657 y:49
            OperatableStateMachine.add('Rotate Center',
                                       WaitState(wait_time=4),
                                       transitions={'done': 'Look Right'},
                                       autonomy={'done': Autonomy.Off})

        # x:30 y:458
        _sm_follow_head_1 = OperatableStateMachine(outcomes=['end'],
                                                   input_keys=['person'])

        with _sm_follow_head_1:
            # x:214 y:48
            OperatableStateMachine.add('list all entities',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'Get Nearest',
                                           'none_found': 'list all entities'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'person',
                                           'entity_list': 'entity_list',
                                           'number': 'number'
                                       })

            # x:456 y:51
            OperatableStateMachine.add(
                'Get Nearest',
                CalculationState(calculation=lambda x: x[0].ID),
                transitions={'done': 'look'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'entity_list',
                    'output_value': 'ID'
                })

            # x:291 y:177
            OperatableStateMachine.add(
                'look',
                KeepLookingAt(),
                transitions={'failed': 'list all entities'},
                autonomy={'failed': Autonomy.Off},
                remapping={'ID': 'ID'})

        # x:12 y:125, x:1130 y:515
        _sm_nlu_2 = OperatableStateMachine(outcomes=['finished', 'failed'])

        with _sm_nlu_2:
            # x:156 y:37
            OperatableStateMachine.add(
                'say ask',
                SaraSay(sentence="You can ask me your questions.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Loop Questions'},
                autonomy={'done': Autonomy.Off})

            # x:1091 y:84
            OperatableStateMachine.add('Listen',
                                       GetSpeech(watchdog=10),
                                       transitions={
                                           'done': 'Engine',
                                           'nothing': 'Listen',
                                           'fail': 'Listen'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'nothing': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={'words': 'sentence'})

            # x:1324 y:110
            OperatableStateMachine.add('Engine',
                                       SaraNLUspr(),
                                       transitions={
                                           'understood': 'Say_Answer',
                                           'not_understood': 'Listen',
                                           'fail': 'Listen'
                                       },
                                       autonomy={
                                           'understood': Autonomy.Off,
                                           'not_understood': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={
                                           'sentence': 'sentence',
                                           'answer': 'answer'
                                       })

            # x:632 y:77
            OperatableStateMachine.add(
                'Select Story',
                CalculationState(calculation=lambda x: x + 6),
                transitions={'done': 'Set_a_step'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'index',
                    'output_value': 'story'
                })

            # x:874 y:78
            OperatableStateMachine.add('Set_a_step',
                                       Set_a_step(step=1),
                                       transitions={'done': 'Listen'},
                                       autonomy={'done': Autonomy.Off})

            # x:398 y:81
            OperatableStateMachine.add('Loop Questions',
                                       ForLoop(repeat=5),
                                       transitions={
                                           'do': 'Select Story',
                                           'end': 'loop step'
                                       },
                                       autonomy={
                                           'do': Autonomy.Off,
                                           'end': Autonomy.Off
                                       },
                                       remapping={'index': 'index'})

            # x:439 y:252
            OperatableStateMachine.add(
                'Say Blind Game',
                SaraSay(sentence="Let's play the blind game !",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Loop Questions'},
                autonomy={'done': Autonomy.Off})

            # x:189 y:193
            OperatableStateMachine.add('loop step',
                                       ForLoop(repeat=1),
                                       transitions={
                                           'do': 'Say Blind Game',
                                           'end': 'finished'
                                       },
                                       autonomy={
                                           'do': Autonomy.Off,
                                           'end': Autonomy.Off
                                       },
                                       remapping={'index': 'index'})

            # x:721 y:205
            OperatableStateMachine.add('Say_Answer',
                                       SaraSay(sentence=lambda x: str(x),
                                               input_keys=[],
                                               emotion=0,
                                               block=True),
                                       transitions={'done': 'Loop Questions'},
                                       autonomy={'done': Autonomy.Off})

        # x:817 y:123, x:130 y:458
        _sm_analyse_crowd_3 = OperatableStateMachine(
            outcomes=['finished', 'error'])

        with _sm_analyse_crowd_3:
            # x:87 y:97
            OperatableStateMachine.add('clear database',
                                       WonderlandClearPeoples(),
                                       transitions={
                                           'done': 'Rotate',
                                           'error': 'error'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'error': Autonomy.Off
                                       })

            # x:531 y:112
            OperatableStateMachine.add('Add Update Persons',
                                       WonderlandAddUpdatePeople(),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Off})

            # x:311 y:97
            OperatableStateMachine.add(
                'Rotate',
                _sm_rotate_0,
                transitions={'finished': 'Add Update Persons'},
                autonomy={'finished': Autonomy.Inherit})

        # x:1203 y:11, x:1006 y:366
        _sm_init_scenario_4 = OperatableStateMachine(
            outcomes=['done', 'error'])

        with _sm_init_scenario_4:
            # x:30 y:42
            OperatableStateMachine.add(
                'Generate Vizbox Story',
                Set_Story(titre="Speech and Person Recognition",
                          storyline=[
                              "Waiting Begining", "Join Game Room",
                              "Waiting Crowd Placement", "Analysing Crowd",
                              "Begin Game", "Find Operator", "Question 1",
                              "Question 2", "Question 3", "Question 4",
                              "Question 5", "Leave Arena"
                          ]),
                transitions={'done': 'Set Story Step'},
                autonomy={'done': Autonomy.Off})

            # x:559 y:44
            OperatableStateMachine.add('WaitForBegining',
                                       ContinueButton(),
                                       transitions={
                                           'true': 'Reset Persons',
                                           'false': 'Reset Persons'
                                       },
                                       autonomy={
                                           'true': Autonomy.Off,
                                           'false': Autonomy.Off
                                       })

            # x:807 y:61
            OperatableStateMachine.add('Reset Persons',
                                       WonderlandClearPeoples(),
                                       transitions={
                                           'done': 'done',
                                           'error': 'error'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'error': Autonomy.Off
                                       })

            # x:247 y:49
            OperatableStateMachine.add('Set Story Step',
                                       Set_a_step(step=0),
                                       transitions={'done': 'setIDLE'},
                                       autonomy={'done': Autonomy.Off})

            # x:388 y:208
            OperatableStateMachine.add('Reset Arm',
                                       MoveitMove(move=True,
                                                  waitForExecution=True,
                                                  group="RightArm"),
                                       transitions={
                                           'done': 'Reset Persons',
                                           'failed': 'error'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'failed': Autonomy.Off
                                       },
                                       remapping={'target': 'target'})

            # x:427 y:40
            OperatableStateMachine.add('setIDLE',
                                       SetKey(Value="IdlePose"),
                                       transitions={'done': 'Reset Arm'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'target'})

        # x:30 y:458, x:230 y:458
        _sm_join_area_5 = OperatableStateMachine(
            outcomes=['failed', 'finished'], input_keys=['join'])

        with _sm_join_area_5:
            # x:95 y:40
            OperatableStateMachine.add(
                'Say Join Area',
                SaraSay(sentence="I will join the playing room !",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Join Arena'},
                autonomy={'done': Autonomy.Off})

            # x:92 y:134
            OperatableStateMachine.add(
                'Join Arena',
                self.use_behavior(sara_flexbe_behaviors__ActionWrapper_MoveSM,
                                  'Join Area/Join Arena'),
                transitions={
                    'finished': 'finished',
                    'failed': 'failed',
                    'critical_fail': 'failed'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit,
                    'critical_fail': Autonomy.Inherit
                },
                remapping={'Action': 'join'})

        # x:489 y:56, x:604 y:278
        _sm_waiting_and_turn_6 = OperatableStateMachine(
            outcomes=['finished', 'failed'], input_keys=['half_turn'])

        with _sm_waiting_and_turn_6:
            # x:50 y:51
            OperatableStateMachine.add(
                'Want Play',
                SaraSay(sentence="Hum, I want to play riddles !",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Wait 10s'},
                autonomy={'done': Autonomy.Off})

            # x:272 y:121
            OperatableStateMachine.add(
                'action_turn',
                self.use_behavior(sara_flexbe_behaviors__action_turnSM,
                                  'Waiting And Turn/action_turn'),
                transitions={
                    'finished': 'finished',
                    'failed': 'Cant turn'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={'rotation': 'half_turn'})

            # x:437 y:240
            OperatableStateMachine.add('Cant turn',
                                       SaraSay(sentence="I can't turn !",
                                               input_keys=[],
                                               emotion=1,
                                               block=True),
                                       transitions={'done': 'failed'},
                                       autonomy={'done': Autonomy.Off})

            # x:63 y:178
            OperatableStateMachine.add(
                'Wait 10s',
                WaitState(wait_time=10),
                transitions={'done': 'Look In Front Of'},
                autonomy={'done': Autonomy.Off})

            # x:61 y:260
            OperatableStateMachine.add('Look In Front Of',
                                       SaraSetHeadAngle(pitch=0, yaw=0),
                                       transitions={'done': 'action_turn'},
                                       autonomy={'done': Autonomy.Off})

        # x:472 y:69, x:476 y:113, x:470 y:196, x:330 y:458, x:430 y:458
        _sm_questions_7 = ConcurrencyContainer(
            outcomes=['finished', 'failed'],
            input_keys=['person'],
            conditions=[('finished', [('NLU', 'finished')]),
                        ('failed', [('NLU', 'failed')]),
                        ('finished', [('Follow Head', 'end')])])

        with _sm_questions_7:
            # x:85 y:58
            OperatableStateMachine.add('NLU',
                                       _sm_nlu_2,
                                       transitions={
                                           'finished': 'finished',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       })

            # x:84 y:185
            OperatableStateMachine.add('Follow Head',
                                       _sm_follow_head_1,
                                       transitions={'end': 'finished'},
                                       autonomy={'end': Autonomy.Inherit},
                                       remapping={'person': 'person'})

        # x:283 y:294, x:60 y:571
        _sm_find_operator_8 = OperatableStateMachine(
            outcomes=['not_found', 'done'],
            input_keys=['person', 'operator_param'])

        with _sm_find_operator_8:
            # x:51 y:40
            OperatableStateMachine.add(
                'Ask Player',
                SaraSay(sentence="Who wan't to play with me ?",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Wait Operator'},
                autonomy={'done': Autonomy.Off})

            # x:39 y:297
            OperatableStateMachine.add(
                'Get operator id',
                CalculationState(calculation=lambda x: x.entities[0].face.id),
                transitions={'done': 'Set Operator Id'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'entity_list',
                    'output_value': 'operator'
                })

            # x:33 y:384
            OperatableStateMachine.add('Set Operator Id',
                                       SetRosParamKey(),
                                       transitions={'done': 'Operator Id'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={
                                           'Value': 'operator_param',
                                           'ParamName': 'operator'
                                       })

            # x:46 y:117
            OperatableStateMachine.add('Wait Operator',
                                       WaitState(wait_time=6),
                                       transitions={'done': 'Find Operator'},
                                       autonomy={'done': Autonomy.Off})

            # x:35 y:495
            OperatableStateMachine.add('Operator Id',
                                       LogKeyState(
                                           text="Operator find. Id: {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'done'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'operator'})

            # x:30 y:205
            OperatableStateMachine.add('Find Operator',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'Get operator id',
                                           'none_found': 'Find Operator'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'person',
                                           'entity_list': 'entity_list',
                                           'number': 'number'
                                       })

        # x:703 y:198, x:88 y:199
        _sm_tell_basic_stats_9 = OperatableStateMachine(
            outcomes=['finished', 'failed'])

        with _sm_tell_basic_stats_9:
            # x:50 y:40
            OperatableStateMachine.add('wait',
                                       WaitState(wait_time=0),
                                       transitions={'done': 'GetPeopleStats'},
                                       autonomy={'done': Autonomy.Off})

            # x:218 y:43
            OperatableStateMachine.add('GetPeopleStats',
                                       WonderlandGetPersonStat(),
                                       transitions={
                                           'done': 'GenerateSentence',
                                           'none': 'Nobody',
                                           'error': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'none': Autonomy.Off,
                                           'error': Autonomy.Off
                                       },
                                       remapping={
                                           'women': 'women',
                                           'men': 'men',
                                           'others': 'others'
                                       })

            # x:466 y:46
            OperatableStateMachine.add('Nobody',
                                       SaraSay(
                                           sentence="There is nobody here !",
                                           input_keys=[],
                                           emotion=1,
                                           block=True),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Off})

            # x:162 y:243
            OperatableStateMachine.add(
                'GenerateSentence',
                FlexibleCalculationState(calculation=lambda x: "There is " +
                                         str(x[0] + x[1] + x[2]) + " persons.",
                                         input_keys=['men', 'women',
                                                     'others']),
                transitions={'done': 'Tell_Stats'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'men': 'men',
                    'women': 'women',
                    'others': 'others',
                    'output_value': 'sentence'
                })

            # x:151 y:345
            OperatableStateMachine.add(
                'Generate Sentence 2',
                FlexibleCalculationState(
                    calculation=lambda x: "I recognize " + str(x[
                        1]) + " women and " + str(x[0]) + " men.",
                    input_keys=['men', 'women', 'others']),
                transitions={'done': 'Tell_Stats 2'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'men': 'men',
                    'women': 'women',
                    'others': 'others',
                    'output_value': 'sentence'
                })

            # x:380 y:172
            OperatableStateMachine.add(
                'Tell_Stats',
                SaraSay(sentence=lambda x: x,
                        input_keys=[],
                        emotion=0,
                        block=True),
                transitions={'done': 'Generate Sentence 2'},
                autonomy={'done': Autonomy.Off})

            # x:409 y:276
            OperatableStateMachine.add('Tell_Stats 2',
                                       SaraSay(sentence=lambda x: x,
                                               input_keys=[],
                                               emotion=0,
                                               block=True),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Off})

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add('continue',
                                       ContinueButton(),
                                       transitions={
                                           'true': 'Init Scenario',
                                           'false': 'Init Scenario'
                                       },
                                       autonomy={
                                           'true': Autonomy.Off,
                                           'false': Autonomy.Off
                                       })

            # x:715 y:127
            OperatableStateMachine.add('Tell basic stats',
                                       _sm_tell_basic_stats_9,
                                       transitions={
                                           'finished': 'Set Find Operator',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       })

            # x:899 y:126
            OperatableStateMachine.add('Find Operator',
                                       _sm_find_operator_8,
                                       transitions={
                                           'not_found': 'Find Operator',
                                           'done': 'Questions'
                                       },
                                       autonomy={
                                           'not_found': Autonomy.Inherit,
                                           'done': Autonomy.Inherit
                                       },
                                       remapping={
                                           'person': 'person',
                                           'operator_param': 'operator_param'
                                       })

            # x:1120 y:126
            OperatableStateMachine.add('Questions',
                                       _sm_questions_7,
                                       transitions={
                                           'finished': 'set head',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       },
                                       remapping={'person': 'person'})

            # x:343 y:49
            OperatableStateMachine.add(
                'Set Story Waiting',
                Set_a_step(step=2),
                transitions={'done': 'Waiting And Turn'},
                autonomy={'done': Autonomy.Off})

            # x:532 y:48
            OperatableStateMachine.add('Set Analyse',
                                       Set_a_step(step=3),
                                       transitions={'done': 'Analyse Crowd'},
                                       autonomy={'done': Autonomy.Off})

            # x:696 y:47
            OperatableStateMachine.add(
                'Set Begin Game',
                Set_a_step(step=4),
                transitions={'done': 'Tell basic stats'},
                autonomy={'done': Autonomy.Off})

            # x:899 y:49
            OperatableStateMachine.add('Set Find Operator',
                                       Set_a_step(step=5),
                                       transitions={'done': 'Find Operator'},
                                       autonomy={'done': Autonomy.Off})

            # x:332 y:127
            OperatableStateMachine.add('Waiting And Turn',
                                       _sm_waiting_and_turn_6,
                                       transitions={
                                           'finished': 'Set Analyse',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit
                                       },
                                       remapping={'half_turn': 'half_turn'})

            # x:1333 y:232
            OperatableStateMachine.add('Set Go Out',
                                       Set_a_step(step=11),
                                       transitions={'done': 'Say And Of Game'},
                                       autonomy={'done': Autonomy.Off})

            # x:1517 y:148
            OperatableStateMachine.add(
                'Leave Arena',
                self.use_behavior(sara_flexbe_behaviors__ActionWrapper_MoveSM,
                                  'Leave Arena'),
                transitions={
                    'finished': 'finished',
                    'failed': 'finished',
                    'critical_fail': 'finished'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit,
                    'critical_fail': Autonomy.Inherit
                },
                remapping={'Action': 'leave'})

            # x:176 y:42
            OperatableStateMachine.add(
                'Set Join',
                Set_a_step(step=1),
                transitions={'done': 'Set Story Waiting'},
                autonomy={'done': Autonomy.Off})

            # x:177 y:120
            OperatableStateMachine.add('Join Area',
                                       _sm_join_area_5,
                                       transitions={
                                           'failed': 'failed',
                                           'finished': 'Set Story Waiting'
                                       },
                                       autonomy={
                                           'failed': Autonomy.Inherit,
                                           'finished': Autonomy.Inherit
                                       },
                                       remapping={'join': 'join'})

            # x:1302 y:140
            OperatableStateMachine.add(
                'Say And Of Game',
                SaraSay(
                    sentence=
                    "The game is finished. I will leave the arena. Thank you for playing with me.",
                    input_keys=[],
                    emotion=1,
                    block=True),
                transitions={'done': 'Leave Arena'},
                autonomy={'done': Autonomy.Off})

            # x:1120 y:237
            OperatableStateMachine.add('set head',
                                       SaraSetHeadAngle(pitch=-0.2, yaw=0),
                                       transitions={'done': 'Set Go Out'},
                                       autonomy={'done': Autonomy.Off})

            # x:34 y:130
            OperatableStateMachine.add('Init Scenario',
                                       _sm_init_scenario_4,
                                       transitions={
                                           'done': 'Set Join',
                                           'error': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Inherit,
                                           'error': Autonomy.Inherit
                                       })

            # x:517 y:124
            OperatableStateMachine.add('Analyse Crowd',
                                       _sm_analyse_crowd_3,
                                       transitions={
                                           'finished': 'Set Begin Game',
                                           'error': 'failed'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'error': Autonomy.Inherit
                                       })

        return _state_machine
    def create(self):
        # x:391 y:586, x:438 y:304
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.StartPosition = "Operator"
        _state_machine.userdata.PositionBras = "IdlePose"
        _state_machine.userdata.title = "GPSR"
        _state_machine.userdata.EntryName = "door1/enter"
        _state_machine.userdata.ExitName = "door2/exit"

        # Additional creation code can be added inside the following tags
        # [MANUAL_CREATE]

        # [/MANUAL_CREATE]

        # x:135 y:542, x:527 y:395
        _sm_validate_0 = OperatableStateMachine(outcomes=['done', 'bad'],
                                                input_keys=['sentence'])

        with _sm_validate_0:
            # x:56 y:62
            OperatableStateMachine.add(
                'Say_Command',
                SaraSay(
                    sentence=lambda x: "I heard. " + x + ". Is that correct?",
                    input_keys=[],
                    emotion=0,
                    block=True),
                transitions={'done': 'get speech'},
                autonomy={'done': Autonomy.Off})

            # x:44 y:165
            OperatableStateMachine.add('get speech',
                                       GetSpeech(watchdog=10),
                                       transitions={
                                           'done': 'is yes',
                                           'nothing': 'say repeate',
                                           'fail': 'say repeate'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'nothing': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={'words': 'words'})

            # x:91 y:307
            OperatableStateMachine.add(
                'is yes',
                CheckConditionState(predicate=lambda x: "yes" in x or "right"
                                    in x or "sure" in x),
                transitions={
                    'true': 'done',
                    'false': 'say repeate'
                },
                autonomy={
                    'true': Autonomy.Off,
                    'false': Autonomy.Off
                },
                remapping={'input_value': 'words'})

            # x:423 y:332
            OperatableStateMachine.add(
                'say repeate',
                SaraSay(sentence="Please, repeat your command.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'bad'},
                autonomy={'done': Autonomy.Off})

        # x:30 y:324
        _sm_look_at_op_1 = OperatableStateMachine(outcomes=['fail'])

        with _sm_look_at_op_1:
            # x:61 y:31
            OperatableStateMachine.add('set name',
                                       SetKey(Value="person"),
                                       transitions={'done': 'list persons'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'name'})

            # x:44 y:110
            OperatableStateMachine.add('list persons',
                                       list_entities_by_name(
                                           frontality_level=0.5,
                                           distance_max=10),
                                       transitions={
                                           'found': 'get closest',
                                           'none_found': 'list persons'
                                       },
                                       autonomy={
                                           'found': Autonomy.Off,
                                           'none_found': Autonomy.Off
                                       },
                                       remapping={
                                           'name': 'name',
                                           'entity_list': 'entity_list',
                                           'number': 'number'
                                       })

            # x:43 y:211
            OperatableStateMachine.add(
                'get closest',
                CalculationState(calculation=lambda x: x[0].ID),
                transitions={'done': 'look at'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'entity_list',
                    'output_value': 'ID'
                })

            # x:210 y:198
            OperatableStateMachine.add('look at',
                                       KeepLookingAt(),
                                       transitions={'failed': 'list persons'},
                                       autonomy={'failed': Autonomy.Off},
                                       remapping={'ID': 'ID'})

        # x:307 y:35, x:335 y:491
        _sm_get_commands_2 = OperatableStateMachine(
            outcomes=['fail', 'understood'],
            output_keys=['ActionForms', 'sentence'])

        with _sm_get_commands_2:
            # x:50 y:48
            OperatableStateMachine.add(
                'say ready',
                SaraSay(sentence="I'm ready for your commands.",
                        input_keys=[],
                        emotion=1,
                        block=False),
                transitions={'done': 'GetSpeech'},
                autonomy={'done': Autonomy.Off})

            # x:32 y:408
            OperatableStateMachine.add('SaraNLUgpsr',
                                       SaraNLUgpsr(),
                                       transitions={
                                           'understood': 'say understood',
                                           'not_understood': 'say sorry',
                                           'fail': 'say sorry'
                                       },
                                       autonomy={
                                           'understood': Autonomy.Off,
                                           'not_understood': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={
                                           'sentence': 'sentence',
                                           'ActionForms': 'ActionForms'
                                       })

            # x:597 y:223
            OperatableStateMachine.add(
                'say sorry',
                SaraSay(
                    sentence="Sorry, I could not understand what you said.",
                    input_keys=[],
                    emotion=1,
                    block=True),
                transitions={'done': 'GetSpeech'},
                autonomy={'done': Autonomy.Off})

            # x:30 y:491
            OperatableStateMachine.add('say understood',
                                       SaraSay(sentence="Ok",
                                               input_keys=[],
                                               emotion=1,
                                               block=True),
                                       transitions={'done': 'understood'},
                                       autonomy={'done': Autonomy.Off})

            # x:44 y:131
            OperatableStateMachine.add('GetSpeech',
                                       GetSpeech(watchdog=5),
                                       transitions={
                                           'done': 'validate',
                                           'nothing': 'GetSpeech',
                                           'fail': 'fail'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'nothing': Autonomy.Off,
                                           'fail': Autonomy.Off
                                       },
                                       remapping={'words': 'sentence'})

            # x:29 y:259
            OperatableStateMachine.add('validate',
                                       _sm_validate_0,
                                       transitions={
                                           'done': 'SaraNLUgpsr',
                                           'bad': 'GetSpeech'
                                       },
                                       autonomy={
                                           'done': Autonomy.Inherit,
                                           'bad': Autonomy.Inherit
                                       },
                                       remapping={'sentence': 'sentence'})

        # x:122 y:413
        _sm_end_3 = OperatableStateMachine(outcomes=['done'],
                                           input_keys=['ExitName'])

        with _sm_end_3:
            # x:30 y:40
            OperatableStateMachine.add(
                'win',
                SaraSay(sentence="Thank you. I'm going now.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Action_Pass_Door'},
                autonomy={'done': Autonomy.Off})

            # x:33 y:163
            OperatableStateMachine.add(
                'Action_Pass_Door',
                self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM,
                                  'End/Action_Pass_Door'),
                transitions={
                    'Done': 'say yay',
                    'Fail': 'done'
                },
                autonomy={
                    'Done': Autonomy.Inherit,
                    'Fail': Autonomy.Inherit
                },
                remapping={'DoorName': 'ExitName'})

            # x:210 y:262
            OperatableStateMachine.add(
                'say yay',
                SaraSay(sentence="I did it. I'm the best robot.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'done'},
                autonomy={'done': Autonomy.Off})

        # x:320 y:82, x:322 y:143, x:265 y:407, x:306 y:225, x:430 y:324
        _sm_interact_operator_4 = ConcurrencyContainer(
            outcomes=['fail', 'understood'],
            output_keys=['ActionForms', 'sentence'],
            conditions=[('understood', [('Get Commands', 'understood')]),
                        ('fail', [('Get Commands', 'fail')]),
                        ('fail', [('look at op', 'fail')])])

        with _sm_interact_operator_4:
            # x:95 y:45
            OperatableStateMachine.add('Get Commands',
                                       _sm_get_commands_2,
                                       transitions={
                                           'fail': 'fail',
                                           'understood': 'understood'
                                       },
                                       autonomy={
                                           'fail': Autonomy.Inherit,
                                           'understood': Autonomy.Inherit
                                       },
                                       remapping={
                                           'ActionForms': 'ActionForms',
                                           'sentence': 'sentence'
                                       })

            # x:99 y:198
            OperatableStateMachine.add('look at op',
                                       _sm_look_at_op_1,
                                       transitions={'fail': 'fail'},
                                       autonomy={'fail': Autonomy.Inherit})

        # x:325 y:387, x:314 y:190
        _sm_fail_state_5 = OperatableStateMachine(
            outcomes=['finished', 'failed'], input_keys=['StartPosition'])

        with _sm_fail_state_5:
            # x:36 y:29
            OperatableStateMachine.add(
                'say failed',
                SaraSay(sentence="I failed. I'm going back to tell my master.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'Action_Move'},
                autonomy={'done': Autonomy.Off})

            # x:42 y:301
            OperatableStateMachine.add(
                'get error',
                GetRosParam(ParamName="behavior/GPSR/CauseOfFailure"),
                transitions={
                    'done': 'Say_Error',
                    'failed': 'finished'
                },
                autonomy={
                    'done': Autonomy.Off,
                    'failed': Autonomy.Off
                },
                remapping={'Value': 'Error'})

            # x:48 y:414
            OperatableStateMachine.add(
                'Say_Error',
                SaraSay(sentence=lambda x: "Sorry, I failed because " + x,
                        input_keys=[],
                        emotion=0,
                        block=True),
                transitions={'done': 'finished'},
                autonomy={'done': Autonomy.Off})

            # x:25 y:172
            OperatableStateMachine.add(
                'Action_Move',
                self.use_behavior(sara_flexbe_behaviors__Action_MoveSM,
                                  'Fail state/Action_Move'),
                transitions={
                    'finished': 'get error',
                    'failed': 'failed'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={'pose': 'StartPosition'})

        # x:588 y:141, x:590 y:545, x:642 y:410
        _sm_do_the_actions_6 = OperatableStateMachine(
            outcomes=['finished', 'failed', 'critical fail'],
            input_keys=['ActionForms', 'OriginalPose'])

        with _sm_do_the_actions_6:
            # x:85 y:33
            OperatableStateMachine.add('set i',
                                       SetKey(Value=0),
                                       transitions={'done': 'is form?'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'Key': 'index'})

            # x:48 y:339
            OperatableStateMachine.add(
                'GetForm',
                FlexibleCalculationState(calculation=lambda x: x[0][x[1]],
                                         input_keys=["ActionForms", "index"]),
                transitions={'done': 'Action_Executor'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'ActionForms': 'ActionForms',
                    'index': 'index',
                    'output_value': 'ActionForm'
                })

            # x:57 y:131
            OperatableStateMachine.add(
                'is form?',
                FlexibleCheckConditionState(
                    predicate=lambda x: x[1] < len(x[0]),
                    input_keys=["ActionForms", "index"]),
                transitions={
                    'true': 'set setp',
                    'false': 'finished'
                },
                autonomy={
                    'true': Autonomy.Off,
                    'false': Autonomy.Off
                },
                remapping={
                    'ActionForms': 'ActionForms',
                    'index': 'index'
                })

            # x:204 y:237
            OperatableStateMachine.add(
                '++i',
                CalculationState(calculation=lambda x: x + 1),
                transitions={'done': 'is form?'},
                autonomy={'done': Autonomy.Off},
                remapping={
                    'input_value': 'index',
                    'output_value': 'index'
                })

            # x:72 y:479
            OperatableStateMachine.add(
                'Action_Executor',
                self.use_behavior(sara_flexbe_behaviors__Action_ExecutorSM,
                                  'Do the actions/Action_Executor'),
                transitions={
                    'finished': '++i',
                    'failed': 'failed',
                    'critical_fail': 'critical fail'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit,
                    'critical_fail': Autonomy.Inherit
                },
                remapping={'Action': 'ActionForm'})

            # x:45 y:241
            OperatableStateMachine.add('set setp',
                                       StoryboardSetStepKey(),
                                       transitions={'done': 'GetForm'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'step': 'index'})

        # x:424 y:175
        _sm_initialisation_7 = OperatableStateMachine(
            outcomes=['done'], input_keys=['PositionBras', 'EntryName'])

        with _sm_initialisation_7:
            # x:62 y:79
            OperatableStateMachine.add(
                'Action_Pass_Door',
                self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM,
                                  'Initialisation/Action_Pass_Door'),
                transitions={
                    'Done': 'set step',
                    'Fail': 'done'
                },
                autonomy={
                    'Done': Autonomy.Inherit,
                    'Fail': Autonomy.Inherit
                },
                remapping={'DoorName': 'EntryName'})

            # x:70 y:306
            OperatableStateMachine.add('set story',
                                       Set_Story(titre="GPSR", storyline=[]),
                                       transitions={'done': 'bras en lair'},
                                       autonomy={'done': Autonomy.Off})

            # x:288 y:375
            OperatableStateMachine.add(
                'say start',
                SaraSay(sentence="I'm ready to start the GPSR scenario.",
                        input_keys=[],
                        emotion=1,
                        block=True),
                transitions={'done': 'done'},
                autonomy={'done': Autonomy.Off})

            # x:78 y:205
            OperatableStateMachine.add('set step',
                                       Set_a_step(step=0),
                                       transitions={'done': 'set story'},
                                       autonomy={'done': Autonomy.Off})

            # x:101 y:395
            OperatableStateMachine.add('bras en lair',
                                       MoveitMove(move=True,
                                                  waitForExecution=False,
                                                  group="RightArm"),
                                       transitions={
                                           'done': 'say start',
                                           'failed': 'say start'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'failed': Autonomy.Off
                                       },
                                       remapping={'target': 'PositionBras'})

        with _state_machine:
            # x:33 y:103
            OperatableStateMachine.add('Initialisation',
                                       _sm_initialisation_7,
                                       transitions={'done': 'Action_Move'},
                                       autonomy={'done': Autonomy.Inherit},
                                       remapping={
                                           'PositionBras': 'PositionBras',
                                           'EntryName': 'EntryName'
                                       })

            # x:767 y:196
            OperatableStateMachine.add('Do the actions',
                                       _sm_do_the_actions_6,
                                       transitions={
                                           'finished': 'say succseed',
                                           'failed': 'Fail state',
                                           'critical fail': 'critical'
                                       },
                                       autonomy={
                                           'finished': Autonomy.Inherit,
                                           'failed': Autonomy.Inherit,
                                           'critical fail': Autonomy.Inherit
                                       },
                                       remapping={
                                           'ActionForms': 'ActionForms',
                                           'OriginalPose': 'OriginalPose'
                                       })

            # x:250 y:126
            OperatableStateMachine.add(
                'Fail state',
                _sm_fail_state_5,
                transitions={
                    'finished': 'lift head',
                    'failed': 'critical'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={'StartPosition': 'StartPosition'})

            # x:250 y:257
            OperatableStateMachine.add(
                'critical',
                SaraSay(
                    sentence="Critical failure! I require medical assistance.",
                    input_keys=[],
                    emotion=1,
                    block=True),
                transitions={'done': 'failed'},
                autonomy={'done': Autonomy.Off})

            # x:52 y:468
            OperatableStateMachine.add('for 3',
                                       ForLoop(repeat=3),
                                       transitions={
                                           'do': 'GetOriginalPose',
                                           'end': 'End'
                                       },
                                       autonomy={
                                           'do': Autonomy.Off,
                                           'end': Autonomy.Off
                                       },
                                       remapping={'index': 'index'})

            # x:747 y:475
            OperatableStateMachine.add('say succseed',
                                       SaraSay(
                                           sentence="I succeed my mission.",
                                           input_keys=[],
                                           emotion=1,
                                           block=True),
                                       transitions={'done': 'for 3'},
                                       autonomy={'done': Autonomy.Off})

            # x:204 y:368
            OperatableStateMachine.add('Interact operator',
                                       _sm_interact_operator_4,
                                       transitions={
                                           'fail': 'critical',
                                           'understood': 'set step'
                                       },
                                       autonomy={
                                           'fail': Autonomy.Inherit,
                                           'understood': Autonomy.Inherit
                                       },
                                       remapping={
                                           'ActionForms': 'ActionForms',
                                           'sentence': 'sentence'
                                       })

            # x:553 y:316
            OperatableStateMachine.add('set story',
                                       StoryboardSetStoryFromAction(),
                                       transitions={'done': 'Do the actions'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={
                                           'titre': 'title',
                                           'actionList': 'ActionForms'
                                       })

            # x:404 y:377
            OperatableStateMachine.add('set step',
                                       Set_a_step(step=0),
                                       transitions={'done': 'set story'},
                                       autonomy={'done': Autonomy.Off})

            # x:41 y:375
            OperatableStateMachine.add(
                'GetOriginalPose',
                Get_Robot_Pose(),
                transitions={'done': 'Interact operator'},
                autonomy={'done': Autonomy.Off},
                remapping={'pose': 'OriginalPose'})

            # x:37 y:564
            OperatableStateMachine.add('End',
                                       _sm_end_3,
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Inherit},
                                       remapping={'ExitName': 'ExitName'})

            # x:30 y:288
            OperatableStateMachine.add('lift head',
                                       SaraSetHeadAngle(pitch=-0.3, yaw=0),
                                       transitions={'done': 'GetOriginalPose'},
                                       autonomy={'done': Autonomy.Off})

            # x:48 y:23
            OperatableStateMachine.add('ContinueButton',
                                       ContinueButton(),
                                       transitions={
                                           'true': 'Initialisation',
                                           'false': 'Initialisation'
                                       },
                                       autonomy={
                                           'true': Autonomy.Off,
                                           'false': Autonomy.Off
                                       })

            # x:21 y:185
            OperatableStateMachine.add(
                'Action_Move',
                self.use_behavior(sara_flexbe_behaviors__Action_MoveSM,
                                  'Action_Move'),
                transitions={
                    'finished': 'lift head',
                    'failed': 'critical'
                },
                autonomy={
                    'finished': Autonomy.Inherit,
                    'failed': Autonomy.Inherit
                },
                remapping={'pose': 'StartPosition'})

        return _state_machine
	def create(self):
		# x:738 y:371, x:736 y:220
		_state_machine = OperatableStateMachine(outcomes=['finished', 'failed'])
		_state_machine.userdata.bin1Waypoint = "trash bin 2"
		_state_machine.userdata.bin2Waypoint = "trash bin"
		_state_machine.userdata.bin1Height = "1"
		_state_machine.userdata.bin2Height = "1"
		_state_machine.userdata.dropzone1Waypoint = "drop_zone1"
		_state_machine.userdata.dropzone2Waypoint = "drop_zone2"
		_state_machine.userdata.DoorName = "door_1_entry"
		_state_machine.userdata.exit_door = "door_2_exit"

		# Additional creation code can be added inside the following tags
		# [MANUAL_CREATE]
		
		# [/MANUAL_CREATE]

		# x:810 y:644, x:808 y:125
		_sm_go_to_drop_the_bag_0 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['dropzoneWaypoint', 'exit_door'])

		with _sm_go_to_drop_the_bag_0:
			# x:84 y:36
			OperatableStateMachine.add('say drop',
										SaraSay(sentence="I will go and drop this bag in the drop zone.", input_keys=[], emotion=0, block=False),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:66 y:598
			OperatableStateMachine.add('open the gripper',
										SetGripperState(width=0.1, effort=1),
										transitions={'object': 'go to pose transport', 'no_object': 'go to pose transport'},
										autonomy={'object': Autonomy.Off, 'no_object': Autonomy.Off},
										remapping={'object_size': 'object_size'})

			# x:341 y:469
			OperatableStateMachine.add('say cant go to drop zone',
										SaraSay(sentence="I am not able to go to the drop zone. I will put the bag here and go to the second bin.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'run depose sac'},
										autonomy={'done': Autonomy.Off})

			# x:74 y:490
			OperatableStateMachine.add('run depose sac',
										RunTrajectory(file="poubelle_depose", duration=10),
										transitions={'done': 'open the gripper'},
										autonomy={'done': Autonomy.Off})

			# x:69 y:726
			OperatableStateMachine.add('go to pose transport',
										RunTrajectory(file="transport", duration=0),
										transitions={'done': 'finished'},
										autonomy={'done': Autonomy.Off})

			# x:76 y:386
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'First bin/go to drop the bag/Action_Move'),
										transitions={'finished': 'run depose sac', 'failed': 'say cant go to drop zone'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'dropzoneWaypoint'})


		# x:570 y:519, x:575 y:330
		_sm_find_the_bin_1 = OperatableStateMachine(outcomes=['finished', 'failed'])

		with _sm_find_the_bin_1:
			# x:89 y:62
			OperatableStateMachine.add('place arm',
										RunTrajectory(file="poubelle_init", duration=0),
										transitions={'done': 'leve la tete'},
										autonomy={'done': Autonomy.Off})

			# x:270 y:378
			OperatableStateMachine.add('get waypoint',
										Get_Reacheable_Waypoint(),
										transitions={'done': 'move'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose_in': 'detectedBin', 'distance': 'distanceToBin', 'pose_out': 'poseToBin'})

			# x:296 y:284
			OperatableStateMachine.add('set distance to bin',
										SetKey(Value=0.5),
										transitions={'done': 'get waypoint'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'distanceToBin'})

			# x:278 y:201
			OperatableStateMachine.add('pose form lidar to map',
										TF_transformation(in_ref="front_hokuyo_link", out_ref="map"),
										transitions={'done': 'set distance to bin', 'fail': 'failed'},
										autonomy={'done': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'in_pos': 'detectedObstacle', 'out_pos': 'detectedBin'})

			# x:80 y:514
			OperatableStateMachine.add('redo ajustements de la position',
										ForLoop(repeat=2),
										transitions={'do': 'find closest obstacle point', 'end': 'finished'},
										autonomy={'do': Autonomy.Off, 'end': Autonomy.Off},
										remapping={'index': 'index'})

			# x:87 y:129
			OperatableStateMachine.add('find closest obstacle point',
										GetClosestObstacle(topic="/scan", maximumDistance=2),
										transitions={'done': 'pose form lidar to map'},
										autonomy={'done': Autonomy.Off},
										remapping={'Angle': 'Angle', 'distance': 'distance', 'position': 'detectedObstacle'})

			# x:288 y:77
			OperatableStateMachine.add('leve la tete',
										SaraSetHeadAngle(pitch=0, yaw=0),
										transitions={'done': 'find closest obstacle point'},
										autonomy={'done': Autonomy.Off})

			# x:287 y:464
			OperatableStateMachine.add('move',
										SaraMoveBase(reference="map"),
										transitions={'arrived': 'redo ajustements de la position', 'failed': 'failed'},
										autonomy={'arrived': Autonomy.Off, 'failed': Autonomy.Off},
										remapping={'pose': 'poseToBin'})


		# x:573 y:546, x:622 y:92
		_sm_go_to_bin_2 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['bin1Waypoint'])

		with _sm_go_to_bin_2:
			# x:86 y:104
			OperatableStateMachine.add('bras sur le cote',
										RunTrajectory(file="poubelle_transport", duration=0),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:254 y:199
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'First bin/go to bin/Action_Move'),
										transitions={'finished': 'finished', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'bin1Waypoint'})


		# x:600 y:617, x:666 y:442
		_sm_find_the_bin_3 = OperatableStateMachine(outcomes=['finished', 'failed'])

		with _sm_find_the_bin_3:
			# x:89 y:62
			OperatableStateMachine.add('place arm',
										RunTrajectory(file="poubelle_init", duration=0),
										transitions={'done': 'leve la tete'},
										autonomy={'done': Autonomy.Off})

			# x:268 y:410
			OperatableStateMachine.add('get waypoint',
										Get_Reacheable_Waypoint(),
										transitions={'done': 'move'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose_in': 'detectedBin', 'distance': 'distanceToBin', 'pose_out': 'poseToBin'})

			# x:293 y:326
			OperatableStateMachine.add('set distance to bin',
										SetKey(Value=0.5),
										transitions={'done': 'get waypoint'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'distanceToBin'})

			# x:278 y:238
			OperatableStateMachine.add('pose form lidar to map',
										TF_transformation(in_ref="front_hokuyo_link", out_ref="map"),
										transitions={'done': 'set distance to bin', 'fail': 'failed'},
										autonomy={'done': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'in_pos': 'detectedObstacle', 'out_pos': 'detectedBin'})

			# x:80 y:598
			OperatableStateMachine.add('redo ajustements de la position',
										ForLoop(repeat=2),
										transitions={'do': 'find closest obstacle point', 'end': 'finished'},
										autonomy={'do': Autonomy.Off, 'end': Autonomy.Off},
										remapping={'index': 'index'})

			# x:89 y:168
			OperatableStateMachine.add('find closest obstacle point',
										GetClosestObstacle(topic="/scan", maximumDistance=2),
										transitions={'done': 'pose form lidar to map'},
										autonomy={'done': Autonomy.Off},
										remapping={'Angle': 'Angle', 'distance': 'distance', 'position': 'detectedObstacle'})

			# x:288 y:104
			OperatableStateMachine.add('leve la tete',
										SaraSetHeadAngle(pitch=0, yaw=0),
										transitions={'done': 'find closest obstacle point'},
										autonomy={'done': Autonomy.Off})

			# x:285 y:504
			OperatableStateMachine.add('move',
										SaraMoveBase(reference="map"),
										transitions={'arrived': 'redo ajustements de la position', 'failed': 'failed'},
										autonomy={'arrived': Autonomy.Off, 'failed': Autonomy.Off},
										remapping={'pose': 'poseToBin'})


		# x:30 y:365, x:130 y:365
		_sm_go_to_bin_4 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['bin2Waypoint'])

		with _sm_go_to_bin_4:
			# x:59 y:100
			OperatableStateMachine.add('bras sur le cote',
										RunTrajectory(file="poubelle_transport", duration=0),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:254 y:199
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'second bin/go to bin/Action_Move'),
										transitions={'finished': 'finished', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'bin2Waypoint'})


		# x:418 y:580, x:694 y:339
		_sm_go_to_drop_the_bag_5 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['dropzoneWaypoint', 'exit_door'])

		with _sm_go_to_drop_the_bag_5:
			# x:65 y:215
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'second bin/go to drop the bag/Action_Move'),
										transitions={'finished': 'run depose sac', 'failed': 'say cant go to drop zone'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'dropzoneWaypoint'})

			# x:385 y:324
			OperatableStateMachine.add('say cant go to drop zone',
										SaraSay(sentence="I am not able to go to the drop zone. I will put the bag here.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'run depose sac'},
										autonomy={'done': Autonomy.Off})

			# x:76 y:340
			OperatableStateMachine.add('run depose sac',
										RunTrajectory(file="poubelle_depose", duration=10),
										transitions={'done': 'open the gripper'},
										autonomy={'done': Autonomy.Off})

			# x:74 y:505
			OperatableStateMachine.add('go to pose transport',
										RunTrajectory(file="transport", duration=0),
										transitions={'done': 'finished'},
										autonomy={'done': Autonomy.Off})

			# x:74 y:426
			OperatableStateMachine.add('open the gripper',
										SetGripperState(width=0.1, effort=1),
										transitions={'object': 'go to pose transport', 'no_object': 'go to pose transport'},
										autonomy={'object': Autonomy.Off, 'no_object': Autonomy.Off},
										remapping={'object_size': 'object_size'})


		# x:704 y:599, x:717 y:53
		_sm_first_bin_6 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['bin1Waypoint', 'bin1Height', 'dropzoneWaypoint', 'exit_door'])

		with _sm_first_bin_6:
			# x:57 y:26
			OperatableStateMachine.add('Init_Sequence',
										self.use_behavior(sara_flexbe_behaviors__Init_SequenceSM, 'First bin/Init_Sequence'),
										transitions={'finished': 'go to bin', 'failed': 'go to bin'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:257 y:329
			OperatableStateMachine.add('Action_TakeBag',
										self.use_behavior(sara_flexbe_behaviors__Action_TakeBagSM, 'First bin/Action_TakeBag'),
										transitions={'finished': 'go to drop the bag', 'failed': 'Missed It once'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:275 y:35
			OperatableStateMachine.add('go to bin',
										_sm_go_to_bin_2,
										transitions={'finished': 'find the bin', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'bin1Waypoint': 'bin1Waypoint'})

			# x:286 y:164
			OperatableStateMachine.add('find the bin',
										_sm_find_the_bin_1,
										transitions={'finished': 'Try twice', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:292 y:234
			OperatableStateMachine.add('Try twice',
										ForLoop(repeat=1),
										transitions={'do': 'Action_TakeBag', 'end': 'failed'},
										autonomy={'do': Autonomy.Off, 'end': Autonomy.Off},
										remapping={'index': 'index'})

			# x:102 y:262
			OperatableStateMachine.add('Missed It once',
										SaraSay(sentence="I will try one more time.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'Try twice'},
										autonomy={'done': Autonomy.Off})

			# x:267 y:432
			OperatableStateMachine.add('go to drop the bag',
										_sm_go_to_drop_the_bag_0,
										transitions={'finished': 'finished', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'dropzoneWaypoint': 'dropzoneWaypoint', 'exit_door': 'exit_door'})


		# x:946 y:467, x:907 y:75
		_sm_second_bin_7 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['bin2Waypoint', 'bin2Height', 'dropzoneWaypoint', 'exit_door'])

		with _sm_second_bin_7:
			# x:57 y:26
			OperatableStateMachine.add('Init_Sequence',
										self.use_behavior(sara_flexbe_behaviors__Init_SequenceSM, 'second bin/Init_Sequence'),
										transitions={'finished': 'go to bin', 'failed': 'go to bin'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:267 y:432
			OperatableStateMachine.add('go to drop the bag',
										_sm_go_to_drop_the_bag_5,
										transitions={'finished': 'finished', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'dropzoneWaypoint': 'dropzoneWaypoint', 'exit_door': 'exit_door'})

			# x:257 y:346
			OperatableStateMachine.add('Action_TakeBag',
										self.use_behavior(sara_flexbe_behaviors__Action_TakeBagSM, 'second bin/Action_TakeBag'),
										transitions={'finished': 'go to drop the bag', 'failed': 'Missed It once'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:275 y:35
			OperatableStateMachine.add('go to bin',
										_sm_go_to_bin_4,
										transitions={'finished': 'find the bin', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'bin2Waypoint': 'bin2Waypoint'})

			# x:286 y:164
			OperatableStateMachine.add('find the bin',
										_sm_find_the_bin_3,
										transitions={'finished': 'Try twice', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:298 y:254
			OperatableStateMachine.add('Try twice',
										ForLoop(repeat=1),
										transitions={'do': 'Action_TakeBag', 'end': 'failed'},
										autonomy={'do': Autonomy.Off, 'end': Autonomy.Off},
										remapping={'index': 'index'})

			# x:102 y:262
			OperatableStateMachine.add('Missed It once',
										SaraSay(sentence="I will try one more time.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'Try twice'},
										autonomy={'done': Autonomy.Off})



		with _state_machine:
			# x:15 y:242
			OperatableStateMachine.add('button',
										ContinueButton(),
										transitions={'true': 'Action_Pass_Door', 'false': 'Action_Pass_Door'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off})

			# x:485 y:201
			OperatableStateMachine.add('try second bin',
										SaraSay(sentence="I failed to take out the garbage from the first bin but I will try the second bin.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'second bin'},
										autonomy={'done': Autonomy.Off})

			# x:267 y:199
			OperatableStateMachine.add('say take second bag',
										SaraSay(sentence="Good! I will now get rid of the second bag.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'second bin'},
										autonomy={'done': Autonomy.Off})

			# x:267 y:376
			OperatableStateMachine.add('second bin',
										_sm_second_bin_7,
										transitions={'finished': 'finished', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'bin2Waypoint': 'bin2Waypoint', 'bin2Height': 'bin2Height', 'dropzoneWaypoint': 'dropzone2Waypoint', 'exit_door': 'exit_door'})

			# x:94 y:153
			OperatableStateMachine.add('IllManageSomehow',
										SaraSay(sentence="Hmmm. This is a hard door to pass...", input_keys=[], emotion=0, block=True),
										transitions={'done': 'First bin'},
										autonomy={'done': Autonomy.Off})

			# x:277 y:63
			OperatableStateMachine.add('First bin',
										_sm_first_bin_6,
										transitions={'finished': 'say take second bag', 'failed': 'try second bin'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'bin1Waypoint': 'bin1Waypoint', 'bin1Height': 'bin1Height', 'dropzoneWaypoint': 'dropzone1Waypoint', 'exit_door': 'exit_door'})

			# x:65 y:53
			OperatableStateMachine.add('Action_Pass_Door',
										self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM, 'Action_Pass_Door'),
										transitions={'Done': 'First bin', 'Fail': 'IllManageSomehow'},
										autonomy={'Done': Autonomy.Inherit, 'Fail': Autonomy.Inherit},
										remapping={'DoorName': 'DoorName'})


		return _state_machine
	def create(self):
		# x:832 y:260, x:728 y:256
		_state_machine = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['ID'])
		_state_machine.userdata.ID = 0
		_state_machine.userdata.Closed_Gripper_Width = 1
		_state_machine.userdata.Open_Gripper_Width = 255
		_state_machine.userdata.Relative = False
		_state_machine.userdata.Pose_Init = "IdlePose"
		_state_machine.userdata.dropPose = "DropBagPose"
		_state_machine.userdata.EntryDoor = "door1/enter"
		_state_machine.userdata.ExitDoor = "door1/exit"

		# Additional creation code can be added inside the following tags
		# [MANUAL_CREATE]
		
		# [/MANUAL_CREATE]

		# x:700 y:231, x:418 y:463
		_sm_ecoute_getpose_0 = OperatableStateMachine(outcomes=['arrete', 'fail'])

		with _sm_ecoute_getpose_0:
			# x:53 y:35
			OperatableStateMachine.add('Ecoute',
										GetSpeech(watchdog=5),
										transitions={'done': 'stop', 'nothing': 'Ecoute', 'fail': 'fail'},
										autonomy={'done': Autonomy.Off, 'nothing': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'words': 'words'})

			# x:373 y:215
			OperatableStateMachine.add('stop',
										RegexTester(regex=".*stop.*"),
										transitions={'true': 'arrete', 'false': 'Ecoute'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off},
										remapping={'text': 'words', 'result': 'result'})


		# x:350 y:105, x:261 y:311
		_sm_get_operator_id_1 = OperatableStateMachine(outcomes=['not_found', 'done'], output_keys=['ID'])

		with _sm_get_operator_id_1:
			# x:42 y:30
			OperatableStateMachine.add('nom',
										SetKey(Value="person"),
										transitions={'done': 'FindId'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'name'})

			# x:37 y:347
			OperatableStateMachine.add('setID',
										SetRosParam(ParamName="OperatorID"),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off},
										remapping={'Value': 'ID'})

			# x:30 y:112
			OperatableStateMachine.add('FindId',
										list_entities_by_name(frontality_level=0.5, distance_max=10),
										transitions={'found': 'GetID', 'none_found': 'not_found'},
										autonomy={'found': Autonomy.Off, 'none_found': Autonomy.Off},
										remapping={'name': 'name', 'entity_list': 'Entities_list', 'number': 'number'})

			# x:38 y:238
			OperatableStateMachine.add('GetID',
										CalculationState(calculation=lambda x: x[0].ID),
										transitions={'done': 'setID'},
										autonomy={'done': Autonomy.Off},
										remapping={'input_value': 'Entities_list', 'output_value': 'ID'})


		# x:346 y:367, x:610 y:472, x:230 y:365, x:628 y:425, x:619 y:318, x:54 y:367
		_sm_follow_2 = ConcurrencyContainer(outcomes=['done', 'failed', 'not_found'], input_keys=['ID', 'distance'], output_keys=['Position'], conditions=[
										('not_found', [('Action_follow', 'failed')]),
										('done', [('Ecoute_getPose', 'arrete')]),
										('failed', [('Ecoute_getPose', 'fail')])
										])

		with _sm_follow_2:
			# x:107 y:103
			OperatableStateMachine.add('Action_follow',
										self.use_behavior(sara_flexbe_behaviors__Action_followSM, 'Getting ID Operator and follow /Follow/Action_follow'),
										transitions={'failed': 'not_found'},
										autonomy={'failed': Autonomy.Inherit},
										remapping={'ID': 'ID'})

			# x:294 y:146
			OperatableStateMachine.add('Ecoute_getPose',
										_sm_ecoute_getpose_0,
										transitions={'arrete': 'done', 'fail': 'failed'},
										autonomy={'arrete': Autonomy.Inherit, 'fail': Autonomy.Inherit})


		# x:57 y:371, x:419 y:55
		_sm_waiting_for_operator_3 = OperatableStateMachine(outcomes=['done', 'failed'])

		with _sm_waiting_for_operator_3:
			# x:57 y:67
			OperatableStateMachine.add('getSpeech',
										GetSpeech(watchdog=15),
										transitions={'done': 'UnderstandingOpe', 'nothing': 'failed', 'fail': 'failed'},
										autonomy={'done': Autonomy.Off, 'nothing': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'words': 'words'})

			# x:53 y:249
			OperatableStateMachine.add('start',
										SaraSay(sentence="I will follow you. Tell me when to stop.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off})

			# x:203 y:180
			OperatableStateMachine.add('UnderstandingOpe',
										RegexTester(regex=".*follow.*"),
										transitions={'true': 'start', 'false': 'failed'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off},
										remapping={'text': 'words', 'result': 'result'})


		# x:130 y:365
		_sm_look_at_4 = OperatableStateMachine(outcomes=['failed'])

		with _sm_look_at_4:
			# x:105 y:160
			OperatableStateMachine.add('LookAtClosest',
										self.use_behavior(sara_flexbe_behaviors__LookAtClosestSM, 'Recevoir sac/Look at/LookAtClosest'),
										transitions={'failed': 'failed'},
										autonomy={'failed': Autonomy.Inherit})


		# x:280 y:296, x:248 y:549
		_sm_receive_bag_5 = OperatableStateMachine(outcomes=['failed', 'done'], input_keys=['Closed_Gripper_Width', 'Open_Gripper_Width'])

		with _sm_receive_bag_5:
			# x:42 y:326
			OperatableStateMachine.add('PutBAg',
										SaraSay(sentence="Please put the grocery bag in my hand", input_keys=[], emotion=1, block=False),
										transitions={'done': 'Action_Receive_Bag'},
										autonomy={'done': Autonomy.Off})

			# x:18 y:427
			OperatableStateMachine.add('Action_Receive_Bag',
										self.use_behavior(sara_flexbe_behaviors__Action_Receive_BagSM, 'Recevoir sac/Receive bag/Action_Receive_Bag'),
										transitions={'finished': 'bringit', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'Closed_Gripper_Width': 'Closed_Gripper_Width', 'Open_Gripper_Width': 'Open_Gripper_Width', 'Closed_Gripper_Width': 'Closed_Gripper_Width'})

			# x:66 y:125
			OperatableStateMachine.add('getspeech2',
										GetSpeech(watchdog=5),
										transitions={'done': 'takebag', 'nothing': 'getspeech2', 'fail': 'failed'},
										autonomy={'done': Autonomy.Off, 'nothing': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'words': 'words'})

			# x:64 y:218
			OperatableStateMachine.add('takebag',
										RegexTester(regex=".*((take)|(bag)|(ready)).*"),
										transitions={'true': 'PutBAg', 'false': 'getspeech2'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off},
										remapping={'text': 'words', 'result': 'result'})

			# x:42 y:531
			OperatableStateMachine.add('bringit',
										SaraSay(sentence="I will bring it inside", input_keys=[], emotion=1, block=True),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off})

			# x:77 y:40
			OperatableStateMachine.add('sac',
										SaraSay(sentence="Ok. Tell me, when you are ready", input_keys=[], emotion=1, block=True),
										transitions={'done': 'getspeech2'},
										autonomy={'done': Autonomy.Off})


		# x:147 y:579
		_sm_look_at_closest_6 = OperatableStateMachine(outcomes=['failed'], output_keys=['Entity'])

		with _sm_look_at_closest_6:
			# x:40 y:39
			OperatableStateMachine.add('set person',
										SetKey(Value="person"),
										transitions={'done': 'head angle'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'Person'})

			# x:36 y:119
			OperatableStateMachine.add('head angle',
										SaraSetHeadAngle(pitch=-0.3, yaw=0),
										transitions={'done': 'get persons'},
										autonomy={'done': Autonomy.Off})

			# x:271 y:149
			OperatableStateMachine.add('get persons',
										list_entities_by_name(frontality_level=0.5, distance_max=2),
										transitions={'found': 'set person', 'none_found': 'get persons'},
										autonomy={'found': Autonomy.Off, 'none_found': Autonomy.Off},
										remapping={'name': 'Person', 'entity_list': 'entity_list', 'number': 'number'})


		# x:30 y:365
		_sm_get_op_7 = OperatableStateMachine(outcomes=['true'])

		with _sm_get_op_7:
			# x:76 y:40
			OperatableStateMachine.add('Say Joke',
										SaraSay(sentence="Can someone come help me, I only have one arm.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'ecouteNewPerson'},
										autonomy={'done': Autonomy.Off})

			# x:208 y:255
			OperatableStateMachine.add('listen',
										RegexTester(regex=".*((i)|(come)|(help)).*"),
										transitions={'true': 'true', 'false': 'ecouteNewPerson'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off},
										remapping={'text': 'words', 'result': 'result'})

			# x:32 y:106
			OperatableStateMachine.add('ecouteNewPerson',
										GetSpeech(watchdog=5),
										transitions={'done': 'listen', 'nothing': 'ecouteNewPerson', 'fail': 'ecouteNewPerson'},
										autonomy={'done': Autonomy.Off, 'nothing': Autonomy.Off, 'fail': Autonomy.Off},
										remapping={'words': 'words'})


		# x:65 y:357, x:130 y:365, x:230 y:365
		_sm_get_ope_8 = ConcurrencyContainer(outcomes=['true'], output_keys=['Entity'], conditions=[
										('true', [('get op', 'true')]),
										('true', [('look at closest', 'failed')])
										])

		with _sm_get_ope_8:
			# x:37 y:35
			OperatableStateMachine.add('get op',
										_sm_get_op_7,
										transitions={'true': 'true'},
										autonomy={'true': Autonomy.Inherit})

			# x:238 y:109
			OperatableStateMachine.add('look at closest',
										_sm_look_at_closest_6,
										transitions={'failed': 'true'},
										autonomy={'failed': Autonomy.Inherit},
										remapping={'Entity': 'Entity'})


		# x:37 y:417, x:236 y:263
		_sm_init_sara_9 = OperatableStateMachine(outcomes=['done', 'failed'], input_keys=['Pose_Init'], output_keys=['Origin'])

		with _sm_init_sara_9:
			# x:30 y:40
			OperatableStateMachine.add('get_pose',
										Get_Robot_Pose(),
										transitions={'done': 'SETHEAD'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose': 'Origin'})

			# x:24 y:259
			OperatableStateMachine.add('Init Arm',
										MoveitMove(move=True, waitForExecution=True, group="RightArm"),
										transitions={'done': 'done', 'failed': 'failed'},
										autonomy={'done': Autonomy.Off, 'failed': Autonomy.Off},
										remapping={'target': 'Pose_Init'})

			# x:23 y:183
			OperatableStateMachine.add('SETHEAD',
										SaraSetHeadAngle(pitch=0, yaw=0),
										transitions={'done': 'Init Arm'},
										autonomy={'done': Autonomy.Off})


		# x:92 y:291, x:242 y:133
		_sm_exitarena_10 = OperatableStateMachine(outcomes=['finished', 'failed'], input_keys=['ExitDoor'])

		with _sm_exitarena_10:
			# x:38 y:119
			OperatableStateMachine.add('Action_Pass_Door',
										self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM, 'ExitArena/Action_Pass_Door'),
										transitions={'Done': 'finished', 'Fail': 'failed'},
										autonomy={'Done': Autonomy.Inherit, 'Fail': Autonomy.Inherit},
										remapping={'DoorName': 'ExitDoor'})


		# x:353 y:529, x:369 y:296
		_sm_enter_arena_11 = OperatableStateMachine(outcomes=['done', 'fail'], input_keys=['EntryDoor'])

		with _sm_enter_arena_11:
			# x:132 y:147
			OperatableStateMachine.add('Action_Pass_Door',
										self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM, 'Enter arena/Action_Pass_Door'),
										transitions={'Done': 'say start', 'Fail': 'fail'},
										autonomy={'Done': Autonomy.Inherit, 'Fail': Autonomy.Inherit},
										remapping={'DoorName': 'EntryDoor'})

			# x:124 y:501
			OperatableStateMachine.add('say help',
										SaraSay(sentence="Hi, i will help you carry some bags. LEt me know when you need me", input_keys=[], emotion=1, block=True),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off})

			# x:146 y:256
			OperatableStateMachine.add('say start',
										SaraSay(sentence="", input_keys=[], emotion=1, block=True),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:121 y:375
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'Enter arena/Action_Move'),
										transitions={'finished': 'say help', 'failed': 'fail'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'EntryDoor'})


		# x:372 y:428, x:389 y:477
		_sm_getting_id_operator_and_follow__12 = OperatableStateMachine(outcomes=['failed', 'done'], output_keys=['Position'])

		with _sm_getting_id_operator_and_follow__12:
			# x:70 y:115
			OperatableStateMachine.add('Waiting for operator',
										_sm_waiting_for_operator_3,
										transitions={'done': 'Get operator ID', 'failed': 'Waiting for operator'},
										autonomy={'done': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:71 y:504
			OperatableStateMachine.add('get pose',
										Get_Robot_Pose(),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose': 'Position'})

			# x:69 y:415
			OperatableStateMachine.add('Follow',
										_sm_follow_2,
										transitions={'done': 'get pose', 'failed': 'failed', 'not_found': 'initial'},
										autonomy={'done': Autonomy.Inherit, 'failed': Autonomy.Inherit, 'not_found': Autonomy.Inherit},
										remapping={'ID': 'ID', 'distance': 'distance', 'Position': 'Position'})

			# x:60 y:222
			OperatableStateMachine.add('Get operator ID',
										_sm_get_operator_id_1,
										transitions={'not_found': 'Get operator ID', 'done': 'set follow distance'},
										autonomy={'not_found': Autonomy.Inherit, 'done': Autonomy.Inherit},
										remapping={'ID': 'ID'})

			# x:60 y:324
			OperatableStateMachine.add('set follow distance',
										SetKey(Value="0.5"),
										transitions={'done': 'Follow'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'distance'})

			# x:286 y:327
			OperatableStateMachine.add('initial',
										SaraSetHeadAngle(pitch=0, yaw=0),
										transitions={'done': 'Get operator ID'},
										autonomy={'done': Autonomy.Off})


		# x:247 y:123, x:282 y:200, x:230 y:365
		_sm_drop_le_sac_13 = OperatableStateMachine(outcomes=['failed', 'no_object', 'done'], input_keys=['Idle', 'dropPose'])

		with _sm_drop_le_sac_13:
			# x:22 y:114
			OperatableStateMachine.add('dropbag',
										MoveitMove(move=True, waitForExecution=True, group="RightArm"),
										transitions={'done': 'Open', 'failed': 'failed'},
										autonomy={'done': Autonomy.Off, 'failed': Autonomy.Off},
										remapping={'target': 'dropPose'})

			# x:5 y:344
			OperatableStateMachine.add('close',
										SetGripperState(width=0, effort=1),
										transitions={'object': 'returnIdl', 'no_object': 'returnIdl'},
										autonomy={'object': Autonomy.Off, 'no_object': Autonomy.Off},
										remapping={'object_size': 'object_size'})

			# x:19 y:268
			OperatableStateMachine.add('wait',
										WaitState(wait_time=2),
										transitions={'done': 'close'},
										autonomy={'done': Autonomy.Off})

			# x:8 y:433
			OperatableStateMachine.add('returnIdl',
										MoveitMove(move=True, waitForExecution=True, group="RightArm"),
										transitions={'done': 'done', 'failed': 'failed'},
										autonomy={'done': Autonomy.Off, 'failed': Autonomy.Off},
										remapping={'target': 'Idle'})

			# x:10 y:190
			OperatableStateMachine.add('Open',
										SetGripperState(width=0.1, effort=1),
										transitions={'object': 'wait', 'no_object': 'no_object'},
										autonomy={'object': Autonomy.Off, 'no_object': Autonomy.Off},
										remapping={'object_size': 'object_size'})


		# x:555 y:54, x:568 y:190
		_sm_retour_maison_14 = OperatableStateMachine(outcomes=['done', 'failed'], input_keys=['PoseOrigin', 'Relative'])

		with _sm_retour_maison_14:
			# x:54 y:63
			OperatableStateMachine.add('keydistance',
										SetKey(Value=0),
										transitions={'done': 'adapt the end pose'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'distance'})

			# x:258 y:51
			OperatableStateMachine.add('Arrived',
										SaraSay(sentence="I have food, people. I will drop the bags on the floor.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'done'},
										autonomy={'done': Autonomy.Off})

			# x:43 y:141
			OperatableStateMachine.add('adapt the end pose',
										Get_Reacheable_Waypoint(),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose_in': 'PoseOrigin', 'distance': 'distance', 'pose_out': 'pose_out'})

			# x:236 y:182
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'Retour maison/Action_Move'),
										transitions={'finished': 'Arrived', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'pose_out'})


		# x:30 y:365, x:130 y:365, x:230 y:365, x:330 y:365, x:430 y:365
		_sm_recevoir_sac_15 = ConcurrencyContainer(outcomes=['failed', 'done'], input_keys=['Closed_Gripper_Width', 'Open_Gripper_Width'], conditions=[
										('failed', [('Receive bag', 'failed')]),
										('done', [('Receive bag', 'done')]),
										('failed', [('Look at', 'failed')])
										])

		with _sm_recevoir_sac_15:
			# x:84 y:156
			OperatableStateMachine.add('Receive bag',
										_sm_receive_bag_5,
										transitions={'failed': 'failed', 'done': 'done'},
										autonomy={'failed': Autonomy.Inherit, 'done': Autonomy.Inherit},
										remapping={'Closed_Gripper_Width': 'Closed_Gripper_Width', 'Open_Gripper_Width': 'Open_Gripper_Width'})

			# x:262 y:154
			OperatableStateMachine.add('Look at',
										_sm_look_at_4,
										transitions={'failed': 'failed'},
										autonomy={'failed': Autonomy.Inherit})


		# x:728 y:533, x:722 y:468
		_sm_getnewperson_16 = OperatableStateMachine(outcomes=['done', 'failed'], input_keys=['Position'])

		with _sm_getnewperson_16:
			# x:52 y:77
			OperatableStateMachine.add('Get ope',
										_sm_get_ope_8,
										transitions={'true': 'set name'},
										autonomy={'true': Autonomy.Inherit},
										remapping={'Entity': 'Entity'})

			# x:46 y:508
			OperatableStateMachine.add('SET HEAD',
										SaraSetHeadAngle(pitch=-0.2, yaw=0),
										transitions={'done': 'Action_Guide2'},
										autonomy={'done': Autonomy.Off})

			# x:39 y:297
			OperatableStateMachine.add('list',
										list_entities_by_name(frontality_level=0.5, distance_max=2),
										transitions={'found': 'get closest ID', 'none_found': 'list'},
										autonomy={'found': Autonomy.Off, 'none_found': Autonomy.Off},
										remapping={'name': 'name', 'entity_list': 'entity_list', 'number': 'number'})

			# x:70 y:194
			OperatableStateMachine.add('set name',
										SetKey(Value="person"),
										transitions={'done': 'list'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'name'})

			# x:151 y:413
			OperatableStateMachine.add('get closest ID',
										CalculationState(calculation=lambda x: x[0].ID),
										transitions={'done': 'SET HEAD'},
										autonomy={'done': Autonomy.Off},
										remapping={'input_value': 'entity_list', 'output_value': 'ID'})

			# x:293 y:534
			OperatableStateMachine.add('Action_Guide2',
										self.use_behavior(sara_flexbe_behaviors__Action_Guide2SM, 'GetNewPerson/Action_Guide2'),
										transitions={'finished': 'done', 'failed': 'failed', 'critical_fail': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit, 'critical_fail': Autonomy.Inherit},
										remapping={'Position': 'Position', 'ID': 'ID'})

			# x:57 y:399
			OperatableStateMachine.add('set 0',
										SetKey(Value=0),
										transitions={'done': 'SET HEAD'},
										autonomy={'done': Autonomy.Off},
										remapping={'Key': 'ID'})



		with _state_machine:
			# x:188 y:35
			OperatableStateMachine.add('say ready',
										SaraSay(sentence="I'm ready for the help me carry scenario. I will follow when you ask me.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'INIT SARA'},
										autonomy={'done': Autonomy.Off})

			# x:827 y:439
			OperatableStateMachine.add('finish',
										SaraSay(sentence="I am done for the day", input_keys=[], emotion=2, block=True),
										transitions={'done': 'finished'},
										autonomy={'done': Autonomy.Off})

			# x:53 y:641
			OperatableStateMachine.add('GetNewPerson',
										_sm_getnewperson_16,
										transitions={'done': 'say leave', 'failed': 'failed'},
										autonomy={'done': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'Position': 'Position'})

			# x:48 y:349
			OperatableStateMachine.add('Recevoir sac',
										_sm_recevoir_sac_15,
										transitions={'failed': 'failed', 'done': 'Retour maison'},
										autonomy={'failed': Autonomy.Inherit, 'done': Autonomy.Inherit},
										remapping={'Closed_Gripper_Width': 'Closed_Gripper_Width', 'Open_Gripper_Width': 'Open_Gripper_Width'})

			# x:36 y:448
			OperatableStateMachine.add('Retour maison',
										_sm_retour_maison_14,
										transitions={'done': 'drop le sac', 'failed': 'failed'},
										autonomy={'done': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'PoseOrigin': 'Origin', 'Relative': 'Relative'})

			# x:49 y:556
			OperatableStateMachine.add('drop le sac',
										_sm_drop_le_sac_13,
										transitions={'failed': 'failed', 'no_object': 'failed', 'done': 'GetNewPerson'},
										autonomy={'failed': Autonomy.Inherit, 'no_object': Autonomy.Inherit, 'done': Autonomy.Inherit},
										remapping={'Idle': 'Pose_Init', 'dropPose': 'dropPose'})

			# x:150 y:260
			OperatableStateMachine.add('Getting ID Operator and follow ',
										_sm_getting_id_operator_and_follow__12,
										transitions={'failed': 'failed', 'done': 'Recevoir sac'},
										autonomy={'failed': Autonomy.Inherit, 'done': Autonomy.Inherit},
										remapping={'Position': 'Position'})

			# x:148 y:177
			OperatableStateMachine.add('Enter arena',
										_sm_enter_arena_11,
										transitions={'done': 'Getting ID Operator and follow ', 'fail': 'failed'},
										autonomy={'done': Autonomy.Inherit, 'fail': Autonomy.Inherit},
										remapping={'EntryDoor': 'EntryDoor'})

			# x:498 y:617
			OperatableStateMachine.add('ExitArena',
										_sm_exitarena_10,
										transitions={'finished': 'finish', 'failed': 'failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'ExitDoor': 'ExitDoor'})

			# x:389 y:14
			OperatableStateMachine.add('ContinueButton',
										ContinueButton(),
										transitions={'true': 'say ready', 'false': 'say ready'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off})

			# x:329 y:645
			OperatableStateMachine.add('say leave',
										SaraSay(sentence="I will leave now. Goodbye", input_keys=[], emotion=1, block=True),
										transitions={'done': 'ExitArena'},
										autonomy={'done': Autonomy.Off})

			# x:319 y:101
			OperatableStateMachine.add('wait1',
										WaitState(wait_time=5),
										transitions={'done': 'say ready'},
										autonomy={'done': Autonomy.Off})

			# x:35 y:78
			OperatableStateMachine.add('INIT SARA',
										_sm_init_sara_9,
										transitions={'done': 'Getting ID Operator and follow ', 'failed': 'failed'},
										autonomy={'done': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'Pose_Init': 'Pose_Init', 'Origin': 'Origin'})


		return _state_machine
Example #6
0
	def create(self):
		# x:358 y:506
		_state_machine = OperatableStateMachine(outcomes=['finished'])
		_state_machine.userdata.relative = False
		_state_machine.userdata.EntryName = "door_1_entry"
		_state_machine.userdata.container = None
		_state_machine.userdata.TestName = "living room"
		_state_machine.userdata.ExitName = "door_2_exit"

		# Additional creation code can be added inside the following tags
		# [MANUAL_CREATE]
        
        # [/MANUAL_CREATE]


		with _state_machine:
			# x:52 y:27
			OperatableStateMachine.add('Bouton to start',
										ContinueButton(),
										transitions={'true': 'Action_Pass_Door', 'false': 'Bouton to start'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off})

			# x:41 y:430
			OperatableStateMachine.add('Failed',
										SaraSound(sound="error.wav"),
										transitions={'done': 'finished'},
										autonomy={'done': Autonomy.Off})

			# x:328 y:370
			OperatableStateMachine.add('Waiting',
										SaraSound(sound="to_be_continued.wav"),
										transitions={'done': 'Bouton continuer'},
										autonomy={'done': Autonomy.Off})

			# x:310 y:111
			OperatableStateMachine.add('Move to test zone',
										self.use_behavior(sara_flexbe_behaviors__Action_MoveSM, 'Move to test zone'),
										transitions={'finished': 'say ready', 'failed': 'Failed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'TestName'})

			# x:329 y:197
			OperatableStateMachine.add('say ready',
										SaraSay(sentence="I'm ready for my safety check. Press the continue button on my back when you are done.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'Bouton continuer'},
										autonomy={'done': Autonomy.Off})

			# x:34 y:115
			OperatableStateMachine.add('Action_Pass_Door',
										self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM, 'Action_Pass_Door'),
										transitions={'Done': 'Move to test zone', 'Fail': 'Failed'},
										autonomy={'Done': Autonomy.Inherit, 'Fail': Autonomy.Inherit},
										remapping={'DoorName': 'EntryName'})

			# x:332 y:282
			OperatableStateMachine.add('Bouton continuer',
										ContinueButton(),
										transitions={'true': 'say bye', 'false': 'Waiting'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off})

			# x:513 y:432
			OperatableStateMachine.add('Action_Pass_Door_2',
										self.use_behavior(sara_flexbe_behaviors__Action_Pass_DoorSM, 'Action_Pass_Door_2'),
										transitions={'Done': 'finished', 'Fail': 'Failed'},
										autonomy={'Done': Autonomy.Inherit, 'Fail': Autonomy.Inherit},
										remapping={'DoorName': 'ExitName'})

			# x:530 y:282
			OperatableStateMachine.add('say bye',
										SaraSay(sentence="Thank you, See you later.", input_keys=[], emotion=1, block=True),
										transitions={'done': 'Action_Pass_Door_2'},
										autonomy={'done': Autonomy.Off})


		return _state_machine
Example #7
0
	def create(self):
		# x:1141 y:183, x:1069 y:298
		_state_machine = OperatableStateMachine(outcomes=['finished', 'failed'])

		# Additional creation code can be added inside the following tags
		# [MANUAL_CREATE]
		
		# [/MANUAL_CREATE]


		with _state_machine:
			# x:30 y:119
			OperatableStateMachine.add('coninue',
										ContinueButton(),
										transitions={'true': 'GetOrigin', 'false': 'GetOrigin'},
										autonomy={'true': Autonomy.Off, 'false': Autonomy.Off})

			# x:750 y:145
			OperatableStateMachine.add('Farewell_2',
										self.use_behavior(FarewellSM, 'Farewell_2'),
										transitions={'finished': 'finish', 'failed': 'didnt succed'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:410 y:182
			OperatableStateMachine.add('Try again',
										SaraSay(sentence="Sorry, I will try with the next person", input_keys=[], emotion=2, block=True),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:403 y:47
			OperatableStateMachine.add('say next',
										SaraSay(sentence="I will now get the net person.", input_keys=[], emotion=0, block=True),
										transitions={'done': 'Action_Move'},
										autonomy={'done': Autonomy.Off})

			# x:549 y:98
			OperatableStateMachine.add('Action_Move',
										self.use_behavior(Action_MoveSM, 'Action_Move'),
										transitions={'finished': 'Farewell_2', 'failed': 'Action_Move'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit},
										remapping={'pose': 'poseOrigin'})

			# x:1020 y:75
			OperatableStateMachine.add('finish',
										SaraSay(sentence="I am done BYe bye", input_keys=[], emotion=0, block=True),
										transitions={'done': 'finished'},
										autonomy={'done': Autonomy.Off})

			# x:906 y:243
			OperatableStateMachine.add('didnt succed',
										SaraSay(sentence="I failed sorry", input_keys=[], emotion=0, block=True),
										transitions={'done': 'failed'},
										autonomy={'done': Autonomy.Off})

			# x:173 y:106
			OperatableStateMachine.add('Farewell',
										self.use_behavior(FarewellSM, 'Farewell'),
										transitions={'finished': 'say next', 'failed': 'Try again'},
										autonomy={'finished': Autonomy.Inherit, 'failed': Autonomy.Inherit})

			# x:39 y:31
			OperatableStateMachine.add('GetOrigin',
										Get_Robot_Pose(),
										transitions={'done': 'Farewell'},
										autonomy={'done': Autonomy.Off},
										remapping={'pose': 'poseOrigin'})


		return _state_machine