Всем дорого времени суток!
В последнее благодаря бурному развитию ИИ агентов типа 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
Мы увидим такой вывод

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



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