Этот пример исследует, как добавить и получить параметры на сервере параметров 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 и удалите глобальный узел.
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.
Примеры приложений см. в Запуск с Gazebo и моделируемым TurtleBot или Запуском с реальным TurtleBot примерами.