Команды ROS 2

Рисунок 1 — Пример команд Linux в терминале

Пример команд Linux в терминале


Введение

При работе с ROS 2 все начинается с терминала. Через него запускают ноды, смотрят список топиков, проверяют сообщения от датчиков, настраивают параметры, запускают программы и анализируют ошибки.

Терминал не заменяет редактор кода, но помогает быстро понять, что происходит внутри системы. Если квадрокоптер не получает данные с датчика, не запускается нода или не появляется нужный топик, первые проверки можно выполнить с помощью команд.

В этой статье собраны базовые команды Linux и ROS 2, которые часто нужны при разработке и отладке.

Базовые команды Linux

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

Навигация по папкам

Команда

Что делает

pwd

Показывает путь к текущей директории

ls

Выводит список файлов и папок

ls -la

Показывает скрытые файлы, права доступа и размер

cd ~/clover2_ws

Переходит в папку ~/clover2_ws

cd ..

Переходит на один уровень выше

Работа с файлами и папками

Команда

Что делает

mkdir test_folder

Создает папку test_folder

touch notes.txt

Создает пустой файл notes.txt или обновляет время изменения существующего файла

cp notes.txt notes_copy.txt

Копирует файл notes.txt в notes_copy.txt

mv notes_copy.txt old_notes.txt

Перемещает или переименовывает файл

rm old_notes.txt

Удаляет файл old_notes.txt

Предупреждение

Команда rm удаляет файлы без перемещения в корзину. Перед удалением проверьте путь и имя файла. Особенно осторожно используйте rm -r, потому что эта команда удаляет папку вместе со всем ее содержимым.

Просмотр и поиск

Команда

Что делает

cat notes.txt

Выводит содержимое файла notes.txt в терминал

less notes.txt

Открывает файл notes.txt для просмотра

grep "error" log.txt

Ищет текст error в файле log.txt

find . -name "*.py"

Ищет Python-файлы в текущей папке и ее вложенных папках

В команде find . -name "*.py" точка . означает, что поиск начинается из текущей папки. Параметр -name задает поиск по имени файла, а шаблон "*.py" означает любое имя, которое заканчивается на .py.

Для выхода из less нажмите q.

Установка пакетов

Команда

Что делает

sudo apt update

Обновляет список доступных пакетов

sudo apt upgrade

Обновляет уже установленные пакеты

sudo apt install <package>

Устанавливает пакет <package>

Предупреждение

sudo запускает команду с правами администратора. Перед выполнением команды с sudo убедитесь, что понимаете, какие изменения она внесет в систему.

Процессы

Команда

Что делает

ps aux | grep ros2

Показывает запущенные процессы и оставляет строки, содержащие ros2

top

Показывает запущенные процессы и текущую нагрузку на систему

htop

Показывает процессы и нагрузку на систему в интерактивном виде

kill 12345

Отправляет процессу с номером 12345 сигнал завершения

Основные команды ROS2

Команда ros2 состоит из подкоманд. Например, ros2 topic list работает с топиками, а ros2 node list — с нодами.

Рисунок 2 — Пример команд ros2 node и ros2 topic

Пример команд ros2 node и ros2 topic


Справка

Команда

Что делает

ros2 --help

Показывает общую справку по ros2

ros2 topic --help

Показывает справку по работе с топиками

ros2 topic echo --help

Показывает справку по выводу сообщений из топика

Справка полезна, когда вы забыли точный синтаксис команды или хотите посмотреть доступные параметры. Аналогично можно проверять и другие команды ROS 2, добавляя к ним --help.

Ноды

Команда

Что делает

ros2 node list

Показывает запущенные ноды

ros2 node info /camera_node

Показывает, какие топики, сервисы и параметры связаны с нодой /camera_node

Если нужной ноды нет в списке, она не обнаружена в текущей системе ROS 2. Обычно это означает, что нода не запущена или не подключена к тому же ROS 2-домену.

Топики

Команда

Что делает

ros2 topic list

Показывает доступные топики

ros2 topic info /scan

Показывает тип сообщения, количество издателей и подписчиков топика /scan

ros2 topic echo --once /scan

Выводит одно сообщение из топика /scan и завершает команду

ros2 topic hz /scan

Показывает фактическую частоту поступления сообщений из топика /scan

Чтобы вывести только одно поле сообщения:

Команда

Что делает

ros2 topic echo --once /scan --field ranges

Выводит только поле ranges из одного сообщения топика /scan

Сервисы

Команда

Что делает

ros2 service list

Показывает доступные сервисы

ros2 service type /reset

Показывает тип сервиса /reset

ros2 service call /reset std_srvs/srv/Empty "{}"

Отправляет запрос сервису /reset с типом std_srvs/srv/Empty

Сервисы используют для выполнения действий по запросу: клиент отправляет запрос, а сервис возвращает ответ. Например, в ROS 2 сервис можно использовать для команды сброса состояния устройства. Конкретный способ управления квадрокоптером, включая команды arm и disarm, зависит от используемого пакета и интерфейса.

Параметры

Команда

Что делает

ros2 param list

Показывает параметры нод

ros2 param get /camera_node exposure

Читает значение параметра exposure у ноды /camera_node

ros2 param set /camera_node exposure 100

Устанавливает значение 100 для параметра exposure у ноды /camera_node

Например, с их помощью можно изменить частоту публикации, режим работы устройства или другие настройки, предусмотренные разработчиком ноды.

Список параметров нужно запрашивать у конкретной ноды. Поэтому команда ros2 param list без имени ноды в этой статье не используется.

Запуск программ

Команда

Что делает

ros2 pkg executables <package>

Показывает зарегистрированные исполняемые файлы пакета <package>

ros2 run <package> <executable>

Запускает один исполняемый файл <executable> из пакета <package>

ros2 launch clover2 clover2.launch.py

Запускает launch-файл clover2.launch.py из пакета clover2

Файлы *.launch.py запускаются командой ros2 launch, а не ros2 run. Если пакет или исполняемый файл не найден, сначала проверьте, что окружение подключено через source, а затем посмотрите доступные пакеты и исполняемые файлы:

Команда

Что делает

ros2 pkg list | grep clover

Ищет пакеты, в названии которых есть clover

ros2 pkg executables clover2

Показывает исполняемые файлы пакета clover2

Для запуска одной ноды удобно использовать ros2 run. Для реального проекта чаcсто используют ros2 launch, потому что система обычно состоит из нескольких нод, которые нужно запускать и настраивать одновременно.

Запись данных

Команда

Что делает

ros2 bag record /scan

Записывает сообщения из топика /scan в bag-файл

ros2 bag record -a

Записывает сообщения из всех доступных топиков

ros2 bag play rosbag2_2026_05_22-12_00_00

Воспроизводит записанные данные из указанного bag-файла

Запись bag-файлов полезна, когда нужно сохранить данные с датчиков и потом воспроизвести их без подключенного датчика или настоящего робота.

Практический сценарий отладки

Ниже приведен пример проверки, когда вы ожидаете данные в топике /scan.

  1. Проверьте, что нужная нода запущена:

    Команда

    Что делает

    ros2 node list

    Показывает запущенные ноды

  2. Найдите нужный топик:

    Команда

    Что делает

    ros2 topic list | grep scan

    Ищет топики, в названии которых есть scan

  3. Посмотрите информацию о топике:

    Команда

    Что делает

    ros2 topic info /scan

    Показывает тип сообщения и количество издателей и подписчиков топика /scan

  4. Выведите одно сообщение:

    Команда

    Что делает

    ros2 topic echo --once /scan

    Выводит одно сообщение из топика /scan и завершает команду

  5. Проверьте частоту сообщений:

    Команда

    Что делает

    ros2 topic hz /scan

    Показывает фактическую частоту поступления сообщений из /scan

Если топика нет в списке, сначала проверьте, запущена ли нужная нода. Если топик есть, но сообщений нет, проверьте подключение устройства, параметры драйвера и сообщения об ошибках в терминале, где запускалась нода.