exponenta event banner

Доступ к серверу параметров 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');

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.

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