Matlab 读取 ROS bag 文件指定消息数据
近期在接触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
结果如下图所示:
Matlab 读取 ROS bag 文件指定消息数据的更多相关文章
- 从ROS bag文件中提取图像
从ROS bag文件中提取图像 创建launch文件,如下: export.launch <launch> <node pkg="rosbag" type=&qu ...
- Matlab读取txt中用空格分隔的数据文件到矩阵
转载...哪儿 忘记了 由于要做的项目中涉及到数据处理,初涉及到matlab.今天需要把一组只用空格分开的数据读取到一个三维矩阵,然后对这个矩阵进行处理. 思路是:首先用importdata读入txt ...
- 用Matlab的.m脚本文件处理实验室数据
找到相应的文件 findfile %1 打开文件夹 %2 拷贝第一个文件 %3 关闭当前文件,再次拷贝新的文件,直到文件末尾结束 clc clear DST_PATH_t = 'C:\Users\Ma ...
- Linux c读取任意大小文件的所有数据
代码如下,执行完之后被分配的动态内存的指针会保存到result中.由于是动态分配内存,读取内容不再使用之后注意用free 释放掉,如不明白,请多搜索以下动态内存分配的资料. #include < ...
- node 读取超大Excel 文件,提取数据
之前是用 node-xlsx 来处理excel文件,主要是读取数据或者根据数据生成excel文件.不过,node-xlsx 似乎无法处理超大的excel(100MB以上),例如: var xlsx = ...
- 在服务端中,读取properties资源文件中的数据
1.获取到资源的路径 2.读取数据 //properties文件对象 Properties properties = new Properties(); //通过HttpServletRequest ...
- matlab读取txt文档中的数据
ps:文件中只有数字! format long fp=fopen('文件路径','打开方式(r)') [num,count]=fscnaf(fp,'%f')
- 利用ROS工具从bag文件中提取图片
bag文件是ROS常用的数据存储格式,因此要从bag文件中提取数据就需要了解一点ROS的背景知识. 1. 什么是ROS及其优势 ROS全称Robot Operating System,是BSD-lic ...
- C#选择多个文件并读取多个文件数据
原文:C#选择多个文件并读取多个文件数据 版权声明:本文为博主原创文章,转载请附上链接地址. https://blog.csdn.net/ld15102891672/article/details/8 ...
随机推荐
- request.getSession()几种获取情况之间的差异
一.三种情况如下 HttpSession session = request.getSession(); HttpSession session = request.getSession(true); ...
- 运维监控-基于yum的方式部署Zabbix Server 4.0 版本
运维监控-基于yum的方式部署Zabbix Server 4.0 版本 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.如何选择zabbix版本 1>.打开zabbix官方 ...
- npm 更新版本
需要升级npm版本大于某个版本.百度搜索如何更新npm至最新版本.90%的解决方案是让我们再用npm全局安装一遍npm,就可以更新至最新版本了.即: npm install -g npm 但是,我尝试 ...
- Matlab2017A破解版安装详细图文教程(附破解补丁) 64位
摘录网址:http://www.jb51.net/softjc/543170.html MATLAB2017a安装教程: 1.下载并解压本站提供的MATLAB2017a破解版安装包,载入右键解压或者使 ...
- C++回顾day01---<命名空间>
一:namespace是指标识符的各种控件范围(类java中package) C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespace 二:iostr ...
- C语言复习---输出魔方阵
一:奇魔方阵 算法: 1.第一个元素放在第一行中间一列 .下一个元素存放在当前元素的上一行.下一列. .如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下 ...
- python 字符串 切片
####################概念######################''' int 整数 str 字符串 一般不存放大量的数据 bool 布尔值,用来判断. True,False ...
- golang channle close() x,ok := <- c
close为内置函数 close内置函数关闭一个通道channle,其效果为:在最后的值从已关闭的信道中被接收后,任何对其的接收操作都会无阻塞的成功.对于已关闭的信道使用v,ok := <- ...
- 【Unity3d游戏开发】Unity中的Time.timeScale
马三最近在做一款游戏的时候涉及到了“加速”和“暂停”这两个功能,我第一时间就想到了应该用 Time.timeScale.当暂停的时候,设置timeScale = 0,当需要加速的时候,将 timeSc ...
- 066、Weave如何与外网通信?(2019-04-09 周二)
参考https://www.cnblogs.com/CloudMan6/p/7500550.html Weave是一个私有的vxlan网络,默认与外部网络隔离.外部网络如何才能访问到weave中的 ...