消息结构获取
ROS消息是对象,消息数据存储在属性中。MATLAB具有方便的方法来查找和探索消息的内容。
如果订阅了/pose主题,则可以接收和检查发送的消息。
posesub = rossubscriber("/pose","DataFormat","struct")
posesub =
Subscriber with properties:
TopicName: ‘/pose’
LatestMessage: []
MessageType: ‘geometry_msgs/Twist’
BufferSize: 1
NewMessageFcn: []
DataFormat: ‘struct’
使用receive从订阅者获取数据。一旦接收到新消息,函数将返回该消息并将其存储在posedata变量中(第二个参数是以秒为单位的超时)。
posedata = receive(posesub,10)
posedata = struct with fields:
MessageType: ‘geometry_msgs/Twist’
Linear: [1x1 struct]
Angular: [1x1 struct]
该消息的类型为geometry_msgs/Twist。消息中还有另外两个字段:Linear和Angular。
您可以通过直接访问这些消息字段来查看它们的值:
posedata.Linear
ans = struct with fields:
MessageType: ‘geometry_msgs/Vector3’
X: 0.0457
Y: -0.0015
Z: 0.0300
posedata.Angular
ans = struct with fields:
MessageType: ‘geometry_msgs/Vector3’
X: -0.0358
Y: -0.0078
Z: 0.0416
这些消息字段的每个值实际上都是一条消息。它们的消息类型是geometry_msgs/Vector3。
geometry_msgs/Twist是由两条
geometry_msgs/Vector3消息组成的复合消息。
xpos = posedata.Linear.X
xpos = 0.0457
如果希望快速总结消息中包含的所有数据,请调用rosShowDetails函数。rosShowDetails适用于任何类型的消息,并递归地显示所有消息数据字段。
rosShowDetails(posedata)
ans =
‘
MessageType : geometry_msgs/Twist
Linear
MessageType : geometry_msgs/Vector3
X : 0.04571669482429456
Y : -0.001462435127715878
Z : 0.03002804688888001
Angular
MessageType : geometry_msgs/Vector3
X : -0.03581136613727846
Y : -0.007823871737372501
Z : 0.04157355251890671’
rosShowDetails在调试期间和希望快速查看消息内容时提供帮助。
-
matlab
+关注
关注
185文章
2974浏览量
230414 -
变量
+关注
关注
0文章
613浏览量
28361 -
ROS
+关注
关注
1文章
278浏览量
17004
发布评论请先 登录
相关推荐
评论