2013年2月27日水曜日

マウス的時定数


もう1個ロボット相撲から。


前回のOn_Off制御の話は興味のある方がおられれば話のタネになるかな、くらいだったのですが、今回は自分もマジメに気になった話。


同じように、「モータに電圧がかかってからロボットが動作するまでにどれくらい時間がかかるか知っているか?」と質問を受けたわけですが、そんなことは考えたこともなかったので、調べてみることにしました。

その前に前提として共有したいのはモータの機械的時定数です。モータが回ればマウスが動くだろうという考え方ですね。私はこの程度の大きさだろうと思ってこれまでマウスの調整をしてきました。
例えばMaxonの場合、RE6だと機械的時定数は7~8msくらいで、もっと大きいモータ、RE65だと3msくらいみたいです。

http://www.maxonjapan.co.jp/product_re.htm

私のマウスに使っているモータMk-06-4.5がどうなのかはわかりませんが、大きくても十数msくらいと予想しています。



それでは実際の実験。左右のモータに一定のDutyで電圧をかけ、左輪エンコーダで読み取った速度をログでとりました。左輪である理由は別にありません。

まずは静的測定。停止状態から両モータDuty比10%で1秒間直進させました。

video

この時の左輪エンコーダで読み取った速度と時間の関係。波打っているのは置いといて、それっぽく1次遅れの応答になってますね。

次に動的測定。停止状態から両モータDuty比10%で1秒間直進させたまま、左だけDuty比30%にあげてそのままぐるぐる1秒間回しました。ジェットコースターみたいな楽しい動きしてますね。


video


同じように速度と時間の関係。やはり同じような時間をかけて、1次遅れの応答っぽく速度が変わっています。



この二つのグラフから分かるのは1次遅れ系とみなして時定数を定義する場合、100~200ms程度になるということです。モータの時定数の程度という私の予想は大幅に外れ、1ケタ上の値になってしまいました。

ギアやマウスの慣性が影響してるとは思うのですが、10倍にもなるとは思わなかったので、個人的に驚いてます。
こういう結果が得られると、100msに満たない時間で終わる45°スラロームとか、自分のマウスが問題なくこなしているのがなぜだかわかりませんね。

2013年2月26日火曜日

ロボット相撲

関西支部総会で知り合ったロボット相撲に参加されている方から、
「なんでマウスは台形加速なんかしてるの?速さ競うならOn_Off的に出力変えて力の限りかっとばせば?」という指摘をいただいた。

私はロボット相撲をよく知らないので、とりあえず競技を見てみる。
http://www.youtube.com/watch?v=spC_eH8d8zY

なるほど確かに急激に(多分出力の限り)加速して相手とぶつかりあっている。
この速度でマウスが走れば間違いなく無敵。

ただ、どう考えても走行精度は出せず、柱クラッシャーになるだけな感じはある。
一方で、モノにできれば板マウス、吸引、変則4輪のように新たな競技レベルを生み出す技術にもなりうる。

2013年2月24日日曜日

関西支部総会

昨日2月23日のマイクロマウス関西支部総会に参加してきました。

例年になくマイクロマウス未経験者を含めたくさんの方々に参加していただきました。ありがとうございます。

それでスライドを作って講演をたくさんしていただくことができ、私自身大変勉強になりましたが、多すぎてタイムキープ全くできてなかったのは申し訳なかったです。

総会後の懇親会でも興味深い話がたくさん。参加してよかったです。

特に気になったこともいくらかあったので、これから調べてみようと思います。


私はまだ他の方があまりマウスで使われていないMEMSセンサについて講演させていただきました。思ったより反応があったので、ソースコード等を含め公開します。
こちらからどうぞ。

2013年2月19日火曜日

変則4輪恐るべし

モータマウント改が届き、新作4輪「Vector」の調整を昨日から開始。

2輪マウス「Mg」からのソフトウェアの移行は思ったよりスムーズに進行。
パラメータも大きな変更はなし。ゲイン少し大きくしても大丈夫かな?くらい。

とりあえず走行動画。

video

変則4輪は評判の通り直進が安定してますね。ターンも滑りにくいからなのか、速度を上げることができました。


斜め走行中の90度ターンは上手く曲がらないと内輪差で後輪が引っかかるので、旋回半径が大きくできません。なので速度が出せません。最後のほうは柱にかすっちゃってますね。

探索のような旋回半径小さいターンも思ったより平気でこなしてます。旋回半径はMgと同じままなのですが。

2013年2月11日月曜日

Vector完成、、、のはずだったが!

先日ブログで紹介した今年の新作「Vector」のはんだ付けや動作確認その他もろもろが終了。


重量はこんな感じ。13.74g。昨年のマウス「Mg(15.0g)」に比べてセンサ用発光素子の変更で1g弱、モータマウントで0.5g弱軽量化してます。ホイールは今回始めて肉抜きをしたのでMgのホイール2個とVectorの4個はだいたい同じ重さでした。基板も厚みに変更ないので大差なし。


メインコンセプトはMgの4輪化ということで、縦幅、横幅、マウスの中心(2輪ならタイヤを結ぶ線分の中点、4輪ならモーターを結ぶ線分の中点)は同じにしてあります。写真で比べてみるとよくわかるかと思います。




また、サブコンセプトとしてセンサ系の一新による状態計測機能の強化があります。今回初めてマジメに壁センサの配置を検討し(結局こじまうす7のマルパクリになってしまいましたが)、また、Invensenseの9軸センサ(ジャイロ&加速度&コンパスセンサ3軸ずつ)を2個乗っけてみました。エンコーダは素子自体はAS5040のままですが、磁石位置決めが昨年よりしっかりできているので動作確認しているかぎり精度はマシになってます。

特に加速度センサを積んだことが自分の中では大きいと考えていて、直進時の加速度や向心加速度などもある程度把握できるといいな、と考えています。


ただでもまだ完成していなくて、特注したモータマウントでバックラッシがうまく作れず車輪のギアとピ二オンのかみ合いがきつすぎて、まだ使える状態にありません。それで現在前輪だけピ二オンにかむようにして、後輪はピ二オンにかまないよう横にずらしてベアリングで保持しているだけ状態です。再度注文して届くまではピ二オンでなく床の摩擦だけで前後輪が同期できる範囲で調整するしかありません、、、

2013年2月8日金曜日

新作マウス「Vector」

前回のAS5145関連の日記でも触れましたが、現在今年の新作を作成中です。

大学の試験期間まっただ中に全ての設計と発注をこなすダメ学生的活動のおかげもあって、今日基板が届きました。

なんとなく形が矢印(ベクトル)っぽく見えたので、名前はVectorにしました。他の方もこんな基板形してるのが多いので、特に特徴的ではないのですが、、、

このマウスはハーフサイズ変則4輪仕様にするつもりで、基板厚は0.8mmにしました。
0.6mm以下だと強度はともかく基板が「反る」ようで、反ってしまうと4輪全てが地面に接地しなくなって4輪の機能が失われると判断したためです。
基板厚0.6mmで2機作ったら2機とも基板の反り方が違う!といった話を聞いたり、制作中方のの4輪マウスが基板の反りのせい(?)で接地しないのを見たりしたので今回はむやみに軽量化して攻めるのをさけ、4輪の機能を確実に発揮することに努めます。

ところで、目で見て、触って分かるレベルはおいといて、4輪全てが地面に接地しているのをどう判断するかという話ですが(タイヤが偏心していてあるところで接地しないとかを含む)、簡易的にこの基板にマウントと車輪をとりつけ、指で押し出して直進させました。
相互にギアがかみ合っておらず4輪が独立に動くので、接地していないタイヤがあればそのタイヤは直進中回転しません。
これが実験動画です。車輪が回転してるのがわかりやすいよう、車軸に黒いビニールテープを貼りつけてあります。

video

4輪がそれなりにムラなく回っており、おそらく接地していることが分かりました。


同じ日に2個も長々と書いてしまいました。読んで下さった方、ありがとうございます。

AS5145開発断念

磁気式エンコーダIC「AS5145」はマイクロマウスで普及しつつある「AS5040」の後継機で、最大12bit分解能(AS5040は10bit)、精度改善などの特徴があるそうで、早速使ってみようとしたのですが、使い勝手がAS5040とは異なることが分かりました。

AS5145はレジスタ書き換え機能をもち、ユーザーに適した用途で使えるようにできるAS5145Hシリーズ、デフォルトでインクリメンタル出力可能に設定されたAS5145A(分解能10bit)、AS5145B(分解能12bit)シリーズがあり、基本的にAかBシリーズを使いたいのですが、DigikeyやMouserで入手可能なのはHシリーズのみという状況で仕方なくHシリーズを購入したのでした。

Hシリーズはデフォルトでインクリメンタル出力不可に設定されており、内部のレジスタを書き換えることでインクリメンタル出力にできます。
書き換えはシリアル同期通信(USART not UART)、、、なのですが、特有の奇妙なスタート、ストップコンディション、同一ポートの送信と受信切り替え、その他バイト単位でないレジスタアクセスなど、難解なIO操作が必要で、とても同期通信モジュールみたいなブラックボックス使ってやっていける状況ではありませんでした。(助言を求めた方には全く聞く耳持たないことして申し訳ないです)


そういうわけで、仕方なく全操作をSTM32のGPIOのHigh,Low切り替えでこなすことに。昨年作製した開発ボードと変換基板に実装したAS5145をブレッドボードで接続。

面倒でしたがトラブルは起きないのである意味気が楽でした。その時に使ったプログラムをブログの追記に延々と載せておくので何かの参考になればお使いください。

何もしなくてもインクリメンタル出力になるAS5040は優秀だなあ、、、とか思いつつレジスタを書き換え、読みだして目的のレジスタが書き変わったことを確認。インクリメンタル出力の様子をSTM32のタイマで読み取って性能評価しようとしましたが、どういうわけか出力がドリフトしました。カウントするタイマの値が静止時にひたすら減っていったり、増えていったり、、、
探索の速度でも問題ない程度かもしれませんがAS5040ではこのようなことはなく、精度はむしろ悪くなってるんじゃないかという印象を受けました。
まあ、自分がいい加減な(データシートで保証してないサイズの磁石使用と目分量の磁石配置)使い方してるからだと思いますが、それでもAS5040が動いていた以上このやり方でやりたいのでAS5145の使用は断念し、今年の新作もAS5040で作ることにします。