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;
Launching ROS Core...
.................................Done in 1.2033 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 1.3351 seconds.
m2 = ros.Core(12000);
Launching ROS Core...
...................................Done in 1.3509 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