Skip to content

Add Graph description messages to rosgraph_msgs#188

Merged
emersonknapp merged 3 commits intorollingfrom
emerson/graph-messages
Apr 8, 2026
Merged

Add Graph description messages to rosgraph_msgs#188
emersonknapp merged 3 commits intorollingfrom
emerson/graph-messages

Conversation

@emersonknapp
Copy link
Copy Markdown
Collaborator

@emersonknapp emersonknapp commented Mar 18, 2026

Description

Fixes #182

Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.

  • Graph: a list of nodes
  • Node : describe a single node's parameters and interface endpoints
  • Topic: describe a single topic endpoint, either Publisher or Subscription
  • Service: describe a single service endpoint, either Server or Client
  • Action: describe a single action endpoint, either Server or Client
  • QoSProfile: describe a QoS Profile, either offered or requested
  • InterfaceType: identify a rosidl type
  • TypeHash: identify a REP-2016 RIHS type hash (rosidl_runtime_c defined type)

This is intended to supplant the definitions in use at https://github.com/ros-tooling/graph-monitor/tree/main/rosgraph_monitor_msgs

Is this user-facing behavior change?

Yes

Did you use Generative AI?

No

Additional Information

Part of the NoDL and rosgraph_monitor work being done within the ROSGraph Working Group.

We would like to get these messages into the core for Lyrical, so that we can build tools around them for release into that LTS distro.

These messages act as a counterpart to the NoDL schema, being used to output either a desired or observed state of a ROS application as a message between nodes. The NoDL schema is not a strict duplicate of the information that these messages will contain, because:

  1. NoDL will contain information relevant to code generation that is of more detail than can be observed by graph inspection
  2. These messages contain fields about "instantiated values" that do not exist at specification time, such as actual parameter values.
  3. The contents of these messages generally refer to resolved fully-qualified graph names after namespacing and remapping are applied, something that is not known or relevant at the node specification level.

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
Copy link
Copy Markdown
Member

@wjwwood wjwwood left a comment

Choose a reason for hiding this comment

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

Looks reasonable to me

Copy link
Copy Markdown
Member

@skyegalaxy skyegalaxy left a comment

Choose a reason for hiding this comment

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

seems like pretty much exactly what was discussed at this week's ROSgraph WG

Copy link
Copy Markdown
Member

@skyegalaxy skyegalaxy left a comment

Choose a reason for hiding this comment

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

need to add DCO for the last commit

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
@emersonknapp emersonknapp force-pushed the emerson/graph-messages branch from 31aa0e1 to 0892e87 Compare March 23, 2026 18:34
@emersonknapp
Copy link
Copy Markdown
Collaborator Author

emersonknapp commented Mar 23, 2026

Note for reviewers - I'm updating the docstrings with more information, and calling out the change here.

I was trying to use these messages to represent both the "abstract descriptor" of these entities, as well as the "observed/observable instantiation" of them. However, those two concepts have some key disjunctions.

Therefore, I am focusing in on the latter - observed/observable instantiation. We will use NoDL for the "abstract descriptor" and may or may not choose to be able to represent it as messages, which will be a separate exercise.

Thanks @fujitatomoya for taking the close look that forced this decision

…ns specifically to observed/actual state, rather than trying to fold in an abstract descriptor meaning

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
Service[] service_servers

Action[] action_clients
Action[] action_servers
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Would these lists allow for duplicates, say for example if a node spins up multiple (action) clients to the same (action) server for whatever reason?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

nothing prevents it. based on the current representation you wouldn't be able to tell them apart though.

I'm now wondering if I need to basically have the leaf message actually be an encoding of rmw_topic_endpoint_info (and service_endpoint_info), and include the GID as well.

That would directly represent the "observable state" as it's defined most fundamentally in the API, if we try to match those definitions.

@christophebedard
Copy link
Copy Markdown
Member

@emersonknapp is this ready to merge? I can run CI

@christophebedard
Copy link
Copy Markdown
Member

Pulls: #188
Gist: https://gist.githubusercontent.com/christophebedard/854094017ffcb7dbc8374893da5aeb99/raw/7a802edfc8d7a6d4ce2b7610570e86bd9e86bf9e/ros2.repos
BUILD args: --packages-above-and-dependencies rosgraph_msgs
TEST args: --packages-above rosgraph_msgs
ROS Distro: rolling
Job: ci_launcher
ci_launcher ran: https://ci.ros2.org/job/ci_launcher/18808

  • Linux Build Status
  • Linux-aarch64 Build Status
  • Linux-rhel Build Status
  • Windows Build Status

@skyegalaxy
Copy link
Copy Markdown
Member

skyegalaxy commented Apr 6, 2026

  • Linux-rhel Build Status
  • Windows Build Status

@emersonknapp
Copy link
Copy Markdown
Collaborator Author

CI failures unrelated, merging

@emersonknapp emersonknapp merged commit 2209d02 into rolling Apr 8, 2026
3 of 4 checks passed
@emersonknapp
Copy link
Copy Markdown
Collaborator Author

@Mergifyio backport humble jazzy kilted

@mergify
Copy link
Copy Markdown

mergify bot commented Apr 10, 2026

backport humble jazzy kilted

✅ Backports have been created

Details

mergify bot pushed a commit that referenced this pull request Apr 10, 2026
Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
(cherry picked from commit 2209d02)
mergify bot pushed a commit that referenced this pull request Apr 10, 2026
Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
(cherry picked from commit 2209d02)
mergify bot pushed a commit that referenced this pull request Apr 10, 2026
Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
(cherry picked from commit 2209d02)
ahcorde pushed a commit that referenced this pull request Apr 14, 2026
Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.


(cherry picked from commit 2209d02)

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
ahcorde pushed a commit that referenced this pull request Apr 14, 2026
Add new message definitions to rosgraph_msgs that can be used to describe a running or potential ROS Graph.


(cherry picked from commit 2209d02)

Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
Co-authored-by: Emerson Knapp <537409+emersonknapp@users.noreply.github.com>
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.

"ROS Graph" messages to describe an entire ROS application

5 participants