Node

Запустите узел ROS и соединитесь с ведущим узлом ROS

Описание

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

Вы можете создать узел ROS с помощью rosinit function, или вызовом ros.Node:

  • rosinit - Создает один узел ROS в MATLAB®. Можно задать существующий мастер ROS или создать его для вас. The 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».

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