いろいろ努力の結果・・・方位センサーが完成しました。
部品代は500円でしたが、私の努力の費用は・・・(疲れた!)
まず、このセンサーは、90度ずれた地磁気の強さ?X,Yの2つの値を返します。
その2つの値から方位を計算します。
しかし、その計算がそんなに単純じゃありませんでした。
出力される値自体の補正をしなければなりません。
①真北に向けて値を取得し記録します。
②真南に向けて値を取得し記録します。
①と②の値の平均値分だけ、X,Yのそれぞれの値から差し引いた値になるように補正します。(この説明じゃわかりませんね。 要は、①と②の平均値が0になるように出力の値を細工します。)
それが済むと・・・
北(x>0,y=0) 東(x=0,y<0) 南(x<0,y=0) 西(x=0,y>0)
という値が取り出せます。 ここから arctan を使って(実際には変換テーブルを使って
)方位(角度)を取得します。
とりあえず、精度もそれほどでもなさそうなので、最小単位5度の72分割にしてみました。
やっと、ワンコイン方位センサーの完成です。
あくまでも自己満足ってことで・・・
ところで、上にも書いている「補正」の作業ですが・・・
2008年の蘇州世界大会の時の中国チームのロボットで、方位センサーを搭載したスゴイのがありました。
競技の前に、
①2階の壁の前に撒かれている楊枝をどける
②楊枝をどけたところにロボットを置き、壁に押し付ける
③何かスイッチを押す
④ロボットを180度回転させて、再び壁に押し付ける
⑤何かスイッチを押す
⑥ロボットを持ち上げ、楊枝を元のようにならす
とやっていたのですが・・・いったい何をしているのか分かりませんでした。
これは、方位センサーの補正作業をしていたのですね。
もしかして、これが「キャリブレーション」ですか・・・
うん、納得
500円+αで方位センサが出来るってすごいですね
ロボカップをやっているところは、どこも方位センサをどうするか
悩んでいると思いますので
よかったら、内容を公開できませんか?
ワンコインといっても、センサーモジュールだけの値段なので、これを制御するための仕組みが必要となります。 まあ、普通はPICとかAVRとかで値を読み取った後に、I2CでNXTに送るのでしょうね。
今回、完成度というか、本当に合ってるの? という部分もありますので、プログラムの公開等は控えさせていただきます。
ヒントとしては、「その36」のセンサーの写真から型番を読み取って、ネットで検索すれば(私のつたない説明より)ご理解いただけるかと思います。
もうちょっと、まともなセンサーとして使えるようになったら、別に記事を書きたいと思います。 期待しないで(笑)待っててください。