• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Matlab读取ROSbag文件指定消息数据

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

近期在接触Ros的时候遇到了一些问题,如何将rosbag中的信息提取出来进行进一步处理呢?

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

我采用的是MATLAB

读取bag信息

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

对matlab中读取文件不熟悉的朋友可以参考我之前看到的一片不错的博文:

http://blog.sina.com.cn/s/blog_632947d60102uxo4.html

@亮亮的博客

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

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

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

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

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

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

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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
delphi 登陆窗口的问题 [问题点数:30分,结帖人tianhuo_soft]发布时间:2022-07-18
下一篇:
delphi提取ppt文件里的文本函数发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap