Gnuplot shell脚本来自多个文件的ROS数据

时间:2017-08-20 21:41:10

标签: gnuplot

我试图使用gnuplot绘制来自两个不同rosbag文件的数据。我试图自动化这个,因为我有很多需要运行的文件。

我需要获取每个文件的第一列的第一个元素,并偏移列w.r.t的数据。那(然后除以10 ^ 9)以秒为单位得到时间。我的问题是我的脚本在多次运行时会返回不同的内容。它将返回第一个,第二个或(偶尔)第三个绘图命令,这是我感兴趣的。

我拼凑的代码如下:

#!/bin/bash
gnuplot -persist <<-EOFMarker
    set autoscale
    set datafile separator ","
    set key autotitle columnhead
    plot "bag1" using (\$1):2 with linespoints
    first=GPVAL_DATA_X_MIN
    plot "bag2" using (\$1):3 with linespoints
    second=GPVAL_DATA_X_MIN
    plot "bag1" using ((\$1-first)/10**9):2, "bag2" using ((\$1-second)/10**9):3
EOFMarker

数据集的一个示例是:

%time,field.1,field.2,field.3
1.50317427276591E+018,23,64,64
1.50317427281556E+018,232,74,64
1.50317427285689E+018,216,76,64
1.50317427287325E+018,183,85,64
1.50317427292519E+018,165,89,64
1.50317427298662E+018,129,96,64
1.50317427300161E+018,115,101,64
1.50317427309547E+018,102,112,64

第二个输入文件是:

%time,field.1,field.2,field.3,field.4
1.50317425501603E+018,55,45,229,98755
1.50317425501843E+018,55,45,229,98752
1.5031742550235E+018,51,43,229,98758
1.50317425502979E+018,51,43,229,98761
1.50317425504176E+018,55,41,231,98764
1.50317425504579E+018,55,41,231,98770
1.50317425504728E+018,50,42,232,98773
1.50317425504855E+018,50,42,232,98773
1.50317425505353E+018,55,41,229,98770
1.50317425506442E+018,55,41,229,98770

我从来没有经历过多次运行产生不同结果的代码。谁能指出我正确的方向来解决这个烂摊子? 输出是下面的三个图。任何时候都不会从脚本输出错误消息。

首先输出:

enter image description here

第三(和期望)输出:

enter image description here

1 个答案:

答案 0 :(得分:0)

我不知道你为什么有时会得到不同的结果;我总是得到最后plot命令的输出。但是,您似乎只使用前两个plot命令来获取两个文件中每个文件的第一列的最小值。没有生成任何图的更好方法是

set datafile separator ","
set key autotitle columnhead
stats "bag1" using 1
first=STATS_min
stats "bag2" using 1
second=STATS_min
plot "bag1" using (($1-first)/10**9):2, "bag2" using (($1-second)/10**9):3