receive

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

Описание

пример

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

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

пример

[msg,status,statustext] = receive(___) возвращает status указание, было ли сообщение получено успешно, и statustext это получает дополнительную информацию о status, использование любого из аргументов от предыдущих синтаксисов. Если состояние ошибки происходит, такие как никакое сообщение, полученное в заданном тайм-ауте, status будет false, и эта функция не отобразит ошибку.

Примеры

свернуть все

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

rosinit
Launching ROS Core...
Done in 0.82918 seconds.
Initializing ROS master on http://192.168.0.10:50686.
Initializing global node /matlab_global_node_20772 with NodeURI http://bat6312glnxa64:36949/
exampleHelperROSCreateSampleNetwork

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

sub = rossubscriber('/scan','DataFormat','struct');
pause(1);

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

[msg2,status,statustext] = receive(sub,10)
msg2 = struct with fields:
       MessageType: 'sensor_msgs/LaserScan'
            Header: [1x1 struct]
          AngleMin: -0.5467
          AngleMax: 0.5467
    AngleIncrement: 0.0017
     TimeIncrement: 0
          ScanTime: 0.0330
          RangeMin: 0.4500
          RangeMax: 10
            Ranges: [640x1 single]
       Intensities: []

status = logical
   1

statustext = 
'success'

Завершите работу таймеров, используемых демонстрационной сетью.

exampleHelperROSShutDownSampleNetwork

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

rosshutdown
Shutting down global node /matlab_global_node_20772 with NodeURI http://bat6312glnxa64:36949/
Shutting down ROS master on http://192.168.0.10:50686.

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

свернуть все

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

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

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

свернуть все

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

Примечание

В будущем релизе ROS Toolbox будет использовать структуры сообщения вместо объектов для сообщений ROS.

Чтобы использовать структуры сообщения теперь, установите "DataFormat" аргумент значения имени к "struct". Для получения дополнительной информации смотрите, что ROS передает Структуры.

Состояние приема сообщения, возвращенного как logical скаляр. Если никакое сообщение не будет получено, состоянием будет false.

Примечание

Используйте status выходной аргумент, когда вы используете, получает в функции точки входа для генерации кода. Это избежит, чтобы ошибки периода выполнения вывели состояние вместо этого, которое может реагироваться на в коде вызова.

Текст состояния сопоставлен с приемом сообщения, возвращенным как одно из следующего:

  • 'success' — Сообщение было успешно получено.

  • 'timeout' — Сообщение не было получено в заданном тайм-ауте.

  • 'unknown' — Сообщение не было получено из-за неизвестных ошибок.

Советы

Для генерации кода:

  • Используйте status выходной аргумент, когда вы вызываете receive в функции точки входа. Это избежит ошибок периода выполнения и вместо этого, выводит состояние приема сообщения, который может реагироваться на в коде вызова.

Вопросы совместимости

развернуть все

Изменение поведения в будущем релизе

Расширенные возможности

Введенный в R2019b