消息結構獲取
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
+關注
關注
182文章
2963瀏覽量
230195 -
變量
+關注
關注
0文章
613瀏覽量
28334 -
ROS
+關注
關注
1文章
276瀏覽量
16967
發布評論請先 登錄
相關推薦
評論