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

Feature Request: Service Introspection #4837

Open
ottojo opened this issue Jan 9, 2025 · 2 comments
Open

Feature Request: Service Introspection #4837

ottojo opened this issue Jan 9, 2025 · 2 comments
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@ottojo
Copy link

ottojo commented Jan 9, 2025

Feature request

Feature description

It would be useful to be able to use Service Introspection introduced in Jazzy with nav2 nodes (such as the costmap server). This requires some configuration for both the client and server, which is currently not enabled in nav2.

Implementation considerations

It has to be considered whether unconditionally enabling service introspection is a good idea. The tutorial in the ROS docs show how to introduce a parameter to enable or disable service introspection, it is unclear to me if it's expected to only turn this feature on during debugging, and if there are downsides to always enabling it.

@SteveMacenski
Copy link
Member

SteveMacenski commented Jan 9, 2025

The client side is easy, I think most all uses of service clients use our nav2_utils service client wrapper, so one spot should hit most if not all of them (but worth doing a quick grep to make sure of that).

The server side will be slightly more involved since I don't think we wrap anything there. I'm not sure if the right answer is to:

  • create a nav2_util service server wrapper like the client; move all servers to use that
  • create a nav2_util helper object that deals with these mechanics, getting the parameters, and setting it up that given a node and the server; after all servers are created, create this object and pass in the necessary inputs for it to be managed
  • Better yet, contribute back to rclcpp by modifying create_service to handle this logic so that anyone creating a server can have this handled implicitly when a standardized parameter is set. I think you could do that with create_client too 😉
  • Something else?

How do you think we should approach it?

I'd say leave it default off, but let users flip it on with a parameter.

@SteveMacenski SteveMacenski added enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers labels Jan 23, 2025
@SteveMacenski
Copy link
Member

@ottojo what do you think?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

2 participants