图像信息
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
+关注
关注
182文章
2963浏览量
230211 -
机器人
+关注
关注
210文章
28239浏览量
206644 -
ROS
+关注
关注
1文章
276浏览量
16969
发布评论请先 登录
相关推荐
评论