2017-08-20 10 views
1

gnuplotを使用して2つの異なるrosbagファイルからデータをプロットしようとしています。私は実行する必要があるかなりのファイルがあるので、私はこれを自動化しようとしています。Gnuplotシェルスクリプト複数のファイルからのROSデータ

各ファイルの最初の列の最初の要素を取り、列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 

と第2の入力ファイルは、次のとおりです:データセットの例がある

%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 

私が経験したことがありません複数の実行が異なる結果を生成するコード。誰もがこの混乱を修正する正しい方向に私を指すことができますか? 出力は以下の3つのプロットです。いつでもスクリプトからエラーメッセージは出力されません。

まず出力:

enter image description here

第三(と希望)出力:

enter image description here

+0

どのような出力が得られますか? – tima

+0

だから私はこれに新しいです、私はスクリーンショットを投稿することができますかわからない。 "plot" bag1 "linespointsを使って2"、次に "plot" bag2 "の出力を与える(\ $ 1):3 linespoints"を出力します。 ((\ $ 1-first)/ 10 ** 9):2、 "bag2"((\ $ 1秒)/ 10 ** 9):3 " – airborne

+0

を使って、スクリーンショットをあなたの投稿に埋め込むことができます。コードブロックの出力を使ってポストを更新することができます – tima

答えて

0

あなたは時々、異なる結果を得ている理由を私は知りません。私はいつも最後のplotコマンドの出力を得ます。しかし、最初の2つのplotコマンドは、2つのファイルそれぞれの最初の列の最小値を取得するためだけに使用されているようです。プロットを生成しないより良い方法は、

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 
+0

私はそのコードを試しても動作しないようです。最後にシェルスクリプトとして実行されると、うまく動作するので、いつもシェルを再起動できます。もう1つのオプションは、コマンドラインでうまく動作することです。 – airborne

関連する問題