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

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

Необходимые условия: Начало работы с ROS, подключением к сети ROS

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

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

rosinit
Launching ROS Core...
Done in 0.72313 seconds.
Initializing ROS master on http://192.168.0.10:51395.
Initializing global node /matlab_global_node_29282 with NodeURI http://bat6312glnxa64:37091/

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

ptree = rosparam
ptree = 
  ParameterTree with properties:

    AvailableParameters: {0x1 cell}

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

Чтобы установить параметр для 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 в /myrobot пространство имен с помощью get функция:

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

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

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

plist = ptree.AvailableParameters
plist = 7x1 cell
    {'/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
    {'/myrobot/MAX_SPEED'}    {'/myrobot/ROBOT_IP'}    {'/myrobot/ROBOT_...'}

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

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

rosshutdown
Shutting down global node /matlab_global_node_29282 with NodeURI http://bat6312glnxa64:37091/
Shutting down ROS master on http://192.168.0.10:51395.

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