receive

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

Описание

пример

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

пример

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

Примеры

свернуть все

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

rosinit
Initializing ROS master on http://bat6306glnxa64:41219/.
Initializing global node /matlab_global_node_51763 with NodeURI http://bat6306glnxa64:40473/
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

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

rosshutdown
Shutting down global node /matlab_global_node_51763 with NodeURI http://bat6306glnxa64:40473/
Shutting down ROS master on http://bat6306glnxa64:41219/.

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

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

rosinit
Initializing ROS master on http://bat6306glnxa64:44253/.
Initializing global node /matlab_global_node_62417 with NodeURI http://bat6306glnxa64:45489/

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

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

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

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

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

sub = rossubscriber('position')
sub = 
  Subscriber with properties:

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

pause(1);
sub.LatestMessage
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_62417 with NodeURI http://bat6306glnxa64:45489/
Shutting down ROS master on http://bat6306glnxa64:44253/.

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

exampleHelperROSLoadMessages

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

x = readField(ptcloud,'x');

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

свернуть все

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

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

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

свернуть все

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

Введенный в R2019b