exponenta event banner

Узел

Запуск узла ROS и подключение к ведущему узлу ROS

Описание

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

Узел ROS можно создать с помощью rosinit функции или путем вызова ros.Node:

  • rosinit - создание одного узла ROS в MATLAB ®. Можно указать существующую основную запись ROS или создать ее. Node объект не виден.

  • ros.Node- Создает несколько узлов ROS для использования в одной сети ROS в MATLAB.

Создание

Описание

пример

N = ros.Node(Name) инициализирует узел ROS с помощью Name и пытается подключиться к хозяину ROS по URI по умолчанию, http://localhost:11311.

N = ros.Node(Name,Host) пытается подключиться к хозяину ROS по указанному IP-адресу или имени хоста, Host используя номер порта по умолчанию, 11311.

N = ros.Node(Name,Host,Port)пытается подключиться к хозяину ROS с номером порта, Port.

N = ros.Node(Name,MasterURI,Port) пытается подключиться к хозяину ROS по указанному IP-адресу, MasterURI.

N = ros.Node(___,'NodeHost',HostName) указывает IP-адрес или имя хоста, которое узел использует для объявления себя в сети ROS. Примеры: "192.168.1.1" или "comp-home". Можно использовать любой из аргументов из предыдущих синтаксисов.

Свойства

развернуть все

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

URI хозяина ROS, заданный как строковый скалярный или символьный вектор. Узел подключен к ведущему узлу ROS с заданным URI.

URI для узла, указанный как строковый скалярный или символьный вектор. Узел использует этот URI для объявления себя в сети ROS для подключения к ней других пользователей.

Текущее сетевое время ROS, указанное как Time объект. Дополнительные сведения см. в разделе rostime.

Примеры

свернуть все

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

Создайте основную запись ROS.

master = ros.Core;
Launching ROS Core...
Done in 0.71736 seconds.

Инициализируйте несколько узлов.

node1 = ros.Node('/test_node_1');
node2 = ros.Node('/test_node_2');

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

pub = ros.Publisher(node1,'/chatter','std_msgs/String');
sub = ros.Subscriber(node2,'/chatter','std_msgs/String');

msg = rosmessage('std_msgs/String');
msg.Data = 'Message from Node 1';

Отправить сообщение от node1. Абонент, подключенный к node2 получит сообщение.

send(pub,msg) % Sent from node 1
pause(1) % Wait for message to update
sub.LatestMessage
ans = 
  ROS String message with properties:

    MessageType: 'std_msgs/String'
           Data: 'Message from Node 1'

  Use showdetails to show the contents of the message

Очистите сеть ROS издателя, подписчика и узлов. Удалить Core объект для завершения работы хозяина ROS.

clear('pub','sub','node1','node2')
clear('master')

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

Создайте два мастера ROS на разных портах.

m1 = ros.Core; % Default port of 11311 
Launching ROS Core...
Done in 0.69014 seconds.
m2 = ros.Core(12000);
Launching ROS Core...
Done in 0.72836 seconds.

Подключите отдельные узлы ROS к каждому главному узлу ROS.

node1 = ros.Node('/test_node_1','localhost');
node2 = ros.Node('/test_node_2','localhost',12000);

Очистите узлы ROS. Выключите основные устройства ROS.

clear('node1','node2')
clear('m1','m2')

См. также

|

Внешние веб-сайты

Представлен в R2019b