Этот пример исследует, как добавить и получить параметры на сервере параметра ROS. Сервер параметра обычно работает на том же устройстве, которое запускает ведущее устройство ROS. Параметры доступны глобально по сети ROS и могут использоваться, чтобы хранить статические данные, такие как параметры конфигурации. Поддерживаемые типы данных включают строки, целые числа, удваивается, logicals, и массивы ячеек.
Необходимые условия: Начало работы с ROS, подключением к сети ROS
Запустите ведущее устройство ROS и сервер параметра в MATLAB.
rosinit
Launching ROS Core... .................................................Done in 1.7964 seconds. Initializing ROS master on http://192.168.0.10:52773. Initializing global node /matlab_global_node_47724 with NodeURI http://bat1072001glnxa64:34977/
Создайте объект дерева параметра взаимодействовать с сервером параметра. Используйте дерево параметра, чтобы взаимодействовать с сервером параметра и вызвать функции такой как set
, get
, del
, has
и search
. Создайте новый сервер параметра с помощью rosparam
.
ptree = rosparam
ptree = ParameterTree with properties: AvailableParameters: {4x1 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 = 11x1 cell
{'/MAX_SPEED' }
{'/ROBOT_IP' }
{'/goal' }
{'/myrobot/MAX_SPEED' }
{'/myrobot/ROBOT_IP' }
{'/myrobot/ROBOT_NAME' }
{'/newrobot/ROBOT_NAME' }
{'/rosdistro' }
{'/roslaunch/uris/host_bat1072001glnxa64__43975'}
{'/rosversion' }
{'/run_id' }
Можно также использовать 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_47724 with NodeURI http://bat1072001glnxa64:34977/ Shutting down ROS master on http://192.168.0.10:52773. ........
Для примеров приложения смотрите Начало работы с Gazebo и Симулированным TurtleBot или Начало работы с Действительным TurtleBot примеры.