Skip to content

Conversation

troygibb
Copy link
Contributor

@troygibb troygibb commented Jul 29, 2025

Description

Closes #28

Populate the /rosgraph with parameter names for each node.

This change had to be done carefully as to not block the main loop tracking node updates, instead preferring to launch on a separate thread (std::launch::async) and holding onto the futures in a separate data structure (params_futures) so the promises didn't go out of scope as our node introspection logic looped. Currently the parameters querying logic loops indefinitely until the parameters are received (or the node is brought down)

Regarding query retries as mentioned here, I opted instead for a long wait time for the service client and service call to resolve (5 seconds), which felt functionally equivalent. Open to alternatives here.

Out of scope for this change:

  • Value and descriptors. Should be next up!
  • Subscriptions on /parameter_events per node. I could see the case for including them here, but I thought the change large enough already, and the parameter events are only really useful when the values are updated.

Test Plan

I've added the basic happy path tests here, expecting the basic params to be populated in subsequent graph message updates.

Acquiring the correct published rosgraph message was tricky in assertions that incrementally requested the latest /rosgraph message and popped the next from queue. I discovered that incremental requests of the message resulted in flakiness across ~100 test reruns (--gtest_repeat=100). Instead, I opted to add some conditional await logic (await_graphmon_msg_until).

troygibb added 3 commits July 29, 2025 00:35
Signed-off-by: Troy Gibb <[email protected]>
Signed-off-by: Troy Gibb <[email protected]>
Signed-off-by: Troy Gibb <[email protected]>
@troygibb troygibb changed the title Add parameter logic to graphmon message Query Node Parameters Jul 29, 2025
Signed-off-by: Troy Gibb <[email protected]>
@troygibb troygibb marked this pull request as ready for review July 29, 2025 01:22
@troygibb troygibb mentioned this pull request Jul 30, 2025
Copy link
Member

@emersonknapp emersonknapp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pretty minor comments, mostly nonblocking style comments, just want to resolve one or two API questions before we move forward

troygibb added 4 commits July 30, 2025 23:12
Signed-off-by: Troy Gibb <[email protected]>
Signed-off-by: Troy Gibb <[email protected]>
Signed-off-by: Troy Gibb <[email protected]>
@troygibb troygibb requested a review from emersonknapp July 30, 2025 23:51
Copy link
Member

@emersonknapp emersonknapp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Definitely some followups i want us to make, but we can merge this and work forward. I can take a pass on some of it, and it sounds like your ParameterValue PR addresses some of the rest

@emersonknapp emersonknapp merged commit 632c378 into main Jul 31, 2025
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Query node parameter list to track parameter names per node

3 participants