![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.2.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-jazzy |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.2.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.2.4 (2025-05-12)
4.2.2 (2025-02-10)
- Checking licenses in CI
(#431)
(#434)
- Checking licenses in ci
- Add Windows support (#426) (#430) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
- Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#424) Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
- Skipping flaky tests (#413) (#416)
- Contributors: Christian Henkel
4.2.1 (2024-07-30)
4.0.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#361)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#357)
- Contributors: Christian Henkel
4.0.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
- Contributors: Kenji Miyake
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax. (#190)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.3.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-kilted |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.3.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.3.5 (2025-05-26)
4.3.4 (2025-05-12)
- Kilted dep fix (#474)
- Contributors: David V. Lu, Christian Henkel
4.3.2 (2025-02-10)
- Checking licenses in CI
(#431)
- Checking licenses in ci
- Add Windows support (#426)
- Support custom [rclcpp::NodeOptions]{.title-ref} (#417)
- Skipping flaky tests (#413)
- Skipping flaky ntp test (#409)
- Contributors: Christian Henkel, Patrick Roncagliolo, Silvio Traversaro
4.3.1 (2024-07-30)
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324)
- Contributors: MartinCornelis2, Tim Clephas
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
- Contributors: Kenji Miyake
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax.
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.4.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.4.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.4.5 (2025-05-26)
4.4.4 (2025-05-12)
- Kilted dep fix (#474)
- Contributors: David V. Lu, Christian Henkel
4.4.2 (2025-02-10)
- Checking licenses in CI
(#431)
- Checking licenses in ci
- Add Windows support (#426)
- Support custom [rclcpp::NodeOptions]{.title-ref} (#417)
- Skipping flaky tests (#413)
- Skipping flaky ntp test (#409)
- Contributors: Christian Henkel, Patrick Roncagliolo, Silvio Traversaro
4.3.1 (2024-07-30)
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324)
- Contributors: MartinCornelis2, Tim Clephas
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
- Contributors: Kenji Miyake
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax.
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.0.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-humble |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.0.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.0.4 (2025-05-12)
4.0.2 (2025-02-10)
-
Checking licenses in CI (#431) (#432)
- Checking licenses in ci
-
Add Windows support (#426) (#428) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
-
Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#422)
* Support custom [rclcpp::NodeOptions]{.title-ref} This eases static composition of multiple ROS 2 nodes Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
-
Skipping flaky tests (#413) (#414)
- skipping flaky ntp test
-
Contributors: Christian Henkel
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329) (#359)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324) (#355)
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 2.1.3 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | galactic |
Last Updated | 2023-01-09 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Karsten Knese
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
Changelog for package diagnostic_aggregator
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax. (#190)
- Introduce history depth parameter for subscription. (#168)
- Contributors: Karsten Knese, Ryohsuke Mitsudome
2.1.1 (2021-01-28)
- Move Aggregator publishing to timer to allow subscription callback more processing time. (#180)
- Contributors: cdbierl
2.1.0 (2021-01-12)
- Update to latest ros2 rolling. (#177)
- Fix installation of diagnostic aggregator example. (#159)
- Restore alphabetical order. (#148)
- Aggregator bugfix, tests, and nicer example. (#147)
- Contributors: Arne Nordmann, Georg Bartels, Karsten Knese
2.0.2 (2020-06-03)
-
2.0.2 Signed-off-by: Karsten Knese <<karsten.knese@us.bosch.com>>
-
generate changelog Signed-off-by: Karsten Knese <<karsten.knese@us.bosch.com>>
-
Ros2 migrate diagnostic aggregator (#118)
* Removed AMENT_IGNORE and uncrustified Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
- Started migration of c++ API
* To be done: logging, assertions, parameter handling Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
- Started migration of python tests
- Started migration of analyzer group
- Migrated from XMLRPC to ROS2 parameters parsing
* Doesn't create working analzers, yet Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
- Migrated analyzers plugin
- Split anaylzers into seperate plugin lib
- Build shared lib to be used by plugin class loader
* Fixed plugin registration of analyzers Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
- Analyzer group correctly setting up analyzers
* Improved parameter handling of generic_analyzer Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
* API migration to ROS2 c++ + logging Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
* uncrustified Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
- Reworked analyzer paths and names
* Separate handling of the analyzer's (and analyzer group's): ** "nice" name ** path (path of their results in the robot monitor) ** breadcrumb (prefix of their yaml configuration)
- Logging
- Uncrustify
- Examples
- Less strict cpplint
- removed using namespace
- Fixes complation of analyzer group test
- Removed dependency to boost
* Using std::mutex instead of boost::mutex. Using std::lock_guard instead of boost::scoped_lock since std::scoped_lock was not introduced before C++17
* Using std::regex instead of boost::regex Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
* Alphabetical order of includes and dependencies Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
* Adopted suggestions from review by \@Karsten1987 Signed-off-by: Arne Nordmann <<arne.nordmann@de.bosch.com>>
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_remote_logging diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.4.6 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2 |
Last Updated | 2025-05-26 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.4.6 (2025-05-26)
- C++17 and cmake 3.20 everywhere (#510)
- Contributors: Christian Henkel
4.4.5 (2025-05-26)
4.4.4 (2025-05-12)
- Kilted dep fix (#474)
- Contributors: David V. Lu, Christian Henkel
4.4.2 (2025-02-10)
- Checking licenses in CI
(#431)
- Checking licenses in ci
- Add Windows support (#426)
- Support custom [rclcpp::NodeOptions]{.title-ref} (#417)
- Skipping flaky tests (#413)
- Skipping flaky ntp test (#409)
- Contributors: Christian Henkel, Patrick Roncagliolo, Silvio Traversaro
4.3.1 (2024-07-30)
3.2.1 (2024-06-27)
- Add add_analyzer functionality (#329)
- Aggregator: publish diagnostics_toplevel_state immediately on every degradation (#324)
- Contributors: MartinCornelis2, Tim Clephas
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
- Contributors: Kenji Miyake
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax.
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
diagnostics | |
microstrain_inertial_driver |
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_common_diagnostics diagnostic_updater diagnostics self_test |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 4.1.2 |
License | BSD-3-Clause |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | ros2-iron |
Last Updated | 2025-02-10 |
Dev Status | MAINTAINED |
CI status | No Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
- Christian Henkel
- Ralph Lange
Authors
- Kevin Watts
- Brice Rebsamen
- Arne Nordmann
General information about this repository, including legal information and known issues/limitations, are given in README.md in the repository root.
The diagnostic_aggregator package
This package contains the aggregator_node
.
It listens to the diagnostic_msgs/DiagnosticArray
messages on the /diagnostics
topic and aggregates and published them on the /diagnostics_agg
topic.
One use case for this package is to aggregate the diagnostics of a robot. Aggregation means that the diagnostics of the robot are grouped by various aspects, like their location on the robot, their type, etc. This will allow you to easily see which part of the robot is causing problems.
Example
In our example, we are looking at a robot with arms and legs. The robot has two of each, one on each side. The robot also 4 camera sensors, one left and one right and one in the front and one in the back. These are all the available diagnostic sources:
/arms/left/motor
/arms/right/motor
/legs/left/motor
/legs/right/motor
/sensors/left/cam
/sensors/right/cam
/sensors/front/cam
/sensors/rear/cam
We want to group the diagnostics by
- all sensors
- all motors
- left side of the robot
- right side of the robot
We can achieve that by creating a configuration file that looks like this (see example_analyzers.yaml):
analyzers:
ros__parameters:
path: Aggregation
arms:
type: diagnostic_aggregator/GenericAnalyzer
path: Arms
startswith: [ '/arms' ]
legs:
type: diagnostic_aggregator/GenericAnalyzer
path: Legs
startswith: [ '/legs' ]
sensors:
type: diagnostic_aggregator/GenericAnalyzer
path: Sensors
startswith: [ '/sensors' ]
motors:
type: diagnostic_aggregator/GenericAnalyzer
path: Motors
contains: [ '/motor' ]
topology:
type: 'diagnostic_aggregator/AnalyzerGroup'
path: Topology
analyzers:
left:
type: diagnostic_aggregator/GenericAnalyzer
path: Left
contains: [ '/left' ]
right:
type: diagnostic_aggregator/GenericAnalyzer
path: Right
contains: [ '/right' ]
Based on this configuration, the rqt_robot_monitor will display the diagnostics information in a well-arranged manner as follows:
Note that it will also display the highest state per group to allow you to see at a glance which part of the robot is not working properly.
For example in the above image, the left side of the robot is not working properly, because the left camera is in the ERROR
state.
Analyzers
The aggregator_node
will load analyzers to process the diagnostics data.
An analyzer is a plugin that inherits from the diagnostic_aggregator::Analyzer
class.
Analyzers must be implemented in packages that directly depend on pluginlib
and diagnostic_aggregator
.
The diagnostic_aggregator::Analyzer
class is purely virtual and derived classes must implement the following methods:
-
init()
- Analyzer is initialized with base path and namespace -
match()
- Returns true if the analyzer is interested in the status message -
analyze()
- Returns true if the analyzer will analyze the status message -
report()
- Returns results of analysis as vector of status messages -
getPath()
- Returns the prefix path of the analyzer (e.g., “/robot/motors/”) -
getName()
- Returns the name of the analyzer (e.g., “Motors”)
Analyzers can choose the value of the error level of their output. Usually, the error level of the output is the highest error level of the input. The analyzers are responsible for setting the name of each item in the output correctly.
Using the aggregator_node
Configuration
The aggregator_node
can be configured at launch time like in this example:
``` yaml pub_rate: 1.0 # Optional, defaults to 1.0 base_path: ‘PRE’ # Optional, defaults to “”
File truncated at 100 lines see the full file
Changelog for package diagnostic_aggregator
4.1.2 (2025-02-10)
- Checking licenses in CI
(#431)
(#433)
- Checking licenses in ci
- Add Windows support (#426) (#429) Co-authored-by: Silvio Traversaro <<silvio@traversaro.it>>
- Support custom [rclcpp::NodeOptions]{.title-ref} (#417) (#423) Co-authored-by: Patrick Roncagliolo <<ronca.pat@gmail.com>>
- Skipping flaky tests
(#413)
(#415)
- skipping flaky ntp test
- Contributors: Christian Henkel
3.2.0 (2024-03-22)
- Avoid rolling up an ERROR state when empty GenericAnalyzer blocks are marked discard_stale, or when all of their items are STALE. (#315)
- formatting fixes from PR324 (#327)
- Debugging instability introduced by #317 (#323)
- feat: publish top level msg when error is received (#317)
- Empty default aggregator base_path (#305)
- using defined state for stale (#298)
- Contributors: Andrew Symington, Christian Henkel, outrider-jhulas
3.1.2 (2023-03-24)
3.1.1 (2023-03-16)
- exporting dependency on pluginlib fixes #293 (#294)
- Secretly supporting galactic (#295)
- Linting additional package (#268)
- Fix code-analyser bug
- Maintainer update
- Contributors: Austin, Christian Henkel, Ralph Lange, Tim Clephas
3.1.0 (2023-01-26)
- Merge of foxy and humble history into rolling for future maintenance from one branch only.
- Adding READMEs to the repo (#270)
- License fixes (#263)
- Fix/cleanup ros1 (#257)
- Use regex to search AnalyzerGroup
- Contributors: Alberto Soragna, Austin, Christian Henkel, Keisuke Shima, Ralph Lange
3.0.0 (2022-06-10)
- Use node clock for diagnostic_aggregator and diagnostic_updater (#210)
- Contributors: Kenji Miyake
2.1.3 (2021-08-03)
2.1.2 (2021-03-03)
- Adapt new launch file syntax. (#190)
- Introduce history depth parameter for subscription. (#168)
- Contributors: Karsten Knese, Ryohsuke Mitsudome
2.1.1 (2021-01-28)
- Move Aggregator publishing to timer to allow subscription callback more processing time. (#180)
- Contributors: cdbierl
2.1.0 (2021-01-12)
- Update to latest ros2 rolling. (#177)
- Fix installation of diagnostic aggregator example. (#159)
- Restore alphabetical order. (#148)
File truncated at 100 lines see the full file
Wiki Tutorials
Package Dependencies
System Dependencies
Dependant Packages
Name | Deps |
---|---|
diagnostics | |
microstrain_inertial_driver |
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.9.7 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | indigo-devel |
Last Updated | 2020-10-06 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.9.7 (2020-09-03)
1.9.6 (2020-08-18)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.9.5 (2020-08-10)
- Update CMakeLists.txt to search for local gtest first
- Fix copyright and remove unused imports
- Improvement by using opertors instead of aliases (Closes #95
- Contributors: Austin, Guglielmo Gemignani, James Xu, Martin Pecka, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
- Add queue size parameters on Publishers
- add_analyzers improvements
- Warning message when bond is broken
- Per-bond topics to avoid queue length issues
- Option to make diagnostics in Other an error
- Contributors: trainman419
1.9.0 (2017-04-25)
- Longer settling time
- Fix race condition in unload
- Fix cmake warnings
- make rostest in CMakeLists optional (ros/rosdistro#3010)
- Changed all deprecated PLUGINLIB_DECLARE_CLASS to PLUGINLIB_EXPORT_CLASS macros
- Contributors: Aris Synodinos, Lukas Bulwahn, trainman419
1.8.10 (2016-06-14)
- Start bond after add_diagnostics service is available
- Contributors: Mustafa Safri
1.8.9 (2016-03-02)
- Add version dependencies in package.xml
- Add version check in cmake
- Add functionality for dynamically adding analyzers
- Contributors: Michal Staniaszek, trainman419
1.8.8 (2015-08-06)
- Fix #17
- Contributors: trainman419
1.8.7 (2015-01-09)
- Upgrade to gtest 1.7.0
- Contributors: trainman419
1.8.6 (2014-12-10)
1.8.5 (2014-07-29)
- Include gtest source directly
- Contributors: trainman419
1.8.4 (2014-07-24 20:51)
- Install analyzer_loader. Fixes #24
- Add dependency on message generation
- Remove stray architechture_independent flags This flag should be used for package which do not contain architecture-specific files. Compiled binaries are such a file, and these packages contain them.
- Contributors: Jon Binney, Scott K Logan, trainman419
File truncated at 100 lines see the full file
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.9.7 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | indigo-devel |
Last Updated | 2020-10-06 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.9.7 (2020-09-03)
1.9.6 (2020-08-18)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.9.5 (2020-08-10)
- Update CMakeLists.txt to search for local gtest first
- Fix copyright and remove unused imports
- Improvement by using opertors instead of aliases (Closes #95
- Contributors: Austin, Guglielmo Gemignani, James Xu, Martin Pecka, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
- Add queue size parameters on Publishers
- add_analyzers improvements
- Warning message when bond is broken
- Per-bond topics to avoid queue length issues
- Option to make diagnostics in Other an error
- Contributors: trainman419
1.9.0 (2017-04-25)
- Longer settling time
- Fix race condition in unload
- Fix cmake warnings
- make rostest in CMakeLists optional (ros/rosdistro#3010)
- Changed all deprecated PLUGINLIB_DECLARE_CLASS to PLUGINLIB_EXPORT_CLASS macros
- Contributors: Aris Synodinos, Lukas Bulwahn, trainman419
1.8.10 (2016-06-14)
- Start bond after add_diagnostics service is available
- Contributors: Mustafa Safri
1.8.9 (2016-03-02)
- Add version dependencies in package.xml
- Add version check in cmake
- Add functionality for dynamically adding analyzers
- Contributors: Michal Staniaszek, trainman419
1.8.8 (2015-08-06)
- Fix #17
- Contributors: trainman419
1.8.7 (2015-01-09)
- Upgrade to gtest 1.7.0
- Contributors: trainman419
1.8.6 (2014-12-10)
1.8.5 (2014-07-29)
- Include gtest source directly
- Contributors: trainman419
1.8.4 (2014-07-24 20:51)
- Install analyzer_loader. Fixes #24
- Add dependency on message generation
- Remove stray architechture_independent flags This flag should be used for package which do not contain architecture-specific files. Compiled binaries are such a file, and these packages contain them.
- Contributors: Jon Binney, Scott K Logan, trainman419
File truncated at 100 lines see the full file
Wiki Tutorials
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.9.7 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | indigo-devel |
Last Updated | 2020-10-06 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.9.7 (2020-09-03)
1.9.6 (2020-08-18)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.9.5 (2020-08-10)
- Update CMakeLists.txt to search for local gtest first
- Fix copyright and remove unused imports
- Improvement by using opertors instead of aliases (Closes #95
- Contributors: Austin, Guglielmo Gemignani, James Xu, Martin Pecka, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
- Add queue size parameters on Publishers
- add_analyzers improvements
- Warning message when bond is broken
- Per-bond topics to avoid queue length issues
- Option to make diagnostics in Other an error
- Contributors: trainman419
1.9.0 (2017-04-25)
- Longer settling time
- Fix race condition in unload
- Fix cmake warnings
- make rostest in CMakeLists optional (ros/rosdistro#3010)
- Changed all deprecated PLUGINLIB_DECLARE_CLASS to PLUGINLIB_EXPORT_CLASS macros
- Contributors: Aris Synodinos, Lukas Bulwahn, trainman419
1.8.10 (2016-06-14)
- Start bond after add_diagnostics service is available
- Contributors: Mustafa Safri
1.8.9 (2016-03-02)
- Add version dependencies in package.xml
- Add version check in cmake
- Add functionality for dynamically adding analyzers
- Contributors: Michal Staniaszek, trainman419
1.8.8 (2015-08-06)
- Fix #17
- Contributors: trainman419
1.8.7 (2015-01-09)
- Upgrade to gtest 1.7.0
- Contributors: trainman419
1.8.6 (2014-12-10)
1.8.5 (2014-07-29)
- Include gtest source directly
- Contributors: trainman419
1.8.4 (2014-07-24 20:51)
- Install analyzer_loader. Fixes #24
- Add dependency on message generation
- Remove stray architechture_independent flags This flag should be used for package which do not contain architecture-specific files. Compiled binaries are such a file, and these packages contain them.
- Contributors: Jon Binney, Scott K Logan, trainman419
File truncated at 100 lines see the full file
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.8.8 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | hydro-devel |
Last Updated | 2015-08-07 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Austin Hendrix
- Brice Rebsamen
Authors
- Kevin Watts
- Brice Rebsamen
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.9.7 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | indigo-devel |
Last Updated | 2020-10-06 |
Dev Status | MAINTAINED |
CI status | Continuous Integration |
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.9.7 (2020-09-03)
1.9.6 (2020-08-18)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.9.5 (2020-08-10)
- Update CMakeLists.txt to search for local gtest first
- Fix copyright and remove unused imports
- Improvement by using opertors instead of aliases (Closes #95
- Contributors: Austin, Guglielmo Gemignani, James Xu, Martin Pecka, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
- Add queue size parameters on Publishers
- add_analyzers improvements
- Warning message when bond is broken
- Per-bond topics to avoid queue length issues
- Option to make diagnostics in Other an error
- Contributors: trainman419
1.9.0 (2017-04-25)
- Longer settling time
- Fix race condition in unload
- Fix cmake warnings
- make rostest in CMakeLists optional (ros/rosdistro#3010)
- Changed all deprecated PLUGINLIB_DECLARE_CLASS to PLUGINLIB_EXPORT_CLASS macros
- Contributors: Aris Synodinos, Lukas Bulwahn, trainman419
1.8.10 (2016-06-14)
- Start bond after add_diagnostics service is available
- Contributors: Mustafa Safri
1.8.9 (2016-03-02)
- Add version dependencies in package.xml
- Add version check in cmake
- Add functionality for dynamically adding analyzers
- Contributors: Michal Staniaszek, trainman419
1.8.8 (2015-08-06)
- Fix #17
- Contributors: trainman419
1.8.7 (2015-01-09)
- Upgrade to gtest 1.7.0
- Contributors: trainman419
1.8.6 (2014-12-10)
1.8.5 (2014-07-29)
- Include gtest source directly
- Contributors: trainman419
1.8.4 (2014-07-24 20:51)
- Install analyzer_loader. Fixes #24
- Add dependency on message generation
- Remove stray architechture_independent flags This flag should be used for package which do not contain architecture-specific files. Compiled binaries are such a file, and these packages contain them.
- Contributors: Jon Binney, Scott K Logan, trainman419
File truncated at 100 lines see the full file
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.9.7 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | indigo-devel |
Last Updated | 2020-10-06 |
Dev Status | MAINTAINED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.9.7 (2020-09-03)
1.9.6 (2020-08-18)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.9.5 (2020-08-10)
- Update CMakeLists.txt to search for local gtest first
- Fix copyright and remove unused imports
- Improvement by using opertors instead of aliases (Closes #95
- Contributors: Austin, Guglielmo Gemignani, James Xu, Martin Pecka, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
- Add queue size parameters on Publishers
- add_analyzers improvements
- Warning message when bond is broken
- Per-bond topics to avoid queue length issues
- Option to make diagnostics in Other an error
- Contributors: trainman419
1.9.0 (2017-04-25)
- Longer settling time
- Fix race condition in unload
- Fix cmake warnings
- make rostest in CMakeLists optional (ros/rosdistro#3010)
- Changed all deprecated PLUGINLIB_DECLARE_CLASS to PLUGINLIB_EXPORT_CLASS macros
- Contributors: Aris Synodinos, Lukas Bulwahn, trainman419
1.8.10 (2016-06-14)
- Start bond after add_diagnostics service is available
- Contributors: Mustafa Safri
1.8.9 (2016-03-02)
- Add version dependencies in package.xml
- Add version check in cmake
- Add functionality for dynamically adding analyzers
- Contributors: Michal Staniaszek, trainman419
1.8.8 (2015-08-06)
- Fix #17
- Contributors: trainman419
1.8.7 (2015-01-09)
- Upgrade to gtest 1.7.0
- Contributors: trainman419
1.8.6 (2014-12-10)
1.8.5 (2014-07-29)
- Include gtest source directly
- Contributors: trainman419
1.8.4 (2014-07-24 20:51)
- Install analyzer_loader. Fixes #24
- Add dependency on message generation
- Remove stray architechture_independent flags This flag should be used for package which do not contain architecture-specific files. Compiled binaries are such a file, and these packages contain them.
- Contributors: Jon Binney, Scott K Logan, trainman419
File truncated at 100 lines see the full file
Wiki Tutorials
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange
![]() |
diagnostic_aggregator package from diagnostics repodiagnostic_aggregator diagnostic_analysis diagnostic_common_diagnostics diagnostic_updater diagnostics rosdiagnostic self_test test_diagnostic_aggregator |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 1.12.1 |
License | BSD |
Build type | CATKIN |
Use | RECOMMENDED |
Repository Summary
Checkout URI | https://github.com/ros/diagnostics.git |
VCS Type | git |
VCS Version | noetic-devel |
Last Updated | 2025-05-04 |
Dev Status | MAINTAINED |
CI status |
|
Released | RELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (0)
Good First Issues (0) Pull Requests to Review (0) |
Package Description
Additional Links
Maintainers
- Guglielmo Gemignani
- Austin Hendrix
Authors
- Kevin Watts
- Brice Rebsamen
Changelog for package diagnostic_aggregator
1.12.0 (2025-05-04)
- Add DowngradeAnalyser for reporting non-critical errors (#126)
- Fix two code-analyser bugs (#282)
- Optimize ros::Time::now() function calls (#332)
- Contributors: Amilcar Lucas, Tim Clephas
1.11.0 (2021-12-31)
- Use DiagnosticLevel enum instead of hardcoded integers (#208) Spellcheck fixes
- Add install command for demo in CMakeLists
- Contributors: Amilcar Lucas, gemignani
1.10.4 (2021-03-14)
- Improve messages of GenericAnalyzer when items are stale. (#187)
- Contributors: Michael Grupp
1.10.3 (2020-12-05)
- Add mutex for other analyzers (#170)
- Update maintainer info
- Contributors: Guglielmo Gemignani, gemignani
1.10.2 (2020-09-03)
1.10.1 (2020-08-20)
- Extend initial connect timeout for add_analyzers (#129)
- Contributors: Mike Purvis
1.10.0 (2020-08-11)
- Fixed Flaky Test (#145)
- Make Guglielmo Gemignani ROS1 maintainer (#155)
- Contributors: Guglielmo Gemignani, Martin Pecka
1.9.4 (2020-04-01)
- noetic release (#136)
- Merge pull request #99 from g-gemignani/indigo-devel Fix discard_stale (Closes #65)
- Merge pull request #96 from kejxu/use_global_gtest_library update CMakeLists.txt to search for local gtest first
- Fix problem with pr that skipped the timeout stale transition period
- Address pr issue about discard_stale test
- Fix copyright and remove unused imports
- Address issue 65 Make sure that analyzers flagged with discard_stale = true are correctly removed after being stale for a period greater than the timeout
- update cmake include directories to use correct gtest.h
- Merge pull request #95 from kejxu/use_operator_instead_of_alias use operators instead of aliases
- fix build break
- Contributors: Alejandro Hernández Cordero, Austin, Guglielmo Gemignani, James Xu, Sean Yen
1.9.3 (2018-05-02)
- Merge pull request #79 from nlamprian/indigo-devel Fixed base_path handling
- Merge pull request #82 from moriarty/fix-pluginlib-deprecated-headers [Aggregator] Fixes C++ Warnings (pluginlib)
- [Aggregator] Fixes C++ Warnings (pluginlib) This fixes the following warnings: warning: Including header <pluginlib/class_list_macros.h> is deprecated,include <pluginlib/class_list_macros.hpp> instead. [-Wcpp] warning: Including header <pluginlib/class_loader.h> is deprecated, include <pluginlib/class_loader.hpp> instead. [-Wcpp] The .hpp files have been backported to indigo
- Fixed base_path handling
- Upstream missing changes to add_analyzers
- Contributors: Alexander Moriarty, Austin, Nick Lamprianidis, trainman419
1.9.2 (2017-07-15)
1.9.1 (2017-07-15)
File truncated at 100 lines see the full file