Узел

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

Описание

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

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

  • rosinit — Создает один узел ROS в MATLAB®. Можно задать существующее ведущее устройство ROS, или функция создает один для вас. Объект Node не видим.

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

Создание

Синтаксис

N = robotics.ros.Node(Name)
N = robotics.ros.Node(Name,Host)
N = robotics.ros.Node(Name,Host,Port)
N = robotics.ros.Node(Name,MasterURI,Port)
N = robotics.ros.Node(___,'NodeHost',HostName)

Описание

пример

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

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

N = robotics.ros.Node(Name,Host,Port)попытки соединиться с ведущим устройством ROS с номером порта, Port.

N = robotics.ros.Node(Name,MasterURI,Port) попытки соединиться с ведущим устройством ROS в заданном IP-адресе, MasterURI.

N = robotics.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 = robotics.ros.Core;

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

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

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

pub = robotics.ros.Publisher(node1,'/chatter','std_msgs/String');
sub = robotics.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 = robotics.ros.Core; % Default port of 11311 
m2 = robotics.ros.Core(12000);

Соедините отдельные узлы ROS с каждым ведущим устройством ROS.

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

Очистите узлы ROS. Закройте ведущие устройства ROS.

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

Смотрите также

|

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

Представленный в R2015a