- PVSM.RU - https://www.pvsm.ru -
Мониторинг состояния системы (процессов, запущенных служб и обмена данными по сети) играет очень важную роль при работе над сложной робототехнической системой. Наличие удобного инструмента для интроспекции состояния процессов упрощает работу разработчика позволяя быстро находить и исправлять неисправности и экономить время на ненужной отладке. В этой статье я расскажу о популярных инструментах мониторинга в ROS2. Кому интересно прошу под кат.
Совсем недавно NVIDIA представила инструмент Greenwave Monitor. Его можно найти на github [1].
На 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. Он напоминает утилиту top в Linux.
Исходники ros2top можно найти на github [2].
Установим пакет. Можно напрямую через pip:
pip install ros2top
Или из исходников:
git clone https://github.com/AhmedARadwan/ros2top.git
cd ros2top
pip install -e .
Запустим:
ros2top
Вывод утилиты:

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

Ещё один похожий инструмент на top это ros2sysmon. Исходники можно найти на github [3].
Установим его:
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 [4].
Соберем все пакеты в отдельном воркспейсе:
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
Вывод

Он мне показался довольно ограниченным инструментом.
У пакета доступна документация [5].
Среди рассмотренных утилит самыми полезными и функциональными мне показались ros2sysmon и Greenwave Monitor. Они позволяют сделать больше чем просто показать список запущенных процессов.
На этом все. До новых встреч!
Автор: vladpriv
Источник [6]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/roboty/433309
Ссылки в тексте:
[1] github: https://github.com/NVIDIA-ISAAC-ROS/greenwave_monitor
[2] github: https://github.com/AhmedARadwan/ros2top
[3] github: https://github.com/pitosalas/ros2sysmon
[4] ROS 2 Graph Monitor: https://github.com/ros-tooling/graph-monitor
[5] документация: https://docs.ros.org/en/ros2_packages/rolling/api/rosgraph_monitor/
[6] Источник: https://habr.com/ru/articles/955356/?utm_campaign=955356&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.