Опубликовать сообщение ROS в разделе
Настройка издателя и подписчика для отправки и получения сообщения по сети ROS.
Подключение к сети ROS.
rosinit
Launching ROS Core... Done in 0.65885 seconds. Initializing ROS master on http://192.168.0.10:49381. Initializing global node /matlab_global_node_87335 with NodeURI http://bat6315glnxa64:36855/
Создайте издателя с определенной темой и типом сообщения. Можно также вернуть сообщение по умолчанию для отправки с помощью этого издателя.
[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' LatestMessage: [0x1 Point] MessageType: 'geometry_msgs/Point' BufferSize: 1 NewMessageFcn: [] DataFormat: 'object'
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_87335 with NodeURI http://bat6315glnxa64:36855/ Shutting down ROS master on http://192.168.0.10:49381.
pub
- издатель ROSPublisher
указатель на объектиздатель ROS, заданный как Publisher
указатель на объект. Вы можете создать объект, используя rospublisher
.
msg
- сообщение ROSMessage
указатель на объект | структураROS-сообщение, заданное как Message
указатель на объект или структура. Вы можете создать объект используя rosmessage
.
Примечание
В следующем релизе ROS Toolbox будет использовать структуры сообщений вместо объектов для сообщений ROS.
Чтобы использовать структуры сообщений, установите "DataFormat"
аргумент имя-значение в "struct"
. Для получения дополнительной информации см. раздел Структуры сообщений ROS.
Изменение поведения в будущем релизе
Теперь можно создавать сообщения как структуры с полями, соответствующими свойствам объекта сообщения. Использование структур обычно повышает эффективность создания, обновления и использования сообщений ROS, но поля сообщений больше не проверяются при установке. Типы сообщений и соответствующие значения полей из структур проверяются при отправке по сети.
Чтобы использовать сообщения ROS в качестве структур, используйте "DataFormat"
аргумент имя-значение при создании издателей, подписчиков или других объектов ROS. Любые сообщения, сгенерированные из этих объектов, будут использовать структуры.
pub = rospublisher("/scan","sensor_msgs/LaserScan","DataFormat","struct") msg = rosmessage(pub)
Можно также создавать сообщения как структуры непосредственно, но убедитесь, что задали формат данных следующим "struct"
для издателя, подписчика или других объектов ROS. Объекты ROS по-прежнему используют объекты сообщений по умолчанию.
msg = rosmessage("/scan","sensor_msgs/LaserScan","DataFormat","struct") ... pub = rospublisher("/scan","sensor_msgs/LaserScan","DataFormat","struct")
В следующем релизе сообщения ROS по умолчанию будут использовать структуры, а объекты сообщений ROS будут удалены.
Для получения дополнительной информации смотрите Улучшение эффективности ROS с использованием структур сообщений.
Указания и ограничения по применению:
Поддерживается только для struct
сообщений.
receive
| rosmessage
| rospublisher
| rossubscriber
| rostopic
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.