圖像信息
MATLAB提供了對圖像消息的支持,其消息類型始終為sensor_msgs/Image。
使用rosmessage創建一個空圖像消息,以查看圖像消息的標準ROS格式。
emptyimg = rosmessage("sensor_msgs/Image",DataFormat="struct")
emptyimg = struct with fields:
MessageType: ‘sensor_msgs/Image’
Header: [1x1 struct]
Height: 0
Width: 0
Encoding: ‘’
IsBigendian: 0
Step: 0
Data: [0x1 uint8]
為了方便起見,從specialROSMessageData.mat加載一個完全填充并存儲在img變量中的圖像消息。
在工作空間中檢查圖像消息變量img。圖像的大小存儲在Width和Height屬性中。ROS使用data屬性中的向量發送實際圖像數據。
load("specialROSMessageData.mat")
img
img = struct with fields:
MessageType: ‘sensor_msgs/Image’
Header: [1x1 struct]
Height: 480
Width: 640
Encoding: ‘rgb8’
IsBigendian: 0
Step: 1920
Data: [921600x1 uint8]
Data屬性存儲無法在MATLAB中直接用于處理和可視化的原始圖像數據。
可以使用rosReadImage函數以與MATLAB兼容的格式檢索圖像。然后通過imshow顯示
imageFormatted = rosReadImage(img);
imshow(imageFormatted)
** 點云信息**
點云可以被機器人技術中使用的各種傳感器捕獲,包括激光雷達、Kinect?和立體攝像機。
ROS中用于傳輸點云的最常見消息類型是sensor_msgs/PointCloud2, MATLAB提供了一些專門的函數來處理這些數據。具體步驟和圖像大同小異
emptyptcloud = rosmessage("sensor_msgs/PointCloud2",DataFormat="struct")
% xyz = rosReadXYZ(ptcloud)% 通過調用rosReadXYZ函數,可以將x、y、z坐標提取為N乘3矩陣。
% xyzValid = xyz(~isnan(xyz(:,1)),:)%可以安全地刪除所有NaN值
rgb = rosReadRGB(ptcloud)
rosPlot(ptcloud)
使用rosReadAllFieldNames函數檢查點云消息中存儲的所有字段。加載的點云消息包含x、y、z和rgb四個字段。
fieldNames = rosReadAllFieldNames(ptcloud)
fieldNames = 1x4 cell
{‘x’} {‘y’} {‘z’} {‘rgb’}
占用柵格地圖信息
ROS使用Octomap消息實現3D占用網格。八叉樹地圖信息通常用于機器人應用,如3D導航。
您可以通過創建適當類型的空消息來查看octomap消息的標準ROS格式。具體步驟和圖像大同小異
emptyoctomap = rosmessage("octomap_msgs/Octomap",DataFormat="struct")
occupancyMap3DObj = rosReadOccupancyMap3D(octomap);
show(occupancyMap3DObj)
-
matlab
+關注
關注
185文章
2979瀏覽量
230651 -
機器人
+關注
關注
211文章
28512瀏覽量
207513 -
ROS
+關注
關注
1文章
278瀏覽量
17035
發布評論請先 登錄
相關推薦
評論