コード例 #1
0
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)         
コード例 #2
0
    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'
                                   })
コード例 #3
0
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)
コード例 #4
0
    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'} )