前回の更新では基板にある程度の部品を付けて電源を投入し、バッテリー電圧とジャイロの値がPCへ送れるところまでやりました。今月の進捗は一応ハードが完成して、DCモーターの基本的な制御ができるようになりました。
CkG9hNfUgAAveSr

CkG9iSNUkAAPca6

 一応完成というのは、電気的には完成という意味で、モーターのケーブル が長すぎで切らないといけない物理的な作業が残っているからです。スピードを出せない内は低重心化はそれほど必要ありませんが、見た目や持ち運び等考 えると邪魔なので近いうちに切ろうと思っています。Faulhaberの1717という高価なものを使っているので、ケーブルの切断を躊躇ってしまいます...

ASmouse_Earのスペックは以下の通りです。
マイコン:RX631
センサー:ST-1KL3A(フォトトランジスタ)
MPU6000(ジャイロ)
 IE-512(エンコーダ)
モーター:Faulhaber_1717
バッテリ:LiPo_2S(7.4V)120mAh
重量:100g(バッテリー含む)
サイズ:100*69*24(ケーブル除く)
CkG9jHaVEAAOGgX

 モーターマウントはCNCで切削しました。1717 を使用したマウスでは、モーターマウントやピニオンギヤ云々で、ある程度トレッド幅が決まってしまいます。それでも、もう少し縮められそうな気がしたの で、先輩たちのトレッドより9mm程狭くして設計してみました。トレッドは狭ければいいというわけではないのは百も承知ですが、トレッドが狭ければ多少ス リップしても壁に当たる率を落とせるのではないかと考えました。余裕をもってスラロームするために、なるべくトレッドを狭くしようと思い、次のことを行い ました。

 まずは共立電子のモジュール0.5_12枚歯の穴径φ2mmのピニオンギヤを購入します。元々、モジュール0.5_12枚歯穴径φ1.5mmのギヤの入手が難しかったので、手元にあるギヤで解決しようとしたらトレッドが狭められそうだなと思ったのがきっかけです。1717のシャフトはφ1.5mmなので、共立のギヤでは填らないんです。そこでポムをφ2mm,長さ5mmの円柱にCNCで切削して、ギヤに圧入します。
Cio6qenUgAEIXoE
 簡単そうですが、小さすぎるので力が入らず難しいです。先輩に相談すると、バイスに両面テープを張って、ポムとギヤを両側に張り付けて位置を微調整をしながら圧入するといいとアドバイスをいただき、ゆっくりと圧入していくことにしました。すると見事に填ってくれました。

Cio6r2xVEAAQdp8
 次にピニオンギヤを5mm厚から2.5mm厚までCNCで薄くします。スパーギヤが2mmなので、ピニオンも2mmにしようかと思いましたが、あまり薄くするとピニオンギアが滑って信頼性に欠けるので、気持ち太めにしました。

Cio6tTiUkAEU6pz
そして最後にφ1.5mmの穴を中心に空ければ1717に填るピニオンギヤの完成です。製作費は25円!

Cio6uh4UYAAltR_
 モーターマウントにモーターとタイヤを取り付け、スルスル回ることを確認して一安心です。作ってからわかったのですが、設計が甘いせいで色々と隙間ができたので、まだ3mmほどトレッドを狭められそうです。次回作では修正します。この画像では仮止めなのでベアリングが入っていませんが、完成形ではタイヤ1つにベアリングを2つ入れて両持ちにしています。その二つのベアリングの間にスペーサーを入れたり、両外側にもスペーサーを入れることによって、ネジを強く締めても引っ掛かりが軽減されます。このことについては他の方が詳しくまとめられているので割愛します。

 4輪になっていますが、最初の内は2輪で行こうと思います。4輪だと再現性があまり良くないとのことなので、壁補正や壁切れ補正等できるようになってからにします。

 早速2輪でゼロフィードバックをやってみました。よく宴会芸と言われているものです。角速度をゼロに近づけるようにPID制御を掛けています。D制御をうまく追加できなかったので、 実質PI制御になっています。ゲイン調整の問題なのか根本的に数式が違うのかはまだ分かっていません。きっと何か勘違いしていると思います。こんな制御では誤差が貯まり過ぎてまともに使えません。
 動画の中で箱を前後に振る様子がありますが、これはエンコーダーを使い、機体の位置もPIDで0に近づけている確認です。この動画でやっていることをまとめ ると、エンコーダーを使って機体の速度を求め、ジャイロを使って角速度を測定し、ゼロからの差分を実測値の角速度とします。目標値はゼロなので、それらの 目標値と実測の角速度を使えばPID制御が組めると思います。DCモーターを使ったマウスでは、この動作を使いながら走行することにより、左右のタイヤの 直径が少しくらい違っても、自分で補正を掛けながら真っすぐ走ってくれるようになります。実際に私のマウスも右のほうが若干小さいのですが、補正をかけて 真っすぐ走ってくれているみたいです。
<補足>
 先ほど先輩から電話でご指摘がありました。「タイヤとホイールはタミヤの既製品を使っているのであれば、直径が違うなんてことはそうないから、この場合はギヤの干渉の違いとかタイヤの締め付け具合などの要因を疑うべき。タイヤの直径が違うだけならその分タイヤの直径値をソフトで調整してやればいいだけ。変に干渉する問題を解決するためにゼロフィードバックを使うといい」とのことです。ご指摘ありがとうございます。

 エンコーダーを使って速度を求めることについてですが、1717に装着している一回転あたり512 パルス(※1)を出力する高分解能であれば、1msで計算させてもある程度正確な速度が求められています。高分解能なエンコーダーでも、自分で取り付けるとなるとズレが生じるので、そこはサンプリングタイムを伸ばして移動平均を取ったり、カルマンフィルタを使うなど、少し面倒なことをしないと使える値が取れないらしいので、最初の内はエンコーダー付きの既製品を買った方がいいかもしれません。
(※1)2相のパルスのエッジを検出させているので、実質4倍の分解能で計算しています。

 これは最初の動画でやっていた角速度補正を掛けつつ、前後に台形加速させてゆらゆらしている様子です。加速度と最高速度を設定して、500ms加速 →500ms減速→500ms後ろに加速→500ms減速をループしています。この時からモード選択機能を追加したので、動作まで少し時間がかかるように なりました。モード選択はタイヤを回してエンコーダー値を足し引きして設定します。モード数に応じた値をLEDを使って2進数表示させていますが、バッテリーに隠れて見えません!スイッチもそうですが、バッテリーが邪魔で押しづらいです。次回は気を付けます・・・

 製作に当たって手こずったことは、センサー値が4個中2個取れなかったことです。原因はセンサーが死んでいることによる不具合でした。正常なフォトトランジスタは、太陽光を当てると抵抗値が変化するのに対し、不良品のフォトトランジスタは全く抵抗値が変化しません。このセンサーの入手先はEabyなので文句は言えません。とても安かったので・・・。
CiA6w6xVIAAY8rW
 10個買ったのですが、そのうち5個が不良品でした。Eabyで半導体を購入したら、まずは個別に動作チェックをしてから実機に取り付けるようにしないと無駄に時間を取られてしまいます。

CjTvsZaUkAApDrW
 左が本物ですが、寸法や見た目は大体同じです。しかし刻印のされ方が違います。やっぱりまがい物です。同じ環境に置いての抵抗値も本物と違います。それでも偽物は偽物でまとまった値を返してくれているので、動作品を選別すれば使えそうなので使っています。壁の判別や補正等、問題なさそうな値が得られているので、今作はこれで行きます。

 これから迷路を走らせるためにプログラムを組んでいきたいのですが、応用数学と量子力学と原子力の中間テストがあったり、物理学Ⅲと一般教養のレポートがこの時期にあるのでマウスをやっている時間があまり取れません。(今は量子力学より古典力学の方が必要なんだよ...)それでいて来週はマイクロマウス合宿でプチ大会に応募しているため、マップ記憶とかそんなレベルは望んでないので、とにかく迷路を隈なく走り回れるようなプログラムを組まないといけません。右手法や左手法では完走できないコースにしてくると思うので、ダンゴムシのように左に曲がったら次は右みたいな独特なものにしても面白いと思いますし、曲がる方向をランダムにして運任せに進めるのも面白いかもしれません。運任せだと一発で最短経路を行ける可能性も・・・!

ということで、一週間後にはある程度走れるようになってることに期待して今月の進捗報告とします。