Node

Запустите узел 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;

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

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 
m2 = ros.Core(12000);

Соедините отдельные узлы 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