gnuplotでオドメトリ表示 - TK's HP

TK's HP ホーム » スポンサー広告 » プログラム » gnuplotでオドメトリ表示

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

gnuplotでオドメトリ表示

gnuplotを使ってオドメトリを方向付きで表示したいときの方法です。
gnuplotのvector表示を使用して、角度を表現します。

オドメトリの描画に向きがあると分かりやすいか?
と言われると、細かくなりすぎて分かりづらい場合も多いですが、時々向きが欲しくなるので、載せておきます。

直線でのオドメトリ表示


gnuplotを使ってオドメトリしたいと考えると、
最も簡単なのは、( x, y )での2次元プロットです。

set size ratio -1
plot './pos_log.dat' u 1:2 w lp t 'odometry'

gnu-odm-lp.png


ベクトルでのオドメトリ表示


実際のロボットの情報としては、( x, y, theta )の3自由度の情報をもっているので、thetaを表現できません。

向きを表示する方法として、gnuplotには vector表示が用意されていますが、必要な情報が ( x, y )と、その位置からの微少移動量( dx, dy )が必要です。
そのためオドメトリをvector表示するにはthetaの情報からdx,dyの情報に変換してやる必要があります。

オドメトリのログを出力するときに、thetaからdx,dyを計算してやれば良いのですが、gnuplotのためだけにそのログを出力するのは勿体ないです。

そこで、gnuplotで描画するさいに、thetaからdx,dyを計算することで解決します。

方法は、以下のコマンドで行います。

set size ratio -1
plot './pos_log.dat' u 1:2:(cos($3)):(sin($3)) w vec t 'odometry'

gnu-odm-vec.png
括弧で囲むことで、その内部で数式を使用できることを利用します。( x,y )にはファイルの1番目と2番目の要素をそのまま、( dx,dy )にはファイルの3番目の値をそれぞれcos,sinで計算して表示します。


その他オドメトリ表示のTips


オドメトリ表示のスクリプト例

set size ratio -1
set xtics 5
set ytics 5
set xlabel "x[m]"
set ylabel "y[m]"
set grid

# every は 何行ごとに出力するか
# dは方向ベクトルの大きさ
d=2
plot './pos_log.dat' every 2 u 2:3:(d*cos($4)):(d*sin($4)) w vec t 'odometry'

gnu-odm-vec2.png

データ点数が多すぎるときは、'every'で出力する点数を減らします。

また、出力する距離の範囲によっては、ベクトルが長すぎたり短すぎたりするので、変数を定義して距離を可変にできるようにします。
関連記事
記事に間違いなどがあればすぐに訂正いたしますので、コメントしてください。
コメント
非公開コメント

トラックバック

http://tclip.blog.fc2.com/tb.php/124-aba049ab

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。