2013年6月29日土曜日

LRFやGPS,電源等のスイッチの取り付け

 今回のハード班の活動内容は各種スイッチの取り付けです.センサからの配線が多く,実験するときに邪魔になっていたので空いているスペースを有効活用しスッキリとまとめました.
 主にLRF(上),LRF(下),GPS,24V電源,ステッピングモータのスイッチを横一列に並べて配置しました.

2013年6月28日金曜日

Gnuplotを使ったボード線図の作成

こんばんは、今回は実験レポートでボード線図を書く必要があり、描き方に苦労したので記事にします。
今回はExcelではなくGnuplotを用いてグラフを作成しEPS出力する方法です。Gnuplotの基本的な使い方はこの記事では省略します、申し訳ありません。

まず最初にGnuplotを使ってコマンドを一気に通すためにスクリプトファイル(.plt)を作成する必要があります。適当なエディタを使ってもらって構いません。ただし最終的に.pltファイルの文字コードがEUCで保存できるエディタを使ってください。
さっそくGnuplotのコマンドを書いていきます。このコマンドに関しては「なみなみメモ様
www6.atwiki.jp/naminami/pages/6.html
を参考にさせて頂きました。 情報ありがとうございます。
以下の例は一次遅れ系での例です。

set terminal postscript eps enhanced
#保存名を決める
set output "graph1.eps" 
#虚数単位jの定義
j={0.0,1.0}
#伝達関数を定義(今回は一次遅れ系)
G(s)=k/(T*s+1)
#ゲインの定義
k=0.9
#時定数の定義
T=0.5
G1(x)=G(j*x)
set angles degrees
set format x "10^%01T"
#ここで横軸を対数軸に
set logscale x
set xtics nomirror
set ytics nomirror
#ここからゲイン線図の定義
set multiplot
set xlabel 'omega [rad/s]'
set size 1.0,0.6
set origin 0.0,0.4
set ylabel 'Gain [dB]'
#横軸の範囲
set xrange [0.1: 20]
#縦軸の範囲
set yrange [-25:5]
plot  20*log10(abs(G1(x))) title "douteikekka",\
"graph1.dat" using 1:2 with points pt 7 title "jikkenti"
#.datファイルから実験値の読み込み(1:2の1は周波数データ列、2は実際に得られたゲインのデータ列)
#ここから位相線図の定義
set size 1.0,0.4
set origin 0.0,0.0
set ylabel 'Phase [deg]'
set ytics 45
#縦軸の範囲
set yrange [-120:0]
plot arg(G1(x)) title "douteikekka",\
"graph1.dat" using 1:3 with points pt 7 title "jikkenti"
#1:3の1は周波数データ列、3は実際に得られた位相のデータ列
unset multiplot
set output
set terminal windows
#Mac,Linux の場合、次のように書き換え set terminal x11

pltファイルの作成
datファイルの作成


以上のソースをテキストエディタで記述し、「graph1.plt」等で保存します。文字コードをEUCにするのを忘れないようにします。

そして実験値をプロットするためのデータ群 .datファイルはExcelなどで実験データの整理をしなければなりません。datファイルはpltファイルと同じディレクトリに保存します(文字コードは「ANSI」または「Shift JIS」推奨)。
図のようにデータをエクセルで整理し、それをコピーしてテキストエディタに貼り付けてから「graph1.dat」等に名前をつけて保存するが簡単です。

ここまでの作業が終わったら、作ったpltファイルをダブルクリックするか、Gnuplotのコマンド
load ”graph1.plt”
を実行して、〜.epsのデータが出力されれば成功です(*´艸`*)
今回例で作った図は凡例が適当ですがお許し下さい。

コマンド

完成!
















OpenCVを使った緯度経度のGoogleMap上へのプロット

この記事には訂正版があります。そちらもご覧ください。

今日は、以前作成した「緯度経度情報からGooglemap上にその地点をプロットする」プログラムについて紹介したいと思います。

1.原則
 GoogleMap はメルカトル図法によって作図された世界地図を基準に作ってあります。 
 詳しくは参考にさせていただいたサイトをご覧ください。
 ★ GoogleMapの原理
   世界は1枚の画像から : グーグルマップのしくみを探る(1) » Gammasoft Inc.
 ★メルカトル図法について
  メルカトル図法 - Wikipedia
 尚、今回はメルカトル図法上y座標に等長緯度を使用しています。

2.やり方
 A.  マップ上に表示したい地点の緯度経度を取得し、それをメルカトル座標に変換する。
 B.  Googleの「Static Maps API  V2」を使用してプロットしてほしい地点付近の地図を
    取得する。
    本当はGoogle Maps API とか使ってオンラインで地図を取得するのがスマートなん
    ですが、移動型ロボットにのせるということと、C言語でプログラムを書きたいなど
       の理由でオフライン作業で行うことにしました。
    今後、ロボットがオンラインになるかもしれないので、何かいい方法があれば
    是非教えてくださいm(_ _)m
 C.  取得した地図の中心緯度経度をメルカトル座標に変換し、メルカトル座標系で
   x,y座標それぞれ地図の中心からの距離を測る。
 D.  Cで求めた距離をピクセル単位に変換してプロットの中心座標を求める。
 E. 最後にOpenCVを使って地図上にプロットしてます。

3.「2.やり方」で参考にしたサイトやリファレンス
 ★Static Maps API V2 
   Static Maps API V2 デベロッパー ガイド
 ★OpenCV 2.2
      OpenCV 2.2 C リファレンス

4.プロットした画像
  黄色(中心点):(33.894048,130.839786)
    赤色:(33.894449,130.840036)
 

今回はこんな感じです。
これを元に移動型ロボットの現在位置をリアルタイムで地図上で表示してくれる
プログラムを作っていきたいと思います。

2013年6月27日木曜日

GPSを使って目標地点に到達する ~テスト走行1~

こんばんは。CIR-KITです。
今日はGPSを使って目標地点に到達するテスト走行をしました。
----
memo:
Hemisphere A100のGPRMCモードの時に帰ってくるTrack made good(巡航角度)は真北を基準(0deg)として右回りに0-360degを返します。
----
ある程度正しい目標角度は出ているのですが、たまに真後ろに向かったり、Uターンするときにうまくいかないなど問題はまだ残ってます。

GPSの固定方法が(笑)

今後はそのあたりを解決していこうと思います。
それではまた。