Beispiel #1
0
    def create(self):
        # x:95 y:629, x:806 y:420
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "ur5e/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.move_group = "manipulator"
        _state_machine.userdata.config_up = "up"
        _state_machine.userdata.config_default = "default"
        _state_machine.userdata.components = None

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:74 y:38
            OperatableStateMachine.add(
                'InitializeMoveit',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=[[
                        "MoveGroupAction", ["/move_group"]
                    ]],
                    enter_wait_duration=0.0),
                transitions={
                    'connected': 'LoggerConnected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.Off,
                    'topics_unavailable': Autonomy.Off,
                    'param_error': Autonomy.Off
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:255 y:130
            OperatableStateMachine.add(
                'LoggerConnected',
                LogState(text="filler", severity=Logger.REPORT_HINT),
                transitions={'done': 'GetDefaultPosition'},
                autonomy={'done': Autonomy.Off})

            # x:73 y:222
            OperatableStateMachine.add('GetDefaultPosition',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'PlanMovement',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_default',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:76 y:369
            OperatableStateMachine.add(
                'PlanMovement',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.0,
                                             action_topic=None),
                transitions={
                    'planned': 'ExecuteMovement',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.Off,
                    'failed': Autonomy.Off,
                    'topics_unavailable': Autonomy.Off,
                    'param_error': Autonomy.Off
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:76 y:472
            OperatableStateMachine.add('ExecuteMovement',
                                       ExecuteKnownTrajectoryState(
                                           timeout=3.0,
                                           max_delay=5.0,
                                           wait_duration=0.25,
                                           action_topic="/execute_trajectory"),
                                       transitions={
                                           'done': 'GetUpPosition',
                                           'failed': 'failed',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'failed': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'action_topic': 'action_topic',
                                           'trajectory': 'joint_trajectory',
                                           'status_text': 'status_text',
                                           'goal_names': 'goal_names',
                                           'goal_values': 'goal_values'
                                       })

            # x:494 y:131
            OperatableStateMachine.add('GetUpPosition',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'PlanMovement2',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_up',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:906 y:225
            OperatableStateMachine.add(
                'PlanMovement2',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.5,
                                             action_topic=None),
                transitions={
                    'planned': 'ExecuteMovement2',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.Off,
                    'failed': Autonomy.Off,
                    'topics_unavailable': Autonomy.Off,
                    'param_error': Autonomy.Off
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:906 y:449
            OperatableStateMachine.add('ExecuteMovement2',
                                       ExecuteKnownTrajectoryState(
                                           timeout=3.0,
                                           max_delay=5.0,
                                           wait_duration=0.25,
                                           action_topic="/execute_trajectory"),
                                       transitions={
                                           'done': 'finished',
                                           'failed': 'failed',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Off,
                                           'failed': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'action_topic': 'action_topic',
                                           'trajectory': 'joint_trajectory',
                                           'status_text': 'status_text',
                                           'goal_names': 'goal_names',
                                           'goal_values': 'goal_values'
                                       })

        return _state_machine
    def create(self):
        # x:1423 y:790, x:784 y:398
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "/m1n6s200_driver/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.move_group = "arm"
        _state_machine.userdata.config_vertical = "Vertical"
        _state_machine.userdata.config_home = "Home"
        _state_machine.userdata.config_retract = "Retract"
        _state_machine.userdata.components = None

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add(
                'MoveIt',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=[[
                        "MoveGroupAction", ["/move_group"]
                    ]],
                    enter_wait_duration=0.0),
                transitions={
                    'connected': 'Connected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.High,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:146 y:145
            OperatableStateMachine.add('Connected',
                                       LogState(text="Connected",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Vertical'},
                                       autonomy={'done': Autonomy.Off})

            # x:481 y:644
            OperatableStateMachine.add('Vertical',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_vertical',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:909 y:136
            OperatableStateMachine.add(
                'Plan',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.5,
                                             action_topic=None),
                transitions={
                    'planned': 'ExecTraj',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.High,
                    'failed': Autonomy.Full,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:461 y:479
            OperatableStateMachine.add('GoalTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.05],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'PathTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_goal_tolerances'
                                       })

            # x:544 y:189
            OperatableStateMachine.add('PathTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.08],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'DumpGoalTolerance',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_path_tolerances'
                                       })

            # x:389 y:34
            OperatableStateMachine.add(
                'DumpGoalTolerance',
                LogKeyState(text="Goal tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'DumpPathTolerance'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_goal_tolerances'})

            # x:653 y:50
            OperatableStateMachine.add(
                'DumpPathTolerance',
                LogKeyState(text="Path tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'Plan'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_path_tolerances'})

            # x:760 y:584
            OperatableStateMachine.add('Home',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'Plan',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_home',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:551 y:799
            OperatableStateMachine.add(
                'Decision',
                OperatorDecisionState(outcomes=["home", "vertical", "stop"],
                                      hint=None,
                                      suggestion=None),
                transitions={
                    'home': 'Home',
                    'vertical': 'Vertical',
                    'stop': 'finished'
                },
                autonomy={
                    'home': Autonomy.Off,
                    'vertical': Autonomy.Off,
                    'stop': Autonomy.Full
                })

            # x:1085 y:601
            OperatableStateMachine.add('ExecTraj',
                                       ExecuteKnownTrajectoryState(
                                           timeout=3.0,
                                           max_delay=5.0,
                                           wait_duration=0.25,
                                           action_topic="/execute_trajectory"),
                                       transitions={
                                           'done': 'Decision',
                                           'failed': 'failed',
                                           'param_error': 'ErrLog'
                                       },
                                       autonomy={
                                           'done': Autonomy.High,
                                           'failed': Autonomy.High,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'action_topic': 'action_topic',
                                           'trajectory': 'joint_trajectory',
                                           'status_text': 'status_text',
                                           'goal_names': 'goal_names',
                                           'goal_values': 'goal_values'
                                       })

            # x:999 y:715
            OperatableStateMachine.add('ErrLog',
                                       LogState(
                                           text="Param error on exec traj",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'StatusLog'},
                                       autonomy={'done': Autonomy.Off})

            # x:897 y:761
            OperatableStateMachine.add('StatusLog',
                                       LogKeyState(
                                           text=" Status {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'status_text'})

        return _state_machine
    def create(self):
        # x:1500 y:655, x:784 y:398
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "/m1n6s200_driver/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.move_group_arm = "arm"
        _state_machine.userdata.config_vertical = "Vertical"
        _state_machine.userdata.config_home = "Home"
        _state_machine.userdata.config_retract = "Retract"
        _state_machine.userdata.components = None

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add(
                'MoveIt',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=None,
                    enter_wait_duration=0.0),
                transitions={
                    'connected': 'Connected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.High,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:146 y:145
            OperatableStateMachine.add('Connected',
                                       LogState(text="Connected",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'RobotName'},
                                       autonomy={'done': Autonomy.Off})

            # x:645 y:678
            OperatableStateMachine.add('Vertical',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_vertical',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:823 y:29
            OperatableStateMachine.add(
                'Plan',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.5,
                                             action_topic=None),
                transitions={
                    'planned': 'Execute',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.High,
                    'failed': Autonomy.Full,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:1215 y:121
            OperatableStateMachine.add(
                'Execute',
                TrajectoryToFollowJointTrajectoryActionState(
                    goal_time_tolerance=3.0,
                    max_delay=-1.0,
                    wait_duration=2.0,
                    timeout=5.0,
                    action_topic=None),
                transitions={
                    'reached': 'Decision',
                    'goal_failed': 'GoalFailedLog',
                    'path_failed': 'PathTolLog',
                    'invalid_request': 'failed',
                    'param_error': 'failed',
                    'failed': 'failed'
                },
                autonomy={
                    'reached': Autonomy.Full,
                    'goal_failed': Autonomy.Off,
                    'path_failed': Autonomy.Off,
                    'invalid_request': Autonomy.Full,
                    'param_error': Autonomy.Full,
                    'failed': Autonomy.Full
                },
                remapping={
                    'trajectory_action_topic': 'trajectory_action_topic',
                    'joint_trajectory': 'joint_trajectory',
                    'joint_goal_tolerances': 'joint_goal_tolerances',
                    'joint_path_tolerances': 'joint_path_tolerances',
                    'status_text': 'status_text',
                    'goal_names': 'goal_names',
                    'goal_values': 'goal_values'
                })

            # x:616 y:559
            OperatableStateMachine.add('GoalTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.05],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'LogValues',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_goal_tolerances'
                                       })

            # x:544 y:189
            OperatableStateMachine.add('PathTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.08],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'DumpGoalTolerance',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_path_tolerances'
                                       })

            # x:389 y:34
            OperatableStateMachine.add(
                'DumpGoalTolerance',
                LogKeyState(text="Goal tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'DumpPathTolerance'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_goal_tolerances'})

            # x:560 y:50
            OperatableStateMachine.add(
                'DumpPathTolerance',
                LogKeyState(text="Path tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'Plan'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_path_tolerances'})

            # x:889 y:579
            OperatableStateMachine.add('Home',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'Plan',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_home',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:1265 y:670
            OperatableStateMachine.add('Decision',
                                       OperatorDecisionState(outcomes=[
                                           "home", "vertical", "PS", "stop"
                                       ],
                                                             hint=None,
                                                             suggestion=None),
                                       transitions={
                                           'home': 'Home',
                                           'vertical': 'Vertical',
                                           'PS': 'ApplyPS',
                                           'stop': 'finished'
                                       },
                                       autonomy={
                                           'home': Autonomy.Off,
                                           'vertical': Autonomy.Off,
                                           'PS': Autonomy.Low,
                                           'stop': Autonomy.Full
                                       })

            # x:48 y:261
            OperatableStateMachine.add(
                'ClearOM',
                ClearOctomapState(timeout=5.0,
                                  wait_duration=5,
                                  action_topic="/clear_octomap"),
                transitions={
                    'done': 'QueryPlanners',
                    'failed': 'failed'
                },
                autonomy={
                    'done': Autonomy.Low,
                    'failed': Autonomy.High
                },
                remapping={'action_topic': 'action_topic'})

            # x:47 y:402
            OperatableStateMachine.add(
                'QueryPlanners',
                QueryPlannersState(timeout=5.0,
                                   wait_duration=0.001,
                                   action_topic="/query_planner_interface"),
                transitions={
                    'done': 'LogPlanners',
                    'failed': 'failed'
                },
                autonomy={
                    'done': Autonomy.Off,
                    'failed': Autonomy.Off
                },
                remapping={
                    'action_topic': 'action_topic',
                    'planner_interfaces': 'planner_interfaces'
                })

            # x:108 y:527
            OperatableStateMachine.add(
                'LogPlanners',
                LogKeyState(text="Available Planners {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'GetPlanningScene'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'planner_interfaces'})

            # x:87 y:641
            OperatableStateMachine.add('GetPlanningScene',
                                       GetPlanningSceneState(
                                           components=1023,
                                           timeout=5.0,
                                           wait_duration=5,
                                           action_topic="/get_planning_scene"),
                                       transitions={
                                           'done': 'LogPS',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'done': Autonomy.Low,
                                           'failed': Autonomy.Low
                                       },
                                       remapping={
                                           'action_topic': 'action_topic',
                                           'scene': 'scene'
                                       })

            # x:1411 y:534
            OperatableStateMachine.add(
                'ApplyPS',
                ApplyPlanningSceneState(timeout=5.0,
                                        wait_duration=5,
                                        action_topic="/apply_planning_scene"),
                transitions={
                    'done': 'Decision',
                    'failed': 'failed'
                },
                autonomy={
                    'done': Autonomy.Low,
                    'failed': Autonomy.Low
                },
                remapping={'action_topic': 'action_topic'})

            # x:363 y:684
            OperatableStateMachine.add('LogPS',
                                       LogKeyState(
                                           text="Planning Scence {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Vertical'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'scene'})

            # x:1157 y:336
            OperatableStateMachine.add('PathTolLog',
                                       LogState(text="Path tolerance failure",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.High})

            # x:1254 y:288
            OperatableStateMachine.add(
                'GoalFailedLog',
                LogState(text="Failed to reach goal tolerance",
                         severity=Logger.REPORT_HINT),
                transitions={'done': 'Decision'},
                autonomy={'done': Autonomy.High})

            # x:279 y:190
            OperatableStateMachine.add('RobotName',
                                       LogKeyState(
                                           text="Robot Name ({})",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'ClearOM'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'robot_name'})

            # x:632 y:279
            OperatableStateMachine.add('LogValues',
                                       LogKeyState(
                                           text="Joint Values {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'PathTolerances'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'joint_values'})

        return _state_machine
    def create(self):
        # x:1490 y:191, x:764 y:433
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "/m1n6s200_driver/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.config_vertical = "Vertical"
        _state_machine.userdata.config_home = "Home"
        _state_machine.userdata.config_retract = "Retract"
        _state_machine.userdata.components = None

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add(
                'MoveIt',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities=[[
                        "/move_group", ["arm", "gripper"]
                    ]],
                    action_type_and_topics=None,
                    enter_wait_duration=0.0),
                transitions={
                    'connected': 'Connected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.High,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:52 y:151
            OperatableStateMachine.add('Connected',
                                       LogState(text="Connected",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'SetMG'},
                                       autonomy={'done': Autonomy.Off})

            # x:690 y:610
            OperatableStateMachine.add('DumpJVUser',
                                       LogKeyState(
                                           text="Joint Values {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'GetJVList'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'user_joint_values'})

            # x:243 y:287
            OperatableStateMachine.add('GetNames',
                                       GetJointNamesFromMoveGroupState(),
                                       transitions={
                                           'retrieved': 'UserNames',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'selected_move_group',
                                           'move_group': 'move_group',
                                           'joint_names': 'user_joint_names'
                                       })

            # x:51 y:257
            OperatableStateMachine.add(
                'SetMG',
                UserDataState(data="arm"),
                transitions={'done': 'GetNames'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'selected_move_group'})

            # x:438 y:420
            OperatableStateMachine.add(
                'GetJVUser',
                GetCurrentJointValuesUserState(
                    timeout=5.0,
                    joint_states_topic='/m1n6s200_driver/joint_states'),
                transitions={
                    'retrieved': 'DumpJVUser',
                    'timeout': 'failed'
                },
                autonomy={
                    'retrieved': Autonomy.Off,
                    'timeout': Autonomy.High
                },
                remapping={
                    'joint_names': 'no_ee_names',
                    'joint_values': 'user_joint_values'
                })

            # x:853 y:612
            OperatableStateMachine.add(
                'GetJVList',
                GetCurrentJointValuesListState(
                    joint_names=[
                        'm1n6s200_joint_1', 'm1n6s200_joint_2',
                        'm1n6s200_joint_3', 'm1n6s200_joint_4'
                    ],
                    timeout=None,
                    joint_states_topic='/m1n6s200_driver/joint_states'),
                transitions={
                    'retrieved': 'ListNames',
                    'timeout': 'failed'
                },
                autonomy={
                    'retrieved': Autonomy.Off,
                    'timeout': Autonomy.High
                },
                remapping={
                    'joint_names': 'list_joint_names',
                    'joint_values': 'list_joint_values'
                })

            # x:572 y:156
            OperatableStateMachine.add('ListNames',
                                       LogKeyState(
                                           text='List Names {}',
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'ListValues'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'list_joint_names'})

            # x:647 y:42
            OperatableStateMachine.add('ListValues',
                                       LogKeyState(
                                           text='List Values {}',
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'SetConfigName'},
                                       autonomy={'done': Autonomy.Full},
                                       remapping={'data': 'list_joint_values'})

            # x:188 y:388
            OperatableStateMachine.add('UserNames',
                                       LogKeyState(
                                           text='User names {}',
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'JustArmJoints'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'user_joint_names'})

            # x:222 y:484
            OperatableStateMachine.add(
                'JustArmJoints',
                UserDataState(data=[
                    'm1n6s200_joint_1', 'm1n6s200_joint_2', 'm1n6s200_joint_3',
                    'm1n6s200_joint_4', 'm1n6s200_joint_5', 'm1n6s200_joint_6'
                ]),
                transitions={'done': 'GetJVUser'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'no_ee_names'})

            # x:1000 y:34
            OperatableStateMachine.add('GetRetract',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'JVTrajectory',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_name',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:802 y:44
            OperatableStateMachine.add('SetConfigName',
                                       UserDataState(data="Retract"),
                                       transitions={'done': 'GetRetract'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'config_name'})

            # x:1035 y:139
            OperatableStateMachine.add(
                'JVTrajectory',
                JointValuesToTrajectoryState(duration=10.0),
                transitions={
                    'done': 'SetGoal',
                    'param_error': 'failed'
                },
                autonomy={
                    'done': Autonomy.Off,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:1131 y:464
            OperatableStateMachine.add(
                'FJTA',
                TrajectoryToFollowJointTrajectoryActionState(
                    goal_time_tolerance=3.0,
                    max_delay=-1.0,
                    wait_duration=2.0,
                    timeout=1.0,
                    action_topic=None),
                transitions={
                    'reached': 'JV2MoveAction',
                    'goal_failed': 'GoalTolFailure',
                    'path_failed': 'PathTolFailed',
                    'invalid_request': 'failed',
                    'param_error': 'failed',
                    'failed': 'failed'
                },
                autonomy={
                    'reached': Autonomy.Full,
                    'goal_failed': Autonomy.Off,
                    'path_failed': Autonomy.Off,
                    'invalid_request': Autonomy.Full,
                    'param_error': Autonomy.Full,
                    'failed': Autonomy.Full
                },
                remapping={
                    'trajectory_action_topic': 'trajectory_action_topic',
                    'joint_trajectory': 'joint_trajectory',
                    'joint_goal_tolerances': 'joint_goal_tolerances',
                    'joint_path_tolerances': 'joint_path_tolerances',
                    'status_text': 'status_text',
                    'goal_names': 'goal_names',
                    'goal_values': 'goal_values'
                })

            # x:1051 y:230
            OperatableStateMachine.add('SetGoal',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.02],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'SetPath',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_goal_tolerances'
                                       })

            # x:1062 y:349
            OperatableStateMachine.add('SetPath',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.0],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'FJTA',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Off
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_path_tolerances'
                                       })

            # x:1386 y:539
            OperatableStateMachine.add(
                'JV2MoveAction',
                JointValuesToMoveActionState(
                    joint_names=['m1n6s200_joint_1', 'm1n6s200_joint_2'],
                    joint_values=[0.0, 1.57],
                    move_group='arm',
                    action_topic='/move_group',
                    joint_tolerance=0.02,
                    constraint_weight=1.0,
                    allowed_planning_time=4.0,
                    wait_duration=0.2,
                    timeout=30.0),
                transitions={
                    'reached': 'SetConfigName_2',
                    'param_error': 'failed',
                    'planning_failed': 'failed',
                    'control_failed': 'CtrlFailed',
                    'failed': 'failed'
                },
                autonomy={
                    'reached': Autonomy.Full,
                    'param_error': Autonomy.Full,
                    'planning_failed': Autonomy.Full,
                    'control_failed': Autonomy.Full,
                    'failed': Autonomy.Off
                },
                remapping={
                    'move_group': 'move_group',
                    'action_topic': 'action_topic',
                    'status_text': 'status_text',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values'
                })

            # x:1324 y:272
            OperatableStateMachine.add('CtrlFailed',
                                       LogState(text="Control failed",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'finished'},
                                       autonomy={'done': Autonomy.Full})

            # x:1648 y:554
            OperatableStateMachine.add('GetHome',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'SayJointNames',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group': 'move_group',
                                           'config_name': 'config_name',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:1489 y:749
            OperatableStateMachine.add('SetConfigName_2',
                                       UserDataState(data="Home"),
                                       transitions={'done': 'ConfigNamePrint'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'config_name'})

            # x:1644 y:267
            OperatableStateMachine.add('MoveGroup',
                                       MoveGroupState(timeout=30.0,
                                                      wait_duration=0.02,
                                                      move_group=None),
                                       transitions={
                                           'reached': 'finished',
                                           'control_failed': 'CtrlFailed',
                                           'planning_failed': 'failed',
                                           'param_error': 'failed',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'reached': Autonomy.Full,
                                           'control_failed': Autonomy.Full,
                                           'planning_failed': Autonomy.High,
                                           'param_error': Autonomy.Full,
                                           'failed': Autonomy.Full
                                       },
                                       remapping={
                                           'move_group':
                                           'move_group',
                                           'joint_names':
                                           'joint_names',
                                           'joint_values':
                                           'joint_values',
                                           'status_text':
                                           'status_text',
                                           'planned_trajectory':
                                           'planned_trajectory',
                                           'executed_trajectory':
                                           'executed_trajectory'
                                       })

            # x:1689 y:666
            OperatableStateMachine.add('ConfigNamePrint',
                                       LogKeyState(
                                           text="Config {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'GetHome'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'config_name'})

            # x:1701 y:450
            OperatableStateMachine.add('SayJointNames',
                                       LogKeyState(
                                           text="Joint names {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'SayJointValues'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'joint_names'})

            # x:1550 y:367
            OperatableStateMachine.add('SayJointValues',
                                       LogKeyState(
                                           text="Values {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'MoveGroup'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'joint_values'})

            # x:1113 y:682
            OperatableStateMachine.add('PathTolFailed',
                                       LogState(text="Path tolerance failure",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'JV2MoveAction'},
                                       autonomy={'done': Autonomy.High})

            # x:1240 y:661
            OperatableStateMachine.add('GoalTolFailure',
                                       LogState(text="Goal tolerance failure",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'JV2MoveAction'},
                                       autonomy={'done': Autonomy.Off})

        return _state_machine
    def create(self):
        # x:1453 y:629, x:807 y:466
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "/m1n6s200_driver/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.move_group_arm = "arm"
        _state_machine.userdata.config_vertical = "Vertical"
        _state_machine.userdata.config_home = "Home"
        _state_machine.userdata.config_retract = "Retract"

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add(
                'MoveIt',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=[[
                        "MoveGroupAction", ["/move_group"]
                    ]],
                    enter_wait_duration=0.0),
                transitions={
                    'connected': 'Connected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.High,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:132 y:177
            OperatableStateMachine.add('Connected',
                                       LogState(text="Connected",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Vertical'},
                                       autonomy={'done': Autonomy.Off})

            # x:61 y:638
            OperatableStateMachine.add('Vertical',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_vertical',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:823 y:29
            OperatableStateMachine.add(
                'Plan',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.5,
                                             action_topic=None),
                transitions={
                    'planned': 'Execute',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.High,
                    'failed': Autonomy.Full,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:1215 y:121
            OperatableStateMachine.add(
                'Execute',
                TrajectoryToFollowJointTrajectoryActionState(
                    goal_time_tolerance=3.0,
                    max_delay=-1.0,
                    wait_duration=2.0,
                    timeout=1.0,
                    action_topic=None),
                transitions={
                    'reached': 'Decision',
                    'goal_failed': 'GoalFail',
                    'path_failed': 'PathFail',
                    'invalid_request': 'failed',
                    'param_error': 'failed',
                    'failed': 'failed'
                },
                autonomy={
                    'reached': Autonomy.Full,
                    'goal_failed': Autonomy.Low,
                    'path_failed': Autonomy.Low,
                    'invalid_request': Autonomy.Full,
                    'param_error': Autonomy.Full,
                    'failed': Autonomy.Full
                },
                remapping={
                    'trajectory_action_topic': 'trajectory_action_topic',
                    'joint_trajectory': 'joint_trajectory',
                    'joint_goal_tolerances': 'joint_goal_tolerances',
                    'joint_path_tolerances': 'joint_path_tolerances',
                    'status_text': 'status_text',
                    'goal_names': 'goal_names',
                    'goal_values': 'goal_values'
                })

            # x:342 y:441
            OperatableStateMachine.add('GoalTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.05],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'PathTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_goal_tolerances'
                                       })

            # x:251 y:334
            OperatableStateMachine.add('PathTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.08],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'DumpGoalTolerance',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_path_tolerances'
                                       })

            # x:389 y:34
            OperatableStateMachine.add(
                'DumpGoalTolerance',
                LogKeyState(text="Goal tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'DumpPathTolerance'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_goal_tolerances'})

            # x:560 y:50
            OperatableStateMachine.add(
                'DumpPathTolerance',
                LogKeyState(text="Path tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'Plan'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_path_tolerances'})

            # x:889 y:579
            OperatableStateMachine.add('Home',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'Plan',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_home',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:1265 y:670
            OperatableStateMachine.add(
                'Decision',
                OperatorDecisionState(outcomes=["home", "vertical", "stop"],
                                      hint=None,
                                      suggestion=None),
                transitions={
                    'home': 'Home',
                    'vertical': 'Vertical',
                    'stop': 'finished'
                },
                autonomy={
                    'home': Autonomy.Off,
                    'vertical': Autonomy.Off,
                    'stop': Autonomy.Full
                })

            # x:1238 y:387
            OperatableStateMachine.add('PathFail',
                                       LogKeyState(
                                           text="Path failure {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.High},
                                       remapping={'data': 'status_text'})

            # x:1136 y:380
            OperatableStateMachine.add('GoalFail',
                                       LogKeyState(
                                           text="Goal failure {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.High},
                                       remapping={'data': 'status_text'})

        return _state_machine
    def create(self):
        # x:1066 y:202, x:512 y:391
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.move_group_arm = "arm"
        _state_machine.userdata.config_name = "Home"

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:41 y:57
            OperatableStateMachine.add(
                'SetupMoveItProxy',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=None,
                    enter_wait_duration=0.5),
                transitions={
                    'connected': 'GetHome',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.Off,
                    'topics_unavailable': Autonomy.High,
                    'param_error': Autonomy.High
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:469 y:185
            OperatableStateMachine.add('PrintConfig',
                                       LogKeyState(
                                           text=" Config {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'MoveHome'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'joint_names'})

            # x:698 y:110
            OperatableStateMachine.add('MoveHome',
                                       UserDataToMoveActionState(
                                           joint_tolerance=0.05,
                                           constraint_weight=1.0,
                                           allowed_planning_time=2.0,
                                           wait_duration=2.0,
                                           timeout=30.0,
                                           action_topic=None),
                                       transitions={
                                           'reached': 'MoveVertical',
                                           'param_error': 'failed',
                                           'planning_failed': 'failed',
                                           'control_failed': 'failed',
                                           'failed': 'failed'
                                       },
                                       autonomy={
                                           'reached': Autonomy.Full,
                                           'param_error': Autonomy.Full,
                                           'planning_failed': Autonomy.Full,
                                           'control_failed': Autonomy.Full,
                                           'failed': Autonomy.Off
                                       },
                                       remapping={
                                           'move_group': 'move_group',
                                           'action_topic': 'action_topic',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values',
                                           'status_text': 'status_text'
                                       })

            # x:453 y:563
            OperatableStateMachine.add(
                'MoveVertical',
                JointValuesToMoveActionState(joint_names=[
                    'm1n6s200_joint_1', 'm1n6s200_joint_2', 'm1n6s200_joint_3',
                    'm1n6s200_joint_4', 'm1n6s200_joint_5', 'm1n6s200_joint_6'
                ],
                                             joint_values=[
                                                 0.0, 3.14, 3.14, 0.0, 0.0, 0.0
                                             ],
                                             move_group="arm",
                                             action_topic="/move_group",
                                             joint_tolerance=0.05,
                                             constraint_weight=1.0,
                                             allowed_planning_time=2.0,
                                             wait_duration=2.0,
                                             timeout=10.0),
                transitions={
                    'reached': 'GetHome',
                    'param_error': 'failed',
                    'planning_failed': 'failed',
                    'control_failed': 'failed',
                    'failed': 'failed'
                },
                autonomy={
                    'reached': Autonomy.Low,
                    'param_error': Autonomy.High,
                    'planning_failed': Autonomy.High,
                    'control_failed': Autonomy.High,
                    'failed': Autonomy.High
                },
                remapping={
                    'move_group': 'move_group',
                    'action_topic': 'action_topic',
                    'status_text': 'status_text',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values'
                })

            # x:87 y:259
            OperatableStateMachine.add('GetHome',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'PrintConfig',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.High,
                                           'param_error': Autonomy.High
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_name',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

        return _state_machine
    def create(self):
        # x:273 y:335, x:947 y:170
        _state_machine = OperatableStateMachine(
            outcomes=['finished', 'failed'])
        _state_machine.userdata.action_topic = "/move_group"
        _state_machine.userdata.trajectory_action_topic = "/m1n6s200_driver/arm_controller/follow_joint_trajectory"
        _state_machine.userdata.gripper_action_topic = "/m1n6s200_driver/gripper_controller/follow_joint_trajectory"
        _state_machine.userdata.move_group_arm = "arm"
        _state_machine.userdata.move_group_gripper = "gripper"
        _state_machine.userdata.config_name_vertical = "Vertical"
        _state_machine.userdata.config_name_home = "Home"
        _state_machine.userdata.config_name_retract = "Retract"
        _state_machine.userdata.config_name_open = "Open"
        _state_machine.userdata.config_name_close = "Close"

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

        # [/MANUAL_CREATE]

        with _state_machine:
            # x:30 y:40
            OperatableStateMachine.add(
                'MoveIt',
                SetupProxyMoveItClientState(
                    robot_description="/robot_description",
                    robot_description_semantic=None,
                    move_group_capabilities="/move_group",
                    action_type_and_topics=[[
                        "MoveGroupAction", ["/move_group"]
                    ]],
                    enter_wait_duration=2.0),
                transitions={
                    'connected': 'Connected',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'connected': Autonomy.High,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'robot_name': 'robot_name',
                    'move_groups': 'move_groups'
                })

            # x:132 y:177
            OperatableStateMachine.add('Connected',
                                       LogState(text="Connected",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.Off})

            # x:303 y:531
            OperatableStateMachine.add('Vertical',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name':
                                           'config_name_vertical',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:823 y:29
            OperatableStateMachine.add(
                'Plan',
                JointValuesToMoveItPlanState(timeout=5.0,
                                             enter_wait_duration=0.5,
                                             action_topic=None),
                transitions={
                    'planned': 'SwitchController',
                    'failed': 'failed',
                    'topics_unavailable': 'failed',
                    'param_error': 'failed'
                },
                autonomy={
                    'planned': Autonomy.Low,
                    'failed': Autonomy.Full,
                    'topics_unavailable': Autonomy.Full,
                    'param_error': Autonomy.Full
                },
                remapping={
                    'action_topic': 'action_topic',
                    'move_group': 'move_group',
                    'joint_names': 'joint_names',
                    'joint_values': 'joint_values',
                    'joint_trajectory': 'joint_trajectory'
                })

            # x:1611 y:323
            OperatableStateMachine.add(
                'Execute',
                TrajectoryToFollowJointTrajectoryActionState(
                    goal_time_tolerance=3.0,
                    max_delay=-1.0,
                    wait_duration=2.0,
                    timeout=1.0,
                    action_topic=None),
                transitions={
                    'reached': 'Decision',
                    'goal_failed': 'LogFail',
                    'path_failed': 'LogFail',
                    'invalid_request': 'InvalidRequestError',
                    'param_error': 'failed',
                    'failed': 'LogFail'
                },
                autonomy={
                    'reached': Autonomy.Full,
                    'goal_failed': Autonomy.Off,
                    'path_failed': Autonomy.Off,
                    'invalid_request': Autonomy.Off,
                    'param_error': Autonomy.Full,
                    'failed': Autonomy.Off
                },
                remapping={
                    'trajectory_action_topic': 'trajectory_action_topic',
                    'joint_trajectory': 'joint_trajectory',
                    'joint_goal_tolerances': 'joint_goal_tolerances',
                    'joint_path_tolerances': 'joint_path_tolerances',
                    'status_text': 'status_text',
                    'goal_names': 'goal_names',
                    'goal_values': 'goal_values'
                })

            # x:469 y:348
            OperatableStateMachine.add('GoalTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.05],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'PathTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_goal_tolerances'
                                       })

            # x:372 y:200
            OperatableStateMachine.add('PathTolerances',
                                       SetJointTrajectoryTolerancesState(
                                           position_constraints=[0.08],
                                           velocity_constraints=[0.0],
                                           acceleration_constraints=[0.0]),
                                       transitions={
                                           'configured': 'DumpGoalTolerance',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'configured': Autonomy.Off,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'joint_names':
                                           'joint_names',
                                           'joint_tolerances':
                                           'joint_path_tolerances'
                                       })

            # x:348 y:16
            OperatableStateMachine.add(
                'DumpGoalTolerance',
                LogKeyState(text="Goal tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'DumpPathTolerance'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_goal_tolerances'})

            # x:530 y:21
            OperatableStateMachine.add(
                'DumpPathTolerance',
                LogKeyState(text="Path tolerance {}",
                            severity=Logger.REPORT_HINT),
                transitions={'done': 'LogActiveMoveGroup'},
                autonomy={'done': Autonomy.Off},
                remapping={'data': 'joint_path_tolerances'})

            # x:912 y:495
            OperatableStateMachine.add('Home',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.Full
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_arm',
                                           'config_name': 'config_name_home',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:187 y:726
            OperatableStateMachine.add('Decision',
                                       OperatorDecisionState(outcomes=[
                                           "home", "vertical", "stop", "close",
                                           "open"
                                       ],
                                                             hint=None,
                                                             suggestion=None),
                                       transitions={
                                           'home': 'Home',
                                           'vertical': 'Vertical',
                                           'stop': 'finished',
                                           'close': 'Close',
                                           'open': 'Open'
                                       },
                                       autonomy={
                                           'home': Autonomy.Low,
                                           'vertical': Autonomy.Low,
                                           'stop': Autonomy.Full,
                                           'close': Autonomy.Low,
                                           'open': Autonomy.Low
                                       })

            # x:748 y:676
            OperatableStateMachine.add('Close',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.High
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_gripper',
                                           'config_name': 'config_name_close',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:1083 y:49
            OperatableStateMachine.add('SwitchController',
                                       DecisionState(
                                           outcomes=["arm", "gripper"],
                                           conditions=lambda mg: "gripper"
                                           if mg == "gripper" else "arm"),
                                       transitions={
                                           'arm': 'Execute',
                                           'gripper': 'Gripper'
                                       },
                                       autonomy={
                                           'arm': Autonomy.Low,
                                           'gripper': Autonomy.Low
                                       },
                                       remapping={'input_value': 'move_group'})

            # x:1244 y:428
            OperatableStateMachine.add(
                'Gripper',
                TrajectoryToFollowJointTrajectoryActionState(
                    goal_time_tolerance=3.0,
                    max_delay=-1.0,
                    wait_duration=2.0,
                    timeout=1.0,
                    action_topic=None),
                transitions={
                    'reached': 'Decision',
                    'goal_failed': 'LogFail',
                    'path_failed': 'LogFail',
                    'invalid_request': 'InvalidRequestError',
                    'param_error': 'failed',
                    'failed': 'LogFail'
                },
                autonomy={
                    'reached': Autonomy.Off,
                    'goal_failed': Autonomy.Off,
                    'path_failed': Autonomy.Off,
                    'invalid_request': Autonomy.Off,
                    'param_error': Autonomy.High,
                    'failed': Autonomy.Off
                },
                remapping={
                    'trajectory_action_topic': 'gripper_action_topic',
                    'joint_trajectory': 'joint_trajectory',
                    'joint_goal_tolerances': 'joint_goal_tolerances',
                    'joint_path_tolerances': 'joint_path_tolerances',
                    'status_text': 'status_text',
                    'goal_names': 'goal_names',
                    'goal_values': 'goal_values'
                })

            # x:612 y:757
            OperatableStateMachine.add('Open',
                                       GetJointValuesFromSrdfConfigState(),
                                       transitions={
                                           'retrieved': 'GoalTolerances',
                                           'param_error': 'failed'
                                       },
                                       autonomy={
                                           'retrieved': Autonomy.Low,
                                           'param_error': Autonomy.High
                                       },
                                       remapping={
                                           'robot_name': 'robot_name',
                                           'selected_move_group':
                                           'move_group_gripper',
                                           'config_name': 'config_name_open',
                                           'move_group': 'move_group',
                                           'joint_names': 'joint_names',
                                           'joint_values': 'joint_values'
                                       })

            # x:745 y:1002
            OperatableStateMachine.add('InvalidRequestError',
                                       LogState(text="Invalid request",
                                                severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.Off})

            # x:1315 y:971
            OperatableStateMachine.add('LogFail',
                                       LogKeyState(
                                           text="Failed {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Decision'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'status_text'})

            # x:716 y:88
            OperatableStateMachine.add('LogActiveMoveGroup',
                                       LogKeyState(
                                           text="Active Move Group is {}",
                                           severity=Logger.REPORT_HINT),
                                       transitions={'done': 'Plan'},
                                       autonomy={'done': Autonomy.Off},
                                       remapping={'data': 'move_group'})

        return _state_machine