В этом примере рассматривается добавление и извлечение параметров на сервере параметров 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 и удалите глобальный узел.
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.
Примеры применения см. в разделе Начало работы с беседкой и смоделированным TurtleBot или Начало работы с реальным TurtleBot.