class RecoverableMoveBase(smach.StateMachine, Loggable): def __init__(self): smach.StateMachine.__init__(self, outcomes=['succeeded', 'failure', 'preempted'], input_keys=['goal_pose']) self.userdata.n_move_base_fails = 0 self._move_base_action = MoveBaseActionState() self._recover_move_base = RecoverMoveBase() with self: smach.StateMachine.add('MOVE_BASE', self._move_base_action, transitions={'succeeded': 'succeeded', 'aborted': 'RECOVER_MOVE_BASE', 'preempted': 'preempted'} ) smach.StateMachine.add('RECOVER_MOVE_BASE', self._recover_move_base, transitions={'succeeded': 'MOVE_BASE', 'failure': 'failure'} ) def execute(self, userdata=smach.UserData()): outcome = smach.StateMachine.execute(self, userdata) if outcome == 'succeeded': self.get_logger().log_waypoint_success(userdata.goal_pose) elif outcome == 'failure': self.get_logger().log_waypoint_fail(userdata.goal_pose) return outcome def set_patroller_thresholds(self, max_move_base_recovery_attempts): self._recover_move_base.set_patroller_thresholds(max_move_base_recovery_attempts)
def __init__(self): smach.StateMachine.__init__( self, outcomes=['succeeded', 'failure', 'preempted'], input_keys=['goal_pose']) self.userdata.n_move_base_fails = 0 self._move_base_action = MoveBaseActionState() self._recover_move_base = RecoverMoveBase() with self: smach.StateMachine.add('MOVE_BASE', self._move_base_action, transitions={ 'succeeded': 'succeeded', 'aborted': 'RECOVER_MOVE_BASE', 'preempted': 'preempted' }) smach.StateMachine.add('RECOVER_MOVE_BASE', self._recover_move_base, transitions={ 'succeeded': 'MOVE_BASE', 'failure': 'failure' })
class RecoverableMoveBase(smach.StateMachine, Loggable): def __init__(self): smach.StateMachine.__init__( self, outcomes=['succeeded', 'failure', 'preempted'], input_keys=['goal_pose']) self.userdata.n_move_base_fails = 0 self._move_base_action = MoveBaseActionState() self._recover_move_base = RecoverMoveBase() with self: smach.StateMachine.add('MOVE_BASE', self._move_base_action, transitions={ 'succeeded': 'succeeded', 'aborted': 'RECOVER_MOVE_BASE', 'preempted': 'preempted' }) smach.StateMachine.add('RECOVER_MOVE_BASE', self._recover_move_base, transitions={ 'succeeded': 'MOVE_BASE', 'failure': 'failure' }) def execute(self, userdata=smach.UserData()): outcome = smach.StateMachine.execute(self, userdata) if outcome == 'succeeded': self.get_logger().log_waypoint_success(userdata.goal_pose) elif outcome == 'failure': self.get_logger().log_waypoint_fail(userdata.goal_pose) return outcome def set_patroller_thresholds(self, max_move_base_recovery_attempts): self._recover_move_base.set_patroller_thresholds( max_move_base_recovery_attempts)
def __init__(self): smach.StateMachine.__init__(self, outcomes=['succeeded', 'failure', 'preempted'], input_keys=['goal_pose']) self.userdata.n_move_base_fails = 0 self._move_base_action = MoveBaseActionState() self._recover_move_base = RecoverMoveBase() with self: smach.StateMachine.add('MOVE_BASE', self._move_base_action, transitions={'succeeded': 'succeeded', 'aborted': 'RECOVER_MOVE_BASE', 'preempted': 'preempted'} ) smach.StateMachine.add('RECOVER_MOVE_BASE', self._recover_move_base, transitions={'succeeded': 'MOVE_BASE', 'failure': 'failure'} )