Unable to call a service for lifecycle node inside composable component

asked 2023-06-19 16:07:35 -0600

Alias6128 gravatar image

Hello, I have one lunch file for creating composable component A. Another launch file pushes lifecycle node B inside the container A. At this point I am able to call a service for changing state of a node B and it starts to produce data (Node B is a driver to ouster lidar sensor). Problem appears when I add another launch file which pushes another node C inside the container A. When I launch all three launch files I am no longer able to comunicate with node B. After calling a service for changing a state service never gets finished.

ros2 service call /sensing/lidar/ouster_driver/change_state lifecycle_msgs/srv/ChangeState "{transition: {id: 1}}"
waiting for service to become available...

Node B is visible by ros2 node tool

ros2 node info /sensing/lidar/ouster_driver

    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /parameter_events: rcl_interfaces/msg/ParameterEvent
    /rosout: rcl_interfaces/msg/Log
    /sensing/lidar/ouster_driver/transition_event: lifecycle_msgs/msg/TransitionEvent
  Service Servers:
    /sensing/lidar/ouster_driver/change_state: lifecycle_msgs/srv/ChangeState
    /sensing/lidar/ouster_driver/set_parameters_atomically: rcl_interfaces/srv/SetParametersAtomically
  Service Clients:

  Action Servers:

  Action Clients:

Also the service is available in ros2 service list tool

ros2 service list

When I try to see which nodes are inside container I get following error

ros2 component list
No 'list_nodes' service found when listing components

My setup:

  • ROS Humble with Ubuntu 22.04
  • DDS: fastRTPS

My be relevant to another issue here.

edit retag flag offensive close merge delete