6. Launch-файлы, параметры и пространства имён

Для чего нужен launch

Файл запуска описывает состав системы: какие процессы запустить, какие параметры передать и как назвать узлы и топики. Он позволяет воспроизвести конфигурацию без ручного запуска множества терминалов.

Имя пакета выбирает установленный ресурс, executable — исполняемую программу, name — имя узла, namespace — область имён. Remapping меняет используемые имена интерфейсов; параметр меняет настройку узла, если узел эту настройку поддерживает.

Минимальный пример

Создайте launch/turtles.launch.py в своём пакете:

from launch import LaunchDescription
from launch_ros.actions import Node


def generate_launch_description():
    return LaunchDescription([
        Node(package='turtlesim', executable='turtlesim_node',
             namespace='demo', output='screen'),
    ])

Добавьте каталог launch в правила установки пакета. Для ament_python это data_files в setup.py, для ament_cmake — команда install в CMakeLists.txt. После сборки и подключения окружения файл должен находиться в установленном share/<package>/launch.

Практика

Запустите файл через ros2 launch <package> turtles.launch.py, заменив <package> именем своего пакета. Затем изучите ros2 node list и ros2 topic list. Сравните имена с запуском без namespace.

Параметры запущенного узла можно исследовать командами ros2 param list, ros2 param get и ros2 param describe, указав имя узла и параметра.

Самостоятельное задание

Объедините turtlesim и свой регулятор в одном launch-файле. Затем запустите вторую независимую копию системы в другом namespace.

Самопроверка

  • Почему существующий в исходниках launch-файл может не находиться командой запуска?
  • Как отличаются name, namespace и remapping?
  • Какие значения следует вынести из кода узла в параметры?

Основа урока: учебное пособие «Операционная система для роботов ROS 2», ИТМО, 2026, печатные страницы 14–16, 44–46. Это учебный конспект с упражнениями; полные примеры и рисунки приведены в пособии.