Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ros2 service call waits forever if QoS is incompatible with concerned server #818

Open
fujitatomoya opened this issue Apr 8, 2023 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@fujitatomoya
Copy link
Collaborator

Bug report

Required Info:

  • Operating System:
    • Ubuntu 22.04
  • Installation type:
    • Source Code / Rolling
  • Version or commit hash:
  • DDS implementation:
    • Any
  • Client library (if applicable):
    • ros2cli (rclpy)

Steps to reproduce issue

  • create service with the following QoS setting
        self.srv = self.create_service(
            AddTwoInts, 'my_add_two_ints', self.add_two_ints_callback, qos_profile=qos_profile_sensor_data)
  • then call the service via ros2cli service call
root@tomoyafujita:~/ros2_ws/colcon_ws# ros2 service list
/my_add_two_ints
/parameter_blackboard/describe_parameters
/parameter_blackboard/get_parameter_types
/parameter_blackboard/get_parameters
/parameter_blackboard/list_parameters
/parameter_blackboard/set_parameters
/parameter_blackboard/set_parameters_atomically
/service_provider/describe_parameters
/service_provider/get_parameter_types
/service_provider/get_parameters
/service_provider/list_parameters
/service_provider/set_parameters
/service_provider/set_parameters_atomically
root@tomoyafujita:~/ros2_ws/colcon_ws# ros2 service call /my_add_two_ints example_interfaces/srv/AddTwoInts "a: 1
b: 2"
waiting for service to become available...
...

This does not work because internally incompatible QoS setting are detected in rmw, so that hidden topics construct services will not be able to communicate each other.

Expected behavior

  • User can set the QoS via ros2 service call

Actual behavior

  • User cannot set the QoS via ros2 service call

Additional information

In addition to this fundamental argument extension, it requires that user needs to be able to know what QoS setting is set on the service. So that user can set the appropriate QoS parameter to ros2 service call, but there is no such interface like get_servers_info_by_service nor get_clients_info_by_service. this could be considered as new feature and interfaces.
besides, incompatible events are implemented on publisher and subscription, not for services or clients. that said, there will be not incompatible events for QoS with services.

@fujitatomoya fujitatomoya self-assigned this Apr 8, 2023
@fujitatomoya fujitatomoya added the enhancement New feature or request label Apr 8, 2023
@fujitatomoya
Copy link
Collaborator Author

related to #812

fujitatomoya added a commit to fujitatomoya/ros2_test_prover that referenced this issue Apr 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant