Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange

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

Package Summary

Version 0.6.0
License Apache-2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/selfpatch/ros2_medkit.git
VCS Type git
VCS Version main
Last Updated 2026-08-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

Bridge node converting ROS2 /diagnostics to FaultManager faults

Maintainers

  • mfaferek93

Authors

No additional authors.

ros2_medkit_diagnostic_bridge

Bridge node that converts ROS2 /diagnostics messages to FaultManager faults.

Overview

This package provides backwards compatibility with existing ROS2 diagnostic infrastructure. It subscribes to the standard /diagnostics topic and forwards diagnostic status messages to the FaultManager as faults.

Severity Mapping

DiagnosticStatus Level Fault Severity Action
OK (0) - Sends PASSED event (healing)
WARN (1) WARN (1) Reports fault
ERROR (2) ERROR (2) Reports fault
STALE (3) CRITICAL (3) Reports fault

Quick Start

# Start FaultManager first
ros2 run ros2_medkit_fault_manager fault_manager_node

# Start DiagnosticBridge
ros2 run ros2_medkit_diagnostic_bridge diagnostic_bridge_node

Configuration

Parameters

Parameter Type Default Description
diagnostics_topic string /diagnostics Topic to subscribe to
auto_generate_codes bool true Auto-generate fault codes from diagnostic names
use_hardware_id_as_source_id bool false Use slash-containing diagnostic hardware_id values as fault source_id
max_tracked_sources integer 512 Maximum number of per-source FaultReporter instances retained by the bridge
name_to_code.<name> string - Custom mapping from diagnostic name to fault code
keyvalue_codes string[] - List of keys used to search the diagnostic values for the fault code

Example Configuration

diagnostic_bridge:
  ros__parameters:
    diagnostics_topic: "/diagnostics"
    auto_generate_codes: true
    # Opt in to source attribution from diagnostic hardware_id values
    use_hardware_id_as_source_id: false
    max_tracked_sources: 512

    # Custom mappings (optional)
    # Format: "name_to_code.<diagnostic_name>": "<FAULT_CODE>"
    "name_to_code.motor_controller: Temperature": "MOTOR_OVERHEAT"
    "name_to_code.battery_monitor: Voltage": "BATTERY_LOW"

Fault Code Generation

When auto_generate_codes is enabled, diagnostic names are converted to fault codes:

Diagnostic Name Generated Fault Code
motor temp MOTOR_TEMP
motor: Status MOTOR_STATUS
/robot/sensor ROBOT_SENSOR

Custom mappings in name_to_code take priority over auto-generation.

Fault Source Attribution

By default, faults reported by this bridge use the bridge node’s fully-qualified name (/diagnostic_bridge) as their source_id. This preserves the behavior of existing deployments because DiagnosticStatus.hardware_id commonly contains a serial number, device path, or no value rather than a ROS node name.

Set use_hardware_id_as_source_id to true to opt in to hardware ID attribution. When enabled, a non-empty hardware_id is used exactly as provided only when it contains /, which is treated as a heuristic for a node/FQN-like identifier. Empty or non-slash hardware IDs fall back to the bridge FQN. This option does not perform manifest lookup or normalize hardware IDs; the accepted value must already match the runtime entity source ID used by the gateway.

The bridge keeps one FaultReporter per active source so local filtering remains isolated by source. max_tracked_sources bounds this cache with least-recently-used eviction; values below 1 are clamped to 1.

Launch

# Using launch file with default config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py

# With custom config
ros2 launch ros2_medkit_diagnostic_bridge diagnostic_bridge.launch.py \
    config_file:=/path/to/custom_config.yaml

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package ros2_medkit_diagnostic_bridge

0.6.0 (2026-06-22)

  • Tests: label test_integration as an integration test so it runs in the integration suite instead of the unit set (#443)
  • Contributors: \@bburda

0.5.0 (2026-06-08)

  • Build: adopt the centralized ROS2MedkitWarnings and ROS2MedkitSanitizers cmake modules
  • Tests: use centralized ROS_DOMAIN_ID allocation for DDS isolation
  • Contributors: \@bburda

0.4.0 (2026-03-20)

  • Build: use shared cmake modules from ros2_medkit_cmake package
  • Build: auto-detect ccache, centralized clang-tidy configuration
  • Contributors: \@bburda

0.3.0 (2026-02-27)

  • Multi-distro CI support for ROS 2 Humble, Jazzy, and Rolling (#219, #242)
  • Contributors: \@bburda

0.2.0 (2026-02-07)

  • Initial rosdistro release
  • Bridge node converting standard ROS 2 /diagnostics to FaultManager fault reports
  • Severity mapping:
    • OK -> PASSED event (fault condition cleared)
    • WARN -> WARN severity FAILED event
    • ERROR -> ERROR severity FAILED event
    • STALE -> CRITICAL severity FAILED event
  • Auto-generated fault codes from diagnostic names (UPPER_SNAKE_CASE)
  • Custom name_to_code mappings via ROS parameters
  • Stateless design: always sends PASSED for OK status (handles restarts)
  • Contributors: Michal Faferek

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged ros2_medkit_diagnostic_bridge at Robotics Stack Exchange