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' обновляет состояние окна черепахи.
Комментариев нет:
Отправить комментарий