消息是ROS中交換數(shù)據(jù)的主要容器。主題和服務(wù)使用消息在節(jié)點(diǎn)之間傳輸數(shù)據(jù)。為了標(biāo)識(shí)其數(shù)據(jù)結(jié)構(gòu),每條消息都有一個(gè)消息類(lèi)型。
例如,來(lái)自激光掃描儀的傳感器數(shù)據(jù)通常以sensor_msgs/LaserScan類(lèi)型的消息發(fā)送。
每種消息類(lèi)型標(biāo)識(shí)消息中包含的數(shù)據(jù)元素。每個(gè)消息類(lèi)型名稱(chēng)都是一個(gè)包名稱(chēng)。
MATLAB支持在機(jī)器人應(yīng)用程序中經(jīng)常遇到的許多ROS消息類(lèi)型。這個(gè)例子展示了在MATLAB中創(chuàng)建、探索和填充ROS消息的一些方法。
1. 查找消息類(lèi)型
初始化ROS主節(jié)點(diǎn)和全局節(jié)點(diǎn)
rosinit
Launching ROS Core…
Done in 0.37599 seconds.
Initializing ROS master on
http://172.29.217.11:53161.
Initializing globalnode /matlab_global_node_29455 with NodeURI
http://dcc083455glnxa64:37683/
and MasterURI http://localhost:53161.
使用exampleHelperROSCreateSampleNetwork使用另外三個(gè)節(jié)點(diǎn)以及示例發(fā)布者和訂閱者填充ROS網(wǎng)絡(luò)。
網(wǎng)絡(luò)上有各種節(jié)點(diǎn),它們都有一些主題和關(guān)聯(lián)的發(fā)布者和訂閱者。
您可以通過(guò)調(diào)用rostopic list查看可用主題的完整列表。
rostopic list
/pose
/rosout
/scan
/tf
如果您想了解更多關(guān)于通過(guò)/scan主題發(fā)送的數(shù)據(jù)類(lèi)型的信息,請(qǐng)使用rostopic info命令來(lái)檢查它。
/scan的消息類(lèi)型為sensor_msgs/LaserScan
rostopic info /scan
Type: sensor_msgs/LaserScan
Publishers:
/node_3 (http://dcc083455glnxa64:36623/)
Subscribers:
/node_1 (http://dcc083455glnxa64:42445/)
/node_2 (http://dcc083455glnxa64:39859/)
命令輸出還告訴您哪些節(jié)點(diǎn)正在發(fā)布和訂閱主題。要了解有關(guān)發(fā)布者和訂閱者的信息,請(qǐng)參見(jiàn)調(diào)用和提供ROS服務(wù)。
若要了解有關(guān)主題消息類(lèi)型,rosmessage支持消息類(lèi)型的TAB補(bǔ)全。若要完成消息類(lèi)型名稱(chēng),請(qǐng)鍵入要完成的名稱(chēng)的前幾個(gè)字符,然后按Tab鍵。
scandata = rosmessage("sensor_msgs/LaserScan","DataFormat","struct")
scandata = struct with fields:
MessageType: ‘sensor_msgs/LaserScan’
Header: [1x1 struct]
AngleMin: 0
AngleMax: 0
AngleIncrement: 0
TimeIncrement: 0
ScanTime: 0
RangeMin: 0
RangeMax: 0
Ranges: [0x1 single]
Intensities: [0x1 single]
要查看主題和服務(wù)可用的所有消息類(lèi)型的完整列表,請(qǐng)使用rosmsg list
-
matlab
+關(guān)注
關(guān)注
182文章
2960瀏覽量
230050 -
機(jī)器人
+關(guān)注
關(guān)注
210文章
28132瀏覽量
205922 -
數(shù)據(jù)結(jié)構(gòu)
+關(guān)注
關(guān)注
3文章
570瀏覽量
40077
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論