ロボカップジュニアサッカーに参戦していたTeamReverseの徒然を記すブログです
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

2011年02月10日 (木) | 編集 |
Reverse父です。

慌てて頼んだコンパスセンサは,今日無事に届いていました。(メール便だったのでポストに入ってた!)

早速,Reverse姉がピンヘッダをハンダ付け(他にもハンダ付けがあったのでついでに)し,マシンに装着。実はTJ3でHMC6352を使うのには,少々前処理のおまじないが必要なんです。

HMC6352は,工場出荷時の設定では,連続測定ではなく,測定要求を出す毎に測定し,後から読みに行かないと行けないスタンバイモードになっています。Arduinoのスケッチからは,初期設定で連続測定にモード変更して使っていますが,電源を切ると元の設定に戻ってしまいます。データシートには,コマンド"L"を送ると現在の測定モードをEEPROMに書き込んで,以後のデフォルトにできる,と書いてあったので,Arduinoから"L"を送ってモード変更しておくと,常に測定し続けていて,マスタからデータ要求すると即座にデータを返してくれるようになります。

こうすると,あとは,D_I2C.cを改造すればTJ3から使えるようになります。(ファイルのバックアップは取りましょう。改造は自己責任で。C-Styleをバージョンアップすると消えちゃいますよ)

D_I2C.cのget_dir関数の中身を少々書き換えます。

// BYTE adrs = DIR_ADRS;   コメントアウト
BYTE adrs = 0x42; // HMC6352のI2Cアドレス(デフォルト)は0x42
.
.
// gI2C_Buf[n++] = 0x20 + dno * 2; // Register 0x20:AZIMUTH(MSB-LSB), 0x22:PITCH(MSB-LSB), 0x24:ROLL(MSB-LSB) コンパスのレジスタアドレスを送る必要はないのでコメントアウト
// if (i2c_send(adrs, n) == false) return(d.W); コンパスのレジスタアドレスを送る必要はないのでコメントアウト
.
.
d.W /= 10; // HMC6352は,0~3600(0.1度単位)で送ってくるので,10で割って360度にする

あとは,結線を間違えないように(TJ3と並びが違うので)接続すれば,コンパスが使えるようになります。

C-Styleでの方位取得,方向判断は楽ですね。とてもいい関数です。

現在,妹ガンローラー機は,一生懸命プログラム移植中です。一応コンパスだけの動きをチェックしたら,前を向く動きができています。しかも,向きを合わせなくてもいい!っていうおまけ付き^^

コメント
この記事へのコメント
HMC6352
ノード大会で大変な状況の最中、遅れた横槍コメントで申し訳ありません。

本件、まさに当方の N が今トライしている状況なので大ヒット!!!です。TeamReverse さんは既に結論出されたようですが、こちらはその前でつまづいてます(泣)。

スタンバイモードは A コマンド送信してからデータ返ってくるまで仕様上は 6ms かかります。この遅延を許すかどうか考えどころです。

コンティニュアス(連続測定)モードは A コマンドの送信は必要なく、RAM 上の情報を読むだけなので、HMC6352 自体の遅延は 70us ですが I2C の通信のため必要な時間を考えると 1ms 程度は必要 ? 通信は早いのですが、データの更新サイクルが最大で 20Hz なので、リアルタイム性を考えるとへたするとスタンバイモードのほうが良いかも ???

上記、私が仕様を読んで想像しただけなので間違っているかも知れませんし、双方をやってみると TeamReverse さんとは違う結論を当方のチームは出すかも知れません。ただ、HMC6352 の読み取り方について(というかインテリジェントなセンサーの扱いについて)とても面白い話題だと思います。
2011/02/13(Sun) 20:56 | URL  | モッパー #vASB4.KM[ 編集]
たぶん考えてない...です
モッパー様

お祝いのコメントありがとうございます。あっちの記事はメンバーが書いたので、あっちのお礼はメンバーから直にすると思いますが、メンターからもお礼申し上げます。うちもブロック突破できるほど圧勝ではなく、ノード落ちの可能性もあったくらい(故障ばっかりで2台ともいないこともしばしば)ですので、もう少しブロックまでに頑張ってもらおうと思います。

で、コメントのコンパスの件ですが、うちのメンバーは「全く考えてない」のが正直なところです。Arduinoの使用例スケッチをそのまま頂いてきて使っているだけ、です。一応それで問題なく動いているのでそれ以上の検証はしていません。まあ1~6msでロボットがどのくらい動くのか、というところから考えないといけませんが、たぶんメンバーは「動いているからいいや」と思っているはずです。
参考にならなくてすいません...

ところで、雪は大丈夫ですか?
2011/02/15(Tue) 00:39 | URL  | Reverse父 #-[ 編集]
今年は首都圏も例年に比べて恐ろしく寒いのですが、今日は雲が厚いことことからか若干暖かく、夜間に入ってから雪の勢いは衰えてます。でも明日は家族全員、登山靴とか長靴準備して、就業時間厳守すべくがんばりまーすって感じです。
2011/02/15(Tue) 00:56 | URL  | モッパー #vASB4.KM[ 編集]
コメントを投稿
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。