rosbag数据画图MATLAB

本文介绍使用matlab对rosbag数据进行画图

1rosbag用法

首先启动任何一个ros程序,比如小乌龟,进行控制

一般而言,只需要简单的一个命令就可以了

cd 桌面
rosbag record -a

 参考链接:rosbag使用方法汇总

记录完成以后,把bag文件拷到win系统下,打开matlab

2matlab数据处理

clear;
close all;
bag = rosbag('wugui.bag');

执行这三步以后,在bag这个数据下就可以看到所有的话题

rosbag数据画图MATLAB_第1张图片

rosbag数据画图MATLAB_第2张图片

接着获取具体数据的值

sel = select(bag, 'Topic', '/turtle1/cmd_vel');
msgStructs = readMessages(sel,'DataFormat','struct');

 读取数据以后,保存在了msgStructs这个数据里,打开这个数据,就可以看到里面的结构体类型

rosbag数据画图MATLAB_第3张图片

 rosbag数据画图MATLAB_第4张图片

以获取速度话题为例,比如X方向的线速度就可以知道Linear->X

然后进行单个数据获取

vx1 = cellfun(@(m) double(m.Linear.X),msgStructs);
vy1 = cellfun(@(m) double(m.Linear.Y),msgStructs);

 然后vx1和vy1就是数组,就可以用来画图了

完整代码

clear;
close all;
bag = rosbag('wugui.bag');


sel = select(bag, 'Topic', '/turtle1/cmd_vel');
msgStructs = readMessages(sel,'DataFormat','struct');
vx1 = cellfun(@(m) double(m.Linear.X),msgStructs);
vy1 = cellfun(@(m) double(m.Linear.Y),msgStructs);
sel = select(bag, 'Topic', '/turtle1/pose');
msgStructs = readMessages(sel,'DataFormat','struct');
d01x = cellfun(@(m) double(m.X),msgStructs);
d01y = cellfun(@(m) double(m.Y),msgStructs);



figure(1)
    hold on;
    plot(d01x,d01y,'Color','b','LineStyle','-','LineWidth',1);
    grid on;

你可能感兴趣的:(ROS,matlab)