Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file

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

Repository Summary

Checkout URI https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
VCS Type git
VCS Version main
Last Updated 2025-10-15
Dev Status MAINTAINED
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
greenwave_monitor 0.1.0
greenwave_monitor_interfaces 0.1.0
r2s_gw 0.1.0

README

Greenwave Monitor

Greenwave monitor is a tool for runtime monitoring of ROS 2 topics.

Greenwave Monitor

It provides the following features:

  1. A node similar to a C++ based ros2 topic hz. i.e. subscribes to topics to determine the frame rate and latency. Compared to ros2 topic hz the greenwave node is more performant, publishes Diagnostics, and offers services to manage topics and expected frequencies.

  2. A terminal based dashboard that displays the topic rates, latency, and status, and allows you to add/remove topics and set expected frequencies.

  3. A header only C++ library so you can calculate and publish compatible diagnostics directly from your own nodes for reduced overhead.

This diagram shows an overview of the architecture:

architecture

Diagnostic messages

The diagnostics messages published by greenwave monitor are valid ROS 2 Diagnostics messages, however the dashboard does rely on specific keys to associate the data with the correct topic, and to find frequency and latency data.

In particular, the messages follow conventions from Isaac ROS NITROS, which means configured NITROS nodes can be monitored by greenwave monitor frontends without any additional subscriber overhead. For example the drivers from Isaac ROS NOVA can be monitored out of the box. Furthermore, you can set ENABLE_GLOBAL_NITROS_DIAGNOSTICS=1 to configure all NITROS nodes to publish diagnostics (more info here).

## Latency Measurements

Latency is calculated as the difference between the current system time and the timestamp in the message header. For this calculation to work correctly:

  • The message type must have a std_msgs/Header field
  • The message type must be in the recognized types list (see has_header_from_type() in greenwave_monitor.cpp)
  • The header timestamp must be in epoch time (not boottime)

If any of these conditions are not met, the latency will be reported as “N/A” in the dashboard. This typically occurs when:

  • The message type doesn’t have a header (e.g., std_msgs/String, geometry_msgs/Twist)
  • The message type is not recognized by greenwave monitor
  • The header timestamp is in boottime format instead of epoch time

Currently, message types with headers must be manually registered in the known_header_types map in greenwave_monitor.cpp. Support for automatic detection of arbitrary message types may be added in the future. In the meantime, if you need support for a commonly used message type, please submit an issue or pull request to add it to the registry.

Compatibility

Greenwave monitor is a standalone package tested on Humble, Iron, Jazzy, Kilted, and Rolling ROS 2 releases, under Ubuntu 22.04 and Ubuntu 24.04. It does not depend on Isaac ROS.

Installation

From source:

cd ros_ws/src
git clone https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor.git
cd ..
colcon build --packages-up-to greenwave_monitor
source install/setup.bash

Usage

Greenwave monitor provides two dashboard frontends, a lightweight ncurses interface and a rich terminal interface (a fork of r2s). Note we rename the fork r2s_gw to avoid conflicts with the original r2s package.

We have found that the r2s dashboard gets sluggish when there are many topics, so we recommend using the ncurses dashboard for large deployments.

ncurses Dashboard (Lightweight)

After installing, you can launch the ncurses dashboard with:

ros2 run greenwave_monitor ncurses_dashboard

You can also launch the dashboard with some demo publishers to see everything in action:

ros2 run greenwave_monitor ncurses_dashboard --demo

r2s_gw Dashboard (Rich TUI)

First you need to build the r2s_gw package and some additional dependencies, r2s_gw is included in the greenwave_monitor package.

cd ros_ws/
colcon build --packages-up-to r2s_gw
pip install -I textual # There is a requirements.txt file in the r2s_gw package, but in case you installed from debian and that's not handy ...
source install/setup.bash

Then you can launch the dashboard with the following. Use tab to navigate between different UI elements.

ros2 run greenwave_monitor r2s_gw_dashboard

Just like before, you can also launch the dashboard with some demo publishers to see everything in action.

ros2 run greenwave_monitor r2s_gw_dashboard -- --demo

Manual Launch (ros2 topic hz mode)

You can of course also launch the node standalone, or incorporate it into your own launch files. If you want to use it as a command line tool, you can do so with the following launch file:

File truncated at 100 lines see the full file