Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]
Messages
Services
Plugins
Recent questions tagged autoware_diagnostic_graph_merger at Robotics Stack Exchange
Package Summary
| Version | 0.53.0 |
| License | Apache License 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Description | |
| Checkout URI | https://github.com/autowarefoundation/autoware_universe.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2026-10-08 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Takagi, Isamu
- Tetsuhiro Kawaguchi
Authors
autoware_diagnostic_graph_merger
Purpose
This package merges two DiagGraphStruct / DiagGraphStatus streams into a single unified graph.
It is intended for redundant ECU configurations where two independent ECUs each publish their own diagnostic graph, and a downstream node (e.g. MRM decision maker) requires a single merged view of the entire system health.
Design
Struct merge
DiagGraphStruct describes the static topology of the diagnostic graph (nodes, diagnostics, links).
When both inputs have published their struct, the node concatenates them into one struct.
Node indices from the second input are shifted by the size of the first graph so that every index in the merged struct remains unique.
merged.nodes = struct1.nodes + struct2.nodes
merged.diags = struct1.diags + shift(struct2.diags, offset)
merged.links = struct1.links + shift(struct2.links, offset)
merged.id = struct1.id + "+" + struct2.id
The merged struct is re-published whenever either input struct is updated (transient-local QoS, so late subscribers receive the latest).
Status merge
DiagGraphStatus carries the runtime health values (one entry per node / diagnostic leaf in the struct).
On every timer tick the node checks:
- Both structs have been received.
- Both statuses have been received.
- Each status ID matches the corresponding struct ID (guards against stale data from a restart).
If all conditions are met the statuses are concatenated in the same order as the structs and published.
Inputs / Outputs
Inputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/input1/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 1 |
~/input1/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 1 |
~/input2/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Graph topology from ECU 2 |
~/input2/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Runtime health status from ECU 2 |
Outputs
| Topic | Type | QoS | Description |
|---|---|---|---|
~/output/struct |
tier4_system_msgs/msg/DiagGraphStruct |
Transient-local | Merged graph topology |
~/output/status |
tier4_system_msgs/msg/DiagGraphStatus |
Reliable | Merged runtime health status |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
rate |
double | 10.0 |
Status publish rate [Hz] |
Launch
<include file="$(find-pkg-share autoware_diagnostic_graph_merger)/launch/merge.launch.xml">
<arg name="~/input1/struct" value="/main/diagnostics_graph/struct"/>
<arg name="~/input1/status" value="/main/diagnostics_graph/status"/>
<arg name="~/input2/struct" value="/sub/diagnostics_graph/struct"/>
<arg name="~/input2/status" value="/sub/diagnostics_graph/status"/>
<arg name="~/output/struct" value="/diagnostics_graph/struct"/>
<arg name="~/output/status" value="/diagnostics_graph/status"/>
</include>
Changelog for package autoware_diagnostic_graph_merger
0.53.0 (2026-09-29)
-
Merge remote-tracking branch 'origin/main' into prepare-0.53.0-changelog
-
feat(autoware_diagnostic_graph_merger): apply agnocast diagnostic graph merger (#13416)
- refactor(autoware_diagnostic_graph_merger): migrate to agnocast_wrapper::Node
* refactor(autoware_diagnostic_graph_merger): preload the Agnocast heaphook in the launch file Include agnocast_env.launch.xml and set LD_PRELOAD on the node so that launching this file with ENABLE_AGNOCAST=1 runs the node with the heaphook. ---------
-
feat(autoware_diagnostic_graph_merger): dd diagnostic graph merger (#12765)
- feat: add node
- feat: add README
- style(pre-commit): autofix
* fix: pre-commit ---------Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
-
Contributors: Ryohsuke Mitsudome, Tetsuhiro Kawaguchi
Package Dependencies
| Deps | Name |
|---|---|
| ament_cmake_auto | |
| autoware_cmake | |
| ament_lint_auto | |
| autoware_lint_common | |
| autoware_agnocast_wrapper | |
| rclcpp | |
| rclcpp_components | |
| tier4_system_msgs |
System Dependencies
Dependant Packages
Launch files
- launch/merge.launch.xml
-
- param_file [default: $(find-pkg-share autoware_diagnostic_graph_merger)/config/merge.param.yaml]
- ~/output/struct [default: /diagnostics_graph/struct]
- ~/output/status [default: /diagnostics_graph/status]
- ~/input1/struct [default: /diagnostics_graph/struct1]
- ~/input1/status [default: /diagnostics_graph/status1]
- ~/input2/struct [default: /diagnostics_graph/struct2]
- ~/input2/status [default: /diagnostics_graph/status2]