Мониторинг состояния системы (процессов, запущенных служб и обмена данными по сети) играет очень важную роль при работе над сложной робототехнической системой. Наличие удобного инструмента для интроспекции состояния процессов упрощает работу разработчика позволяя быстро находить и исправлять неисправности и экономить время на ненужной отладке. В этой статье я расскажу о популярных инструментах мониторинга в ROS2. Кому интересно прошу под кат.
Greenwave Monitor
Совсем недавно NVIDIA представила инструмент Greenwave Monitor. Его можно найти на github.
На github инструмента представлена диаграмма архитектуры:

Установка Greenwave Monitor очень простая
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
Чтобы запустить демо с набором запущенных топиков выполним команду:
ros2 run greenwave_monitor ncurses_dashboard --demo
Откроется окно

Чтобы просто запустить программу
ros2 run greenwave_monitor ncurses_dashboard
Greenwave Monitor предоставляет также более продвинутый дашборд r2s_gw.
Чтобы его использовать нужно в первую очередь построить пакет r2s_gw и некоторые зависимости:
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
Затем запустим инструмент:
ros2 run greenwave_monitor r2s_gw_dashboard
Откроется такое окно

Внизу есть полоса прокрутки окна.
Выберем топик и нажмем клавишу m. Начнется мониторинг топика

С помощью мышки можно переключаться между вкладками Interfaces, Nodes и Topics. Переключимся на Nodes

Переключимся на вкладку Interfaces:

По умолчанию все интерфейсы развернуты. Можно свернуть интерфейсы чтобы показать только базовые с помощью клавиши t:

Есть возможность фильтрации по имени с помощью Ctrl + F:

ROS2Top
Другой популярный инструмент это ros2top. Он напоминает утилиту top в Linux.
Исходники ros2top можно найти на github.
Установим пакет. Можно напрямую через pip:
pip install ros2top
Или из исходников:
git clone https://github.com/AhmedARadwan/ros2top.git
cd ros2top
pip install -e .
Запустим:
ros2top
Вывод утилиты:

Можно поставить на паузу с помощью клавиши p:

ros2sysmon
Ещё один похожий инструмент на top это ros2sysmon. Исходники можно найти на github.
Установим его:
cd ros2_ws/src
git clone https://github.com/pitosalas/ros2sysmon.git
Скомпилируем:
cd ~/your_ros2_workspace
source /opt/ros/jazzy/setup.bash # or your ROS2 distribution
colcon build --packages-select ros2sysmon
source install/setup.bash
Запустим:
ros2 run ros2sysmon ros2sysmon
С параметрами:
ros2 run ros2sysmon ros2sysmon --config /path/to/config.yaml --
Пример вывода:

Мы можем контролировать вывод утилиты.
Если нажать клавишу 1 покажутся топики и фреймы трансформации TF.
Нажмем 2 и получим список ROS узлов и процессов:

Клавишу r можно использовать для ручного сбора и обновления данных.
Для выхода используются клавиши x и q.
Что интересного предоставляет ros2sysmon? Можно обратить внимание что одновременно в одном окне выводится несколько секций с различной информацией. Вверху мы видим информацию о загрузке CPU, использовании памяти RAM и диска а также уровень заряда батареи, скорость обмена данных по сети даже температуру:

Вторая секция - это список либо узлов и TF фреймов либо топиков в зависимости от выбора пользователем команды 1 / 2

И наконец внизу выводятся логи:

ROS 2 Graph Monitor
Есть еще такой набор пакетов ROS 2 Graph Monitor.
Соберем все пакеты в отдельном воркспейсе:
mkdir -p ~/rosgraph_ws/src
git clone https://github.com/ros-tooling/graph-monitor.git src
У меня была проблема с зависимостями. Поэтому постановим пакет diagnostic-aggregator:
sudo apt update
sudo apt install ros-<distro>-diagnostic-aggregator -y
Не забудьте сделать глобальный source для ROS:
source /opt/ros/humble/setup.bash
Запустим rosgraph_monitor через launch:
ros2 launch rosgraph_monitor monitor_launch.yaml
Вывод

Он мне показался довольно ограниченным инструментом.
У пакета доступна документация.
Среди рассмотренных утилит самыми полезными и функциональными мне показались ros2sysmon и Greenwave Monitor. Они позволяют сделать больше чем просто показать список запущенных процессов.
На этом все. До новых встреч!