消息是ROS中交換數據的主要容器。主題和服務使用消息在節點之間傳輸數據。為了標識其數據結構,每條消息都有一個消息類型。
例如,來自激光掃描儀的傳感器數據通常以sensor_msgs/LaserScan類型的消息發送。
每種消息類型標識消息中包含的數據元素。每個消息類型名稱都是一個包名稱。
MATLAB支持在機器人應用程序中經常遇到的許多ROS消息類型。這個例子展示了在MATLAB中創建、探索和填充ROS消息的一些方法。
1. 查找消息類型
初始化ROS主節點和全局節點
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使用另外三個節點以及示例發布者和訂閱者填充ROS網絡。
網絡上有各種節點,它們都有一些主題和關聯的發布者和訂閱者。
您可以通過調用rostopic list查看可用主題的完整列表。
rostopic list
/pose
/rosout
/scan
/tf
如果您想了解更多關于通過/scan主題發送的數據類型的信息,請使用rostopic info命令來檢查它。
/scan的消息類型為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/)
命令輸出還告訴您哪些節點正在發布和訂閱主題。要了解有關發布者和訂閱者的信息,請參見調用和提供ROS服務。
若要了解有關主題消息類型,rosmessage支持消息類型的TAB補全。若要完成消息類型名稱,請鍵入要完成的名稱的前幾個字符,然后按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]
要查看主題和服務可用的所有消息類型的完整列表,請使用rosmsg list
-
matlab
+關注
關注
182文章
2963瀏覽量
230170 -
機器人
+關注
關注
210文章
28205瀏覽量
206535 -
數據結構
+關注
關注
3文章
573瀏覽量
40093
發布評論請先 登錄
相關推薦
評論