получить

Ожидайте нового сообщения ROS

Синтаксис

msg = receive(sub)
msg = receive(sub,timeout)

Описание

пример

msg = receive(sub) ожидает MATLAB®, чтобы получить сообщение темы от заданного подписчика, sub, и возвращает его как msg.

пример

msg = receive(sub,timeout) задает в timeout номер секунд, чтобы ожидать сообщения. Если сообщение не получено в пределе тайм-аута, программное обеспечение выдает ошибку.

Примеры

свернуть все

Соединитесь с сетью ROS. Настройте демонстрационную сеть ROS. Тема '/scan' публикуется в сети.

rosinit
Initializing ROS master on http://bat6230glnxa64:38653/.
Initializing global node /matlab_global_node_39993 with NodeURI http://bat6230glnxa64:32967/
exampleHelperROSCreateSampleNetwork

Создайте подписчика для темы '/scan'. Ожидайте подписчика, чтобы указать с ведущим устройством.

sub = rossubscriber('/scan');
pause(1);

Получите данные от подписчика как сообщение ROS. Задайте 10 вторых тайм-аутов.

msg2 = receive(sub,10)
msg2 = 
  ROS LaserScan message with properties:

       MessageType: 'sensor_msgs/LaserScan'
            Header: [1x1 Header]
          AngleMin: -0.5216
          AngleMax: 0.5243
    AngleIncrement: 0.0016
     TimeIncrement: 0
          ScanTime: 0.0330
          RangeMin: 0.4500
          RangeMax: 10
            Ranges: [640x1 single]
       Intensities: [0x1 single]

  Use showdetails to show the contents of the message

Сеть Shutdown ROS.

rosshutdown
Shutting down global node /matlab_global_node_39993 with NodeURI http://bat6230glnxa64:32967/
Shutting down ROS master on http://bat6230glnxa64:38653/.

Настройте издателя и подписчика, чтобы отправить и получить сообщение в сети ROS.

Соединитесь с сетью ROS.

rosinit
Initializing ROS master on http://AH-SRADFORD:11311/.
Initializing global node /matlab_global_node_10876 with NodeURI http://AH-SRADFORD:65135/

Создайте издателя с определенной темой и типом сообщения. Можно также возвратить сообщение по умолчанию, чтобы отправить использование этого издателя.

[pub,msg] = rospublisher('position','geometry_msgs/Point');

Измените сообщение прежде, чем отправить по сети.

msg.X = 1;
msg.Y = 2;
send(pub,msg);

Создайте подписчика и ожидайте последнего сообщения. Проверьте, что сообщение является тем, которое вы отправили.

sub = rossubscriber('position')
pause(1);
sub.LatestMessage
sub = 

  Subscriber with properties:

        TopicName: '/position'
      MessageType: 'geometry_msgs/Point'
    LatestMessage: [0×1 Point]
       BufferSize: 1
    NewMessageFcn: []


ans = 

  ROS Point message with properties:

    MessageType: 'geometry_msgs/Point'
              X: 1
              Y: 2
              Z: 0

  Use showdetails to show the contents of the message

Закройте сеть ROS.

rosshutdown
Shutting down global node /matlab_global_node_10876 with NodeURI http://AH-SRADFORD:65135/
Shutting down ROS master on http://AH-SRADFORD:11311/.

Выборка загрузки сообщения ROS включая сообщение облака точек ROS, ptcloud.

exampleHelperROSLoadMessages

Считайте имя поля 'x', доступное на сообщении облака точек.

x = readField(ptcloud,'x');

Входные параметры

свернуть все

Подписчик ROS, заданный как указатель на объект Subscriber. Можно создать подписчика, использующего rossubscriber.

Тайм-аут для получения сообщения, заданного как скаляр в секундах.

Выходные аргументы

свернуть все

Сообщение ROS, возвращенное как указатель на объект Message.

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