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

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

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

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

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

rosinit
Launching ROS Core...
.Done in 1.382 seconds.
Initializing ROS master on http://192.168.0.10:52825.
Initializing global node /matlab_global_node_06619 with NodeURI http://bat6315glnxa64:42619/

Создайте древовидный объект параметра для взаимодействия с сервером параметров. Используйте дерево параметров для взаимодействия с сервером параметров и вызовов таких функций, как 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');

The 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_06619 with NodeURI http://bat6315glnxa64:42619/
Shutting down ROS master on http://192.168.0.10:52825.

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