消息結(jié)構(gòu)獲取
ROS消息是對(duì)象,消息數(shù)據(jù)存儲(chǔ)在屬性中。MATLAB具有方便的方法來(lái)查找和探索消息的內(nèi)容。
如果訂閱了/pose主題,則可以接收和檢查發(fā)送的消息。
posesub = rossubscriber("/pose","DataFormat","struct")
posesub =
Subscriber with properties:
TopicName: ‘/pose’
LatestMessage: []
MessageType: ‘geometry_msgs/Twist’
BufferSize: 1
NewMessageFcn: []
DataFormat: ‘struct’
使用receive從訂閱者獲取數(shù)據(jù)。一旦接收到新消息,函數(shù)將返回該消息并將其存儲(chǔ)在posedata變量中(第二個(gè)參數(shù)是以秒為單位的超時(shí))。
posedata = receive(posesub,10)
posedata = struct with fields:
MessageType: ‘geometry_msgs/Twist’
Linear: [1x1 struct]
Angular: [1x1 struct]
該消息的類型為geometry_msgs/Twist。消息中還有另外兩個(gè)字段:Linear和Angular。
您可以通過(guò)直接訪問(wèn)這些消息字段來(lái)查看它們的值:
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
這些消息字段的每個(gè)值實(shí)際上都是一條消息。它們的消息類型是geometry_msgs/Vector3。
geometry_msgs/Twist是由兩條
geometry_msgs/Vector3消息組成的復(fù)合消息。
xpos = posedata.Linear.X
xpos = 0.0457
如果希望快速總結(jié)消息中包含的所有數(shù)據(jù),請(qǐng)調(diào)用rosShowDetails函數(shù)。rosShowDetails適用于任何類型的消息,并遞歸地顯示所有消息數(shù)據(jù)字段。
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在調(diào)試期間和希望快速查看消息內(nèi)容時(shí)提供幫助。
-
matlab
+關(guān)注
關(guān)注
185文章
2977瀏覽量
230581 -
變量
+關(guān)注
關(guān)注
0文章
613瀏覽量
28395 -
ROS
+關(guān)注
關(guān)注
1文章
278瀏覽量
17022
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論