您的位置:首页 > 编程语言 > MATLAB

利用MATLAB对Rosbag中数据的进行提取(特别是当bag中存在图片信息的时候)

2017-12-27 10:42 1671 查看
近期在接触Ros的时候遇到了一些问题,如何将rosbag中的信息提取出来进行进一步处理呢?

如三维点位置信息,视频信息(如果有的话)等等。

我采用的是MATLAB

读取bag信息

filepath=fullfile('F:','Leon Files','MH_01_easy.bag')
bag=rosbag(filepath)

对matlab中读取文件不熟悉的朋友可以参考我之前看到的一片不错的博文:
http://blog.sina.com.cn/s/blog_632947d60102uxo4.html
@亮亮的博客

点击工作区的bag,得到如下信息(针对我所使用的bag文件)



点击AvailableMessages可以看到bag中存在的信息,如下所示



我要提取的是信息4,空间几何位置信息。所以我们要对信息进行选择。

geometry_message=select(bag,'MessageType','geometry_msgs/PointStamped')完成后读取geometry_message中的信息
data=readMessages(geometry_message)至此,我已将bag中的几何信息读取到data中了,如下图所示。发现共有3099条信息。







这里的point信息里面有x,y,z信息,下图显示的是X的信息。注意下图中4.7823上面的一行字:data{1,1}.Point.X,表示的是X的读取方式。



接下来我将建立一个三维数组,将所有数据读入position数组。

position=zeros(3099,3);
for i=1:3099
position(i,1)=data{i,1}.Point.X;
position(i,2)=data{i,1}.Point.Y;
position(i,3)=data{i,1}.Point.Z;
end显示
for i=1:3099
plot3(position(i,1),position(i,2),position(i,3),'r.','markersize',5);
hold on
end结果如下图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  slam rosbag
相关文章推荐