Публикация сообщения 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 - издатель АФКPublisher дескриптор объектаИздатель ROS, указанный как Publisher дескриптор объекта. Объект можно создать с помощью rospublisher.
msg - сообщение АФКMessage дескриптор объекта | структураСообщение ROS, указанное как Message дескриптор объекта или структура. Создать объект можно с помощью rosmessage.
Примечание
В следующем выпуске Панель инструментов ROS будет использовать структуры сообщений вместо объектов для сообщений 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.