主要内容

罗丝订户

订阅主题消息

描述

使用罗丝订户创建ROS订阅者以接收ROS网络上的消息。发送消息,使用Rospublisher.。要等待新的ROS消息,请使用收到与您创建的订阅服务器一起运行。

这个订户对象创建的罗丝订户函数表示ROS网络上的订阅者。这个订户对象订阅可用主题或它创建的主题。此主题具有关联的消息类型。发布者可以通过订户对象接收。

笔记

在未来的释放中,ROS工具箱将使用消息结构而不是ROS消息的对象。

现在使用消息结构,设置“dataformat”名称 - 值参数“结构”.有关更多信息,请参阅ROS消息结构.

你可以创建一个订户通过使用的对象罗丝订户功能,或通过呼叫ros.订户:

  • 罗丝订户仅适用于使用的全局节点松香.它不需要节点对象句柄作为参数。

  • ros.订户适用于使用的其他节点ros.node..它需要一个节点对象句柄作为第一个参数。

创建

描述

实例

= Rossubscriber(主题名称)订阅具有给定主题的主题主题名称。该主题必须已存在于ROS主主题列表中,且具有已建立的消息类型。当ROS节点发布关于该主题的消息时,MATLAB®通过此订阅者接收这些消息。

= Rossubscriber(主题名称,msgtype.)订阅具有指定名称的主题,主题名称和类型,消息类型.如果ROS Master上的主题列表不包含具有指定名称和类型的主题,则会添加到主题列表中。使用此语法以避免在发布者在ROS Master上的主题列表中向主题订阅主题时错误。

实例

= Rossubscriber(主题名称,打回来)指定回调函数,打回来,当订户对象句柄接收到主题消息时运行。使用此语法避免阻塞接收功能。这个打回来功能可以是单个函数句柄或单元阵列。单元格阵列的第一个元素必须是函数句柄或包含函数名称的字符串。单元阵列的剩余元素可以是传递给回调函数的任意用户数据。

= Rossubscriber(主题名称,msgtype.,打回来)指定回调函数和订阅具有指定名称的主题,主题名称和类型,消息类型.

= Rossubscriber(___,名称,价值)提供一个或多个指定的其他选项名称、值使用以前语法中的任何参数对参数。姓名属性名称和价值是相应的价值。

= Rossubscriber(___,“dataformat”,“struct”)使用消息结构而不是对象。有关更多信息,请参阅ROS消息结构

sub = ros.subscriber(节点,主题名称)订阅名称的主题,主题名称.这个节点是个ros.node.该发布商附加到的对象句柄。

实例

sub = ros.subscriber(节点,主题名称,msgtype.)指定消息类型,消息类型,如果存在具有相同名称且具有不同消息类型的主题,则MATLAB将使用给定的消息类型创建一个新主题。

sub = ros.subscriber(节点,主题名称,打回来)指定回调函数和可选数据,以在订阅者对象接收到主题消息时运行。看newmessagefcn.有关回调函数的更多信息。

sub = ros.subscriber(节点,主题名称,类型,打回来)指定订阅服务器的主题名称、消息类型和回调函数。

sub = ros.subscriber(___,“缓冲区大小”,价值)在中指定队列大小缓冲区大小对于传入的消息。您可以将以前的输入与此语法结合使用。

= ros.subscriber(___,“dataformat”,“struct”)使用消息结构而不是对象。有关更多信息,请参阅ROS消息结构

特性

展开全部

此属性是只读的。

订阅主题的名称,指定为字符串标量或字符向量。如果该主题不存在,则对象使用其关联的消息类型创建主题。

例子:“/喋喋不休”

数据类型:char|细绳

此属性是只读的。

消息类型的订阅消息,指定为字符串标量或字符向量。此消息类型保持与主题相关联。

例子:“标准msgs/字符串”

数据类型:char|细绳

发送到主题的最新消息,指定为信息反对信息对象是特定于给定的消息类型. 如果订户未收到消息,则信息对象是空的。

传入消息队列的缓冲区大小,指定为逗号分隔对,由“缓冲区大小”和一个标量。如果消息到达的速度超过回调可以处理它们,则会删除传入队列已满一旦删除。

回调属性,指定为函数句柄或单元格数组。在单元格数组的第一个元素中,指定函数句柄或表示函数名的字符串。在后续元素中,指定用户数据。

订阅服务器回调函数至少需要两个输入参数。第一个论点,,SRC.,是相关的订户对象。第二个论点,味精,是收到的消息对象。回调的函数标题是:

作用subcallback(src,msg)

指定newmessagefcn.物业名称:

sub.NewMessageFcn=@subCallback;

设置回调时,通过将回调函数和参数都包含为单元格数组的元素,向回调函数传递其他参数。回调函数的函数头为:

作用subcallback(src,msg,userdata)

指定newmessagefcn.物业名称:

sub.NewMessageFcn={@subCallback,userData};

消息格式,指定为“目的”或者“结构”。必须使用名称值输入在创建时设置此属性。有关详细信息,请参阅ROS消息结构.

目标函数

收到 等待新的ROS消息
罗斯梅瑟 创建ROS消息

例子

全部崩溃

连接到ROS网络。设置样本ROS网络。这个“/扫描”该主题正在网络上发布。

松香
正在启动ROS核心…在2.3104秒内完成。正在启动ROS主控http://192.168.0.10:53277. 使用NodeURI初始化全局节点/matlab_全局节点_20625http://dcc282524glnxa64:46327/
examplehelperroscreatesamplenetwork

为此创建一个订阅者“/扫描”主题使用消息结构。等待订阅者注册主机。

sub = Rossubscriber(“/扫描”,'datomformat','struct');暂停(1);

从订阅者接收数据作为ROS消息结构。指定10秒的超时。

[msg2,status,statustext] =接收(sub,10)
msg2=带字段的结构:消息类型:“传感器/激光扫描”标题:[1x1结构]角度最小值:-0.5467角度最大值:0.5467角度增量:0.0017时间增量:0扫描时间:0.0330范围最小值:0.4500范围最大值:10个范围:[640x1单个]强度:[]
地位=必然的1.
statustext='成功'

关闭示例网络使用的计时器。

examplehelperrosshutdownsamplenetwork

关闭ROS网络。

罗斯赫顿
使用nodeuri关闭全局节点/ matlab_global_node_20625 http:// dcc282524glnxa64:46327 /关闭ros master http://192.168.0.10:53277。

您可以在订阅服务器接收消息时触发回调函数。请在创建回调函数或使用newmessagefcn.所有物

连接到ROS网络。

松香
启动ROS核心......在0.90795秒内完成。初始化ROS Master http://192.168.0.10:57038。使用nodeuri初始化全局节点/ matlab_global_node_78798 http:// dcc282524glnxa64:45071 /

设置发布者将消息发布到“/喋喋不休”主题。此主题用于触发订户回调。请指定数据消息的属性。请等待1秒钟,以允许发布服务器向网络注册。

发布者(“/喋喋不休”,'std_msgs / string','datomformat','struct');msg=rosmessage(发布);msg.Data='你好,世界';暂停(1)

使用指定的回调函数设置订阅服务器examplehelperroschattercallback.功能显示数据在收到的消息中。

sub = Rossubscriber(“/喋喋不休”,@ examplehelperroschattercallback,'datomformat','struct');暂停(1)

通过发布者发送邮件。订阅者应执行回调以显示新消息。等待收到的消息。

发送(PUB,MSG);暂停(1)
ans ='hello world'

关闭ROS网络。

罗斯赫顿
使用nodeuri关闭全局节点/ matlab_global_node_78798 http:// dcc282524glnxa64:45071 /关闭ros master http://192.168.0.10:57038。

使用ROS.订户对象通过ROS网络接收消息。

启动ROS核心和节点。

master = ros.core;
在1.065秒内启动ROS核心......。
node = ros.node(“/测试”);

创建发布者和订阅者以通过ROS网络发送和接收消息。使用ROS消息作为结构。

pub = ros.publisher(节点,“/喋喋不休”,'std_msgs / string','datomformat','struct');sub = ros.subscriber(节点,“/喋喋不休”,'std_msgs / string','datomformat','struct');

通过网络发送邮件。

msg=rosmessage(发布);msg.Data='你好,世界';发送(PUB,MSG)

使用使用的消息数据最新消息财产的财产订户目的。

暂停(1)sub.latestmessage
ans=带字段的结构:MessageType:'std_msgs / string'数据:'hello world'

清除发布者,订阅者和ROS节点。关闭ROS大师。

清楚的('酒吧',“sub”,'节点') 清除('掌握')

兼容性考虑因素

展开全部

未来发布的行为变化

扩展能力

在R2019b中引入