Утилит roslaunch и .launch файлы

В любой существующей реальной системе, запускаются десятки нод. Для того чтобы было удобно управлять и конфигурировать все эти ноды, существуют специальные конфигурационные файлы в формате XML. Эти файлы имеют расширение .launch и их принято хранить в директории launch вашего пакета.

Хорошая практика для любого пакета помимо самих программ - добавлять эти конфигурационные файлы, для того чтобы другие разработчики могли подключать их в свои системы не "погружаясь" в дебри.

Например для робота TurtleBro созданы файлы позволяющие при загрузке робота запускать все необходимые файлы и пакеты.

Создаём .launch файл

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

Для этого в ранее созданном нами пакете base_ros необходимо создать папку /launch, а в ней файл temp_topic_publisher.launch

<launch>
    <node pkg="base_ros" type="temp_topic_publisher.py" name="temp_topic_publisher" output="log" respawn="false"/>
</launch>

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

Мы можем проверить правильность написания .launch файла просто запустив его указав относительный или абсолютный путь к .launch файлу

cd ~/catkin_ws/src/base_ros/launch/
roslaunch temp_topic_publisher.launch

Но обычно для работы используется синтаксис с указанием названия пакета, в котором содержится данная программа. Например для запуска ноды SLAM-навигации, необходимо выполнить команду:

roslaunch turtlebro_navigation turtlebro_slam_navigation.launch

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

Чтобы не указывать каждый файл в файле CMakeLists.txt, мы укажем всю директорию для копирования.

install(DIRECTORY
  launch
  DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION}
)

Далее нам необходимо пересобрать пакет base_ros.

После этого при запуске команды:

roslaunch base_ros temp_topic_publisher.launch

Будет запущен наш Издатель.

Параметры запуска ноды ROS

Для конфигурирования нод ROS, принято выносить параметры запущенной ноды в .launch файл. Тогда, для изменения параметров нам не надо изменять код программы, а достаточно изменить только XML файл.

Например вы можете увидеть в файле turtlebro/launch/camera_ros.launchпараметры запуска:

      <param name="width" value="640" />
      <param name="height" value="480" />
      <param name="format" value="jpeg" />

Мы видим, что в этом файле мы указываются параметры (разрешение) работы камеры.

Запуск множества нод

Очень часто, для работы конкретной ноды, нам требуется запустить ноды которые необходимы для ее работы. Так если мы хотим обрабатывать данные температуры, то перед запуском этой программы, нам стоит запустить Издателя temp_topic_publisher который будет передавать данные температуры.

Для подключения сторонних нод в .launch файлах есть директива include

    <include file="$(find package_name)/launch/launch_name.launch">
    </include>

Другие директивы .launch файлов можно посмотреть на странице http://wiki.ros.org/roslaunch/XML

results matching ""

    No results matching ""