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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

Package symbol

diagnostic_aggregator package from diagnostics repo

diagnostic_aggregator diagnostic_common_diagnostics diagnostic_updater diagnostics self_test

ROS Distro
galactic

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

diagnostic_aggregator

Additional Links

Maintainers

  • Austin Hendrix
  • Brice Rebsamen
  • Karsten Knese

Authors

  • Kevin Watts
  • Brice Rebsamen
  • Arne Nordmann
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

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: doc/rqt_robot_monitor.png

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

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Austin Hendrix
  • Brice Rebsamen

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG
No CHANGELOG found.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange

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

diagnostic_aggregator

Additional Links

Maintainers

  • Guglielmo Gemignani
  • Austin Hendrix

Authors

  • Kevin Watts
  • Brice Rebsamen
README
No README found. No README in repository either.
CHANGELOG

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

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Recent questions tagged diagnostic_aggregator at Robotics Stack Exchange