-
Notifications
You must be signed in to change notification settings - Fork 90
Description
Feature request
Feature description
In Dashing, the ComposableNodeContainer action and the corresponding ComposableNode description were introduced. A ComposableNode description also takes a managed node (aka lifecycle node). However, configuring and activating a lifecycle node by a ComposableNode description (instead of a LifecycleNode action) fails:
on_inactive_node_B_handler = launch.actions.RegisterEventHandler(
launch_ros.event_handlers.OnStateTransition(
target_lifecycle_node=node_B,
goal_state='inactive',
entities=[configure_node_A]))
> Caught exception in launch (see debug for traceback): OnStateTransition
requires a 'LifecycleNode' action as the target
Using a matcher is also not possible but gives an exception.
on_inactive_node_B_handler = launch.actions.RegisterEventHandler(
launch_ros.event_handlers.OnStateTransition(
matcher=launch_ros.events.lifecycle.matches_node_name("/example/node_B"),
goal_state='inactive',
entities=[configure_node_A]))
> ... return lambda action: action.node_name == node_name
AttributeError: 'Shutdown' object has no attribute 'node_name'
When calling matches_action with a ComposableNode description is simply does nothing:
configure_node_B = launch.actions.EmitEvent(
event=launch_ros.events.lifecycle.ChangeState(
lifecycle_node_matcher=launch.events.matchers.matches_action(node_B),
transition_id=lifecycle_msgs.msg.Transition.TRANSITION_CONFIGURE,
)
)
Probably, the whole matching and event system for lifecycle action and events has to be extended for ComposbleNode descriptions.
As a starting for experiments, you may use the damped_pendulum_with_transport_delay_as_composed_node.launch.py of the fmi_adapter_examples package, cf. https://github.com/boschresearch/fmi_adapter_ros2/blob/0.1.5/fmi_adapter_examples/launch/damped_pendulum_with_transport_delay_as_composed_node.launch.py and remove comments in lines 90 to 103 and 106 to 108.