Мониторинг состояния системы (процессов, запущенных служб и обмена данными по сети) играет очень важную роль при работе над сложной робототехнической системой. Наличие удобного инструмента для интроспекции состояния процессов упрощает работу разработчика позволяя быстро находить и исправлять неисправности и экономить время на ненужной отладке. В этой статье я расскажу о популярных инструментах мониторинга в 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 --

Пример вывода:

Представление топиков и TF фреймов
Представление топиков и TF фреймов

Мы можем контролировать вывод утилиты.

Если нажать клавишу 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. Они позволяют сделать больше чем просто показать список запущенных процессов.

На этом все. До новых встреч!