def activate(self): if (self.state == State.PRIMARY_STATE_INACTIVE): self.state = State.TRANSITION_STATE_ACTIVATING self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition(id=Transition.TRANSITION_ACTIVATE, label=self.get_label( Transition, Transition.TRANSITION_ACTIVATE)), start_state=State(id=State.PRIMARY_STATE_INACTIVE, label=self.get_label( State, State.PRIMARY_STATE_INACTIVE)), goal_state=State(id=self.state, label=self.get_label(State, self.state)))) task_activate = self.executor.create_task(self.on_activate) self.executor.spin_until_future_complete(task_activate) result_transition = None if (task_activate.result() == Transition.TRANSITION_CALLBACK_SUCCESS): self.state = State.PRIMARY_STATE_ACTIVE result_transition = Transition.TRANSITION_ON_ACTIVATE_SUCCESS elif (task_activate.result() == Transition.TRANSITION_CALLBACK_FAILURE): self.state = State.PRIMARY_STATE_INACTIVE result_transition = Transition.TRANSITION_ON_ACTIVATE_FAILURE else: self.state = State.TRANSITION_STATE_ERRORPROCESSING result_transition = Transition.TRANSITION_ON_CONFIGURE_ERROR self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition(id=result_transition, label=self.get_label( Transition, result_transition)), start_state=State(id=State.TRANSITION_STATE_ACTIVATING, label=self.get_label( State, State.TRANSITION_STATE_ACTIVATING)), goal_state=State(id=self.state, label=self.get_label(State, self.state)))) return task_activate.result() else: return Transition.TRANSITION_CALLBACK_FAILURE
def do_transition_(self, id): req = ChangeState.Request() req.transition = Transition() req.transition.id = id fut = self.change_state_client_.call_async(req) rclpy.spin_until_future_complete(self.node_, fut, executor=self.exe_) resp = fut.result() self.assertTrue(resp is not None) self.assertTrue(resp.success)
def __init__(self, **kwargs): assert all(['_' + key in self.__slots__ for key in kwargs.keys()]), \ "Invalid arguments passed to constructor: %r" % kwargs.keys() from lifecycle_msgs.msg import Transition self.transition = kwargs.get('transition', Transition()) from lifecycle_msgs.msg import State self.start_state = kwargs.get('start_state', State()) from lifecycle_msgs.msg import State self.goal_state = kwargs.get('goal_state', State())
def __init__(self, **kwargs): assert all('_' + key in self.__slots__ for key in kwargs.keys()), \ 'Invalid arguments passed to constructor: %s' % \ ', '.join(sorted(k for k in kwargs.keys() if '_' + k not in self.__slots__)) from lifecycle_msgs.msg import Transition self.transition = kwargs.get('transition', Transition()) from lifecycle_msgs.msg import State self.start_state = kwargs.get('start_state', State()) from lifecycle_msgs.msg import State self.goal_state = kwargs.get('goal_state', State())
def create(self): if (self.state == State.PRIMARY_STATE_UNKNOWN): self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition(id=Transition.TRANSITION_CREATE, label=self.get_label( Transition, Transition.TRANSITION_CREATE)), start_state=State(id=State.PRIMARY_STATE_UNKNOWN, label=self.get_label( State, State.PRIMARY_STATE_UNKNOWN)), goal_state=State(id=State.PRIMARY_STATE_UNCONFIGURED, label=self.get_label( State, State.PRIMARY_STATE_UNCONFIGURED)))) self.state = State.PRIMARY_STATE_UNCONFIGURED return Transition.TRANSITION_CALLBACK_SUCCESS else: return Transition.TRANSITION_CALLBACK_FAILURE
def __init__(self, **kwargs): assert all(['_' + key in self.__slots__ for key in kwargs.keys()]), \ "Invalid arguments passed to constructor: %r" % kwargs.keys() self.node_name = kwargs.get('node_name', str()) from lifecycle_msgs.msg import Transition self.transition = kwargs.get('transition', Transition())
def shutdown(self): if (self.state == State.PRIMARY_STATE_UNCONFIGURED): self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition( id=Transition.TRANSITION_UNCONFIGURED_SHUTDOWN, label=self.get_label( Transition, Transition.TRANSITION_UNCONFIGURED_SHUTDOWN)), start_state=State(id=State.PRIMARY_STATE_UNCONFIGURED, label=self.get_label( State, State.PRIMARY_STATE_UNCONFIGURED)), goal_state=State( id=State.TRANSITION_STATE_SHUTTINGDOWN, label=self.get_label( State, State.TRANSITION_STATE_SHUTTINGDOWN)))) elif (self.state == State.PRIMARY_STATE_INACTIVE): self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition( id=Transition.TRANSITION_INACTIVE_SHUTDOWN, label=self.get_label( Transition, Transition.TRANSITION_INACTIVE_SHUTDOWN)), start_state=State(id=State.PRIMARY_STATE_INACTIVE, label=self.get_label( State, State.PRIMARY_STATE_INACTIVE)), goal_state=State( id=State.TRANSITION_STATE_SHUTTINGDOWN, label=self.get_label( State, State.TRANSITION_STATE_SHUTTINGDOWN)))) elif (self.state == State.PRIMARY_STATE_ACTIVE): self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition( id=Transition.TRANSITION_ACTIVE_SHUTDOWN, label=self.get_label( Transition, Transition.TRANSITION_ACTIVE_SHUTDOWN)), start_state=State(id=State.PRIMARY_STATE_ACTIVE, label=self.get_label( State, State.PRIMARY_STATE_ACTIVE)), goal_state=State( id=State.TRANSITION_STATE_SHUTTINGDOWN, label=self.get_label( State, State.TRANSITION_STATE_SHUTTINGDOWN)))) else: return Transition.TRANSITION_CALLBACK_FAILURE self.state = State.TRANSITION_STATE_SHUTTINGDOWN task_shutdown = self.executor.create_task(self.on_shutdown) self.executor.spin_until_future_complete(task_shutdown) result_transition = None if (task_shutdown.result() == Transition.TRANSITION_CALLBACK_SUCCESS): self.state = State.PRIMARY_STATE_FINALIZED result_transition = Transition.TRANSITION_ON_SHUTDOWN_SUCCESS else: self.state = State.TRANSITION_STATE_ERRORPROCESSING result_transition = Transition.TRANSITION_ON_SHUTDOWN_ERROR self.pub_transition_event.publish( TransitionEvent( timestamp=self.get_clock().now().nanoseconds, transition=Transition(id=result_transition, label=self.get_label( Transition, result_transition)), start_state=State(id=State.TRANSITION_STATE_SHUTTINGDOWN, label=self.get_label( State, State.TRANSITION_STATE_SHUTTINGDOWN)), goal_state=State(id=self.state, label=self.get_label(State, self.state)))) return task_shutdown.result()
def send_request(self): transition = Transition() transition.id = 4 # Disable JointStatePublisher self.req.transition = transition self.future = self.cli.call_async(self.req)