Доступ к серверу параметра ROS

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

Предпосылки: Запуск с ROS, соединитесь с сетью ROS

Создайте дерево параметра

Запустите ведущее устройство ROS и сервер параметра в MATLAB®.

rosinit
Initializing ROS master on http://bat6230glnxa64:40799/.
Initializing global node /matlab_global_node_60354 with NodeURI http://bat6230glnxa64:38231/

Создайте объект дерева параметра взаимодействовать с сервером параметра. Дерево параметра позволяет вам взаимодействовать с сервером параметра и обеспечивает функции, такие как set, get, del, has и search. Поскольку мы запустили новый сервер параметра в этом примере, никакие параметры в настоящее время не хранятся там.

ptree = rosparam
ptree = 
  ParameterTree with properties:

    AvailableParameters: {}

Добавьте новые параметры

Чтобы установить параметр для IP-адреса робота, используйте название параметра ROBOT_IP. Проверяйте, существует ли параметр с тем же именем уже. Используйте функцию has.

has(ptree,'ROBOT_IP')
ans = logical
   0

Если has возвращает 0 (FALSE) как вывод, то это означает в настоящее время, что имя ROBOT_IP не могло быть найдено на сервере параметра.

Добавьте некоторые параметры, указывающие на IP-адрес робота к серверу параметра. Используйте функцию set с этой целью.

set(ptree,'ROBOT_IP','192.168.1.1');
set(ptree, '/myrobot/ROBOT_IP','192.168.1.100');

Параметры ROBOT_IP теперь доступны всем узлам, соединенным с этим ведущим устройством ROS. Можно задать параметры в пространстве имен. Например, параметр /myrobot/ROBOT_IP в пространстве имен /myrobot в этом примере.

Установите больше параметров с различными типами данных.

set(ptree,'MAX_SPEED',1.5);

Используйте массив ячеек в качестве входа к функции set. Установите параметр, который имеет целевые координаты {x, y, z} для робота.

set(ptree,'goal',{5.0,2.0,0.0});

Установите дополнительные параметры, чтобы заполнить сервер параметра.

set(ptree, '/myrobot/ROBOT_NAME','TURTLE');
set(ptree, '/myrobot/MAX_SPEED',1.5);
set(ptree, '/newrobot/ROBOT_NAME','NEW_TURTLE');

Получите значения параметров

Предположим, что вы хотите получить IP-адрес робота от параметра ROBOT_IP, потому что вы хотите использовать этот IP-адрес, чтобы соединиться с этим роботом. Существует два параметра с именем ROBOT_IP в нем, но вы только хотите IP-адрес myrobot. Можно получить это значение параметров с помощью функции get:

robotIP = get(ptree, '/myrobot/ROBOT_IP')
robotIP = 
'192.168.1.100'

Получите список всех параметров

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

plist = ptree.AvailableParameters
plist = 7x1 cell array
    {'/MAX_SPEED'          }
    {'/ROBOT_IP'           }
    {'/goal'               }
    {'/myrobot/MAX_SPEED'  }
    {'/myrobot/ROBOT_IP'   }
    {'/myrobot/ROBOT_NAME' }
    {'/newrobot/ROBOT_NAME'}

Измените существующие параметры

Можно также использовать функцию set, чтобы изменить значения параметров. Обратите внимание на то, что модификация параметра необратима, поскольку сервер параметра просто перезапишет параметр с новым значением. Можно проверить, существует ли параметр уже при помощи функции has.

Измените параметр MAX_SPEED:

set(ptree, 'MAX_SPEED', 1.0);

Измененное значение может иметь различный тип данных от ранее присвоенного значения. Например, значение параметра MAX_SPEED в настоящее время типа double. Установите значение строки для параметра MAX_SPEED:

set(ptree, 'MAX_SPEED', 'none');

Удалите параметры

Можно удалить параметр из сервера параметра с помощью функции del.

Удалите параметр goal.

del(ptree, 'goal');

Проверяйте, был ли параметр goal удален. Используйте функцию has.

has(ptree, 'goal')
ans = logical
   0

Вывод является 0 (FALSE), что означает, что параметр был удален из сервера параметра.

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

Ищите все параметры, которые содержат 'myrobot' с помощью search команды:

results = search(ptree, 'myrobot')
results = 1x3 cell array
    {'/myrobot/MAX_SPEED'}    {'/myrobot/ROBOT_IP'}    {'/myrobot/ROBOT_...'}

Закройте сеть ROS

Закройте ведущее устройство ROS и удалите глобальный узел.

rosshutdown
Shutting down global node /matlab_global_node_60354 with NodeURI http://bat6230glnxa64:38231/
Shutting down ROS master on http://bat6230glnxa64:40799/.

Следующие шаги