Всем дорого времени суток!

В последнее благодаря бурному развитию ИИ агентов типа Codex, Claude Code, Gemini стало намного проще написать свою маленькую утилиту которая помогает автоматизировать рутинные задачи и облегчает работу в любой сфере. Особенно много стало появляться CLI инструментов для работы с ROS 2 и в особенности TUI утилит.

В этой статье я расскажу о некоторых полезных инструментах командной строки с TUI которые облегчают работу с ROS 2. Кому интересно прошу под кат.

Tf_tree_terminal

Это легковесная утилита для проверки, визуализации и валидации данных трансформаций.

Исходный код доступен на github.

Сначала клонируем исходники из гитхаба в наш воркспейс

cd ~/ros2_ws/src
git clone https://github.com/Tanneguydv/tf_tree_terminal.git

и компилируем

cd ~/ros2_ws
colcon build --packages-select tf_tree_terminal
source install/setup.bash

Проще всего увидеть инструмент в действии если у вас есть реальный робот. Но можно эмулировать данные трансформации с помощью пакета static_transform_publisher. Выполним такую команду:

ros2 run tf2_ros static_transform_publisher 0.1 0 0.05 0 0 0 base_link camera_link

Эта команда создает фрейм camera_link который находится на расстоянии 0.1 м впереди (по оси x) и в 0.05 м вверх (ось z). Мы увидим такой вывод в терминале:

Запустим инструмент TF-Tree:

tf-tree

Мы увидим в терминале:

Можно добавить в команду флаг --light чтобы получить упрощенный вывод

Запустим TurtleBot3

export TURTLEBOT3_MODEL=waffle
. /usr/share/gazebo/setup.sh
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

Вывод TF-Tree будет таким

В выводе TF-Tree можно заметить визуальные маркеры напротив различных типов данных. В README на гитхабе проекта есть пояснение этих маркеров

⚯ Link: Имя фрейма TF с указанием частоты обновления (в герцах).

[LIVE: 15ms]: Данные актуальны 15 мс.

[STALE: 2.1s]: Узел вещания, вероятно, остановлен или дал сбой.

⚙ Joint: Выводит список узлов-публикаторов как для трансформации (TF), так и для состояний сочленений (joint states).

Обратите внимание что корневой линк называется "odom".

Можно сохранить вывод в файл

ros2 run tf_tree_terminal tf-tree -s tf_tree.txt

Будет создан файл tf_tree.txt в текущей папке.

rtui

Название утилиты это аббревиатура для ROS Terminal User Interface.

Исходный код доступен на github.

Устанавливаем через pip:

pip3 install --user rtui-app

Запускаем

rtui

Мы увидим такой вывод

Вот несколько примеров вывода в приложении

Информация об узле (при нажатии на имя узла)
Информация об узле (при нажатии на имя узла)
Информация о топике /turtle1/color_sensor (при нажатии на ссылку  в правом окне)
Информация о топике /turtle1/color_sensor (при нажатии на ссылку в правом окне)
Информация о типе turtlesim/msg/Color (при нажатии на ссылку  в правом окне)
Информация о типе turtlesim/msg/Color (при нажатии на ссылку в правом окне)

GUI ограничивается одной вкладкой но тем не менее предоставляет широкий набор возможностей получения информации о различных сущностях экосистемы ROS 2. Также всегда можно вернуться на предыдущий шаг.

ros2_console_tools

Исходный код доступен на github.

ros2_console_tools — это набор инструментов для инспекции, визуализации и рабочих процессов в ROS 2 во время выполнения (райнтайм), предоставляющий широкий спектр инструментов для работы с графиками, средой выполнения и визуализации ROS 2. Полный список инструментов можно посмотреть здесь.

Установка

cd ~/ros2_ws/src/ && git clone https://github.com/nilseuropa/ros2_console_tools.git
cd ..
colcon build --packages-select ros2_console_tools
source install/setup.bash

Запускаем инструменты:

ros2 run ros2_console_tools node_commander
ros2 run ros2_console_tools topic_monitor

Мы увидим в терминале:

Нажмем F3 чтобы показать список топиков:

Запустим узел Turtlesim и выполним в другом терминале следующую команду чтобы черепашка двигалась по круговой траектории:

ros2 topic pub --rate 1 /turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 1.8}}"

Сделаем рефреш в терминале с node_commander

Выберем топик turtle1 и нажмем клавишу стрелки вправо

Мы увидим детали каждого топика в правой части

Детали каждого топика
Детали каждого топика

С использованием клавиш стрелок вверх, вниз, вправо, Enter и Esc можно очень легко перемещаться между различными топиками, типами сообщений и отдельными полями типов сообщений (интерфейсов).

С помощью F3 можно визуализировать значения в топике прямо в терминале:

rostree

Исходный код доступен на github.

Установим через pip:

pip install -e .   # or: uv pip install -e .
source /opt/ros/<distro>/setup.bash   # and/or your workspace install/setup.bash

Запустим

rostree

Нажмем дважды Enter и увидим раскрытый список всех установленных пакетов

При нажатии на любой пункт в списке раскроется его содержимое и внизу появится детальное описание

Можно показывать / скрывать детальное описание с помощью клавиши 'd'. Для обновления данных можно использовать клавиши 'r'.

TViz

Terminal RViz — это высокопроизводительный 3D-визуализатор для ROS 2, который работает полностью внутри терминала. Согласно авторам инструмента это альтернатива стандартному RViz для систем без графического интерфейса, удаленных сессий по SSH или сред с ограниченными ресурсами. Terminal RViz создан с использованием библиотеки FTXUI и собственного программного рендерера на основе шрифта Брайля и предлагает богатый функционал. Исходный код доступен на github.

Установливаем без GPU

cd ~/your_ws
colcon build --packages-select terminal_rviz --cmake-args -DCMAKE_BUILD_TYPE=Release -DWITH_GPU=OFF
source install/setup.bash

Запустим симулятор TurtleBot3:

ros2 launch turtleboros2 launch turtlebot3_gazebo turtlebot3_world.launch.py gui:=falset3_gazebo turtlebot3_world.launch.py gui:=false

Запустим узел Terminal RViz

ros2 run terminal_rviz terminal_rviz_node

Нажмем клавишу P чтобы добавить плагины. С помощью стрелок на клавиатуре можно переключаться между вкладками:

Окно добавления плагинов
Окно добавления плагинов

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

Модель робота в основном окне
Модель робота в основном окне

Покажем сетку с помощью клавиши 'G'

Добавим еще один плагин TF нажав клавишу P. В основном окне визуализации мы увидим систему координат:

Слева в блоке Topics / Frames можно выбрать какие системы координат TF показывать. Также для более удобного обзора робота можно слева в блоке Active tool или по клавише P переключить режим PAN на ORBIT и немного изменить угол обзора робота

К сожалению, другие возможности работы с Terminal RVIZ (н-р, визуализация данных с лидаров, артефакты работы SLAM итд) мне не удалось исследовать. Но все эти функции определенно поддерживается в инструменте.

Итак, мы рассмотрели ряд интересных инструментов c TUI, которые упрощают работу с различными аспектами экосистемы ROS 2. Такие программы появляются каждый день, поэтому возможно будут другие обзоры. Надеюсь данный обзор был для вас полезен.

До новых встреч!

Комментарии (0)