четверг, 27 июля 2017 г.

ROS. Параметры

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

Самый простой доступ к параметрам - через командрую строку. Запустите 
  
   rosparam list

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

   rosparam get имя_параметра
   rosparam get пространство_имён

Вторая команда, в отличие от первой, отобразит список параметров всего заданного пространства имён вместе с их величинами. Для установки значения используйте 

   rosparam set имя_параметра значение

Список параметров пространства имён можно сохранить или, наоборот, считать из файла с помощью следующих команд

   rosparam dump имя_файла пространство_имён
   rosparam load имя_файла пространство_имён

Если у вас запущен пример с черепахой, можно попробовать поменять в нём цвет фона:

   rosparam set /background_r 0
   rosparam set /background_g 255
   rosparam set /background_b 0
   rosparam call /clear

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

Параметры могут быть установлены также при запуске из загрузочного файла. Для этого используется элемент

   <param name="имя_параметра" value="значение"/>

Этот тег может быть задан в виде 

   <node>
      <param .../>
      <param .../>
   </node>

для каждой отдельной ноды, или как 

   <group ns="пространство_имён">
      <param .../>
      <param .../>
   </group>

для некоторого пространства имён. 

Наконец, рассмотрим пример работы с параметрами в коде программы на примере файла background.py.
Помимо rospy здесь также импортируется сервис для очистки параметров узла черепахи std_srvs.srv.Empty. Первое, что делает программа (после инициализации ноды), это считывает текущее значение параметра run_id с помощью функции get_param(), и выводит на экран. Следующие несколько строк демонстрируют, что для задания нового параметра достаточно просто его объявить в функции set_param() и присвоить начальное значение. Последняя часть файла работает с "черепашкой". Функция wait_for_service() приостанавливает программу до тех пор, пока turtlesim_node не будет запущен (сервис станет доступен). После этого устанавливается новый цвет фона. Наконец, сервис 'clear' обновляет состояние окна черепахи.

Комментариев нет:

Отправить комментарий