今年はTrifilar(トリファイラ)で出場しました。

DJCvLAfUEAAy9u1

機体名:Trifilar(トリファイラ)
基板厚:1.0mm (前期:緑、後期:白)
マイコン:RX631 (100pin)
壁センサー:SFH 4550 (IR発光ダイオード)
      QSD124 (IRフォトトランジスタ)
ジャイロセンサー:MPU6000
エンコーダ:AS5145B
モーター:φ8.5, 20mm(AliExpressで買い漁って選別したもの)
モータードライバ:DRV8835 (駆動用2個、吸引用1個)
バッテリー:LiPo_2S(7.4V)150mAh 30C
重量:39g(機体重量(吸引なし))+10g(バッテリー重量)
サイズ:83*44*25

 このマシンは去年の全日本が終わった辺りから構想を固めて、春にはテスト基板発注、夏の終わりごろには動作テストまで済んでいたのですが、初の磁気式エンコーダ自作吸引の追加などで、かなり手こずってしまいました。エンコーダについては磁気シールドの問題が深刻で、モーターには引きつけられるし、磁石を向かい合わせにしているので磁石同士でも引きつけ合って大変でした。
 磁気シールドはモノタロウの鉄スペーサーを購入することにより解決しました。スペーサーの自作は精度が出ない上に欲張って軽量化しようとしてシールド性能が下がってしまうので諦めました。エンコーダはAS5145Bを使用しています。データーシートにはφ6の磁石を使用してくれと書いてありますが、先人のマウスを見るとデーターシートに従っていないものが多く見られます。私は初めてなので仕様書に従って作りました。するとスペーサーも大きくなるし磁石の保持具も大きくなるのでマシン設計が大変になりました。
 吸引機についてはモータードライバの過電流保護の問題が深刻で、普通のNch-MOS-FETを使っておけばよかったと後悔しました。この問題に気付いたのが大会一週間前なので、今回は吸引なしで大会に出ることに決めました。吸引なんて一方向にしかファンを回さないので、Hブリッジである必要は全くありません。個人的にお勧めのMOS-FETはAO3400です。データシートを見ると、30V5Aとマウスには必要十分なスペックを持ち、パッケージはSOT-23と小型、更に逆電圧保護ダイオードが内蔵されています。そして決め手はAliExpressで安いということですね。100個で200円送料無料です。メインモーターを駆動しているDRV8835もAliExpressで買えば安いですよ。

 吸引ファンを2つ搭載する利点は、前後のファンを逆回転させてカウンタートルクを打ち消し合う為と、前後のファンのトルクを可変することにより、旋回の補助をすることができます。以下に図を示します。
bandicam 2017-11-22 19-21-41-789
 パワーポイントで図を作ってみました。緑が基板で黒がタイヤ、黄色い丸が吸引ファン、赤い矢印がモーターにかける電圧(トルク)です。吸引ファンは逆回転しており、前後の吸引モーターにかける電圧をスラロームと同時に制御することにより、普段はタイヤの摩擦力で機体を曲げていたのが、吸引ファンの力で曲げることができるようになります。その分、タイヤのグリップは横Gに耐えるための摩擦力に注力できるため、旋回速度を上げられるという目論見です。タイヤのグリップには限界があります。その限界を角速度を発生させるために全力を使っては勿体ないですよね。

 そしてこの機体、想像以上に高重心になってしまいました。バッテリーをモーターとエンコーダの上に乗せるしかなくなってしまって、仕方なくそのまま設計を進めたらこうなりました。私が目標としていた物理的に美しい機体とは程遠いものになってしまい、この段階で動力性能は激落ちで、ターン速度も全然でないことが察せました。(たとえ吸引をしたとしても)
 基本的にマシンの旋回速度を上げるには、「重心を低くする&慣性モーメントを下げる&トレッド幅を広げる」この3点だと自分は思っています。高重心・低トレッドだと、旋回するときに片輪の荷重が抜けて制御が不安定になります。旋回軸の慣性モーメントが大きいと旋回しずらくなるので、重い部品はなるべく旋回軸上に寄せて置くようにします。マイクロマウスの場合、トレッド幅に関しては広い方がいいか狭い方がいいか、どちらにもメリット・デメリットがあると思います。
 まずトレッド幅が広い場合、左右のタイヤ両輪に荷重を掛けやすく、旋回時に安定した制御がしやすい利点があります。
 次にトレッド幅が狭い場合、同じサイズの迷路を走らせる上で旋回半径を大きくとれる利点があります。以下にスラロームのシミュレーション結果を示します。

bandicam 2017-11-22 20-06-32-049
    図4. トレッド幅70mmのスラローム
 緑が中心軌道、水色がタイヤの軌道です。重心速度1m/s, 角加速度20000deg/ss, 角速度500deg/sのスラロームシミュレーションです。割と一般的な軌道かと思います。実際には前距離と後距離を調整してスリップ角を対処してやらないといけないのですが、大体こんな感じです。

bandicam 2017-11-22 20-02-23-835
     図5. トレッド幅44mmのスラローム
 トレッド幅を44mmにするだけでこれくらい変わります。柱と距離があいてぶつかる確率が減りました。このスペースが今回の完走率に貢献してくれています。実は私が低トレッドにした理由は別にあります。それは低角度斜め走行ができるようになるということ。斜め直進時以外の旋回の組み合わせの場合、45度や135度、V90のターンはもっと浅く旋回するだけでいいのです。私が導入したアルゴリズムだと、
45度→35度
135度→125度
V90→V80in, V80out, V70
の旋回パラメータを今までとは余分に制作します。これにより、旋回半径を広げるとともに横Gを更に下げることができ、限界突破できそうな気がします。今年は吸引に時間奪われ、間に合わず諦めました。低角度斜めのパス生成アルゴリズム自体は組んであるので、時間があるときにデバッグと旋回調整をして実験してみようと思います。V70のシミュレーション結果は以下の様になります。

bandicam 2017-11-22 20-02-53-373
     図6. V70スラローム軌道
 重心速度1m/s, 角加速度20000deg/ss, 角速度400deg/sのスラロームシミュレーションです。かなり攻めた軌道を通ることが分かります。横Gに関しては、0.89Gから0.71Gまで抑えることが出来ました。それだけスリップ角も小さくなり、重心速度も上げられます。これはトレッド幅が狭くないと曲がれないので実験すらできません。この低角度斜め走行をやりたいが為に、トリファイラの低トレッドにしたのですが、結局時間配分をミスって肝心なところに手が回りませんでした。吸引は次回作でもできるから低トレッドな機体があるうちにやっておくべきだったと後悔しています。

DJAuJFOWsAI3yCG
 今回からDMMの3Dプリントサービスに部品を造形してもらうことにしました。今まではCNCで切削していたのですが、複雑な形が作れなかったりCNCが動いている時は傍にいないといけなかったりと制約が多いので3Dプリンターに手を出しました。3DCADはDesignSpark Mechanicalを使いました。最近はもっと高機能でレンダリング機能がついたCAD、Fusion360があるのでそちらに移行予定です。私はDesignSparkのほうが扱いやすいと思います。
 上のデータをアクリル(Ultra Mode)のブラックで発注して、価格は5,281円(送料込み)でした。安く済ませようと思ったらナイロン製で1,176円ですが、精度が全く違うのでお勧めできません。特にモーターマウントや吸引ファンなどの制度が必要な部分には不向きです。アクリルならそこそこな精度で造形してくれます。

DLDuDOmUMAA616v
 肝心の強度についてですが、扱いが悪いとパーン!って粉々に割れますね。ナイロンの方は多少弾性があるので割れにくいですが、アクリルは硬度が高いので割れてしまいます。モーターマウントとホイールは一度も割れませんでした。吸引ファンにはちょっと厳しいかもしれません。先輩も今シーズンで5個くらいのファンを割ってるみたいです。保持具をしっかり作って基板と掠らせなければ割れないとのことです。

DJBSN3ZUwAAonYI
 ホイールとスパーギヤはこのように設計しました。スパーギヤはM0.3の70枚歯です。AliExpressで購入しました。買った時から6穴の肉抜きがされていたので、その場所にホイールから円柱をプルして固定させました。スパーギヤは固定しないと急加減速時に意外と滑るので、このように固定できると心強いです。それからホイールとシムワッシャーを一体化させてみました。アクリルじゃないと造形できないみたいです。

DItdKzJVwAQtKyp
 タイヤの方はミニッツのワイドタイヤ30°を半分に切って使いました。今回はトレッド幅を狭めたいのでタイヤを細くしました。基本的にはタイヤの太さに関係なくグリップは出ます。車重が重くなるとタイヤが太くないとグリップ力が飽和する問題に直面しますが、このマシンではタイヤが沈むほどの重量はないので大丈夫です。ただ、自分でタイヤを半分にするとどうしても偏りが出来てしまいます。ちょっとくらいジャイロセンサーでどうにでもなるのですが。

DKuEwzjUEAA2ONX
 バッテリーは毎度お馴染みの自分で2S化します。JJRCの150mAh, 30Cのリポを直列にします。まずは分解して、その時にリポの過電流保護回路は取り外します。ここは意見が分かれるところだと思いますが、こんなところでリミットを掛けて欲しくないので私は取り外しています。不安な人は付けておいてください。

jpg large
 今回は横に並べて平たく配置しました。バッテリーの置き場所がモーターの上になってしまうので、申し訳程度の低重心化です。マシンに合わせてバッテリーの形状を変えられるところが自作の魅力です。

DOXTxVJUEAAa7R0
 それから、トリファイラのマウスのセンサー配置はコンパクトでいいですが、初心者にはあまりお勧めできません。バイファイラのセンサー配置の方をお勧めします。その理由は、壁判定及び壁切れ判定の閾値調整がシビアということと、角度によってセンサー値が結構変わるので、ある程度安定した走行ができないと探索すらできない機体になってしまいます。また、壁補正するためのゲイン調整もシビアです。一般的な1717を使うDCマウスは、機体が大きいので、ちょっと位置がズレても壁に当たって補正が効くことがあります。しかしこのマウスは自分で自己位置補正をしてやらないと位置がズレていきます。初心者の方は安定したセンサー配置がいいですよ。

DIu5J6MUQAAyQe8
 マイコンを基板下に置いてみました。マイコンは意外と高さがあり、1mmの基板よりも背が高いので場所には注意が必要です。タイヤのすぐ下なら大丈夫そうな気がします。また、トレッド幅を限界まで小さくするために、ネジを基板で浮かせてマイコンのピンの上でネジ止めするような設計にしてみました。これでも十分止まっているので面白い設計になったと思います。こんなことができるのも個人の趣味ならではなので積極的に取り入れていきましょう。

 毎年恒例のマシンのパラメータを公開します。去年のバイファイラのパラメータより旋回速度がかなり遅くなってます。
<クラシックエキスパート予選の走行パラメータ>
1走目:探索走行
    加速度(加速)    5[m/ss]
    加速度(減速)    10[m/ss]
 最高速度 0.6[m/s]
    旋回速度 0.6[m/s]
2走目:最短走行
    加速度(加速)    10[m/ss]
    加速度(減速)    15[m/ss]
    最高速度 3.0[m/s]
    旋回速度 All 0.6[m/s]
3走目:最短走行(V90で柱に掠りフェイルセーフ発動
    加速度(加速)    10[m/ss]
    加速度(減速)    17[m/ss]
    最高速度 4.0[m/s]
    旋回速度 {L90deg, 45deg, 135deg, V90deg, 180deg}
      {0.9m/s, 0.89m/s, 0.77m/s, 0.7m/s, 0.7m/s}
4走目:最短走行
    加速度(加速)    10[m/ss]
    加速度(減速)    15[m/ss]
    最高速度 4.0[m/s]
    旋回速度 {L90deg, 45deg, 135deg, V90deg, 180deg}
      {0.9m/s, 0.89m/s, 0.77m/s, 0.7m/s, 0.7m/s}
5走目:最短走行(MAXパラメータ
    加速度(加速)    13[m/ss]
    加速度(減速)    20[m/ss]
    最高速度 5.0[m/s]
    旋回速度 {L90deg, 45deg, 135deg, V90deg, 180deg}
      {0.9m/s, 0.89m/s, 0.77m/s, 0.7m/s, 0.7m/s}

<クラシックエキスパート決勝の走行パラメータ>
1走目:探索走行
    加速度(加速)    5[m/ss]
    加速度(減速)    10[m/ss]
 最高速度 0.6[m/s]
    旋回速度 0.6[m/s]
2走目:最短走行
    加速度(加速)    10[m/ss]
    加速度(減速)    15[m/ss]
    最高速度 3.0[m/s]
    旋回速度 All 0.6[m/s]
3走目:最短走行
    加速度(加速)    10[m/ss]
    加速度(減速)    17[m/ss]
    最高速度 4.0[m/s]
    旋回速度 {L90deg, 45deg, 135deg, V90deg, 180deg}
      {0.9m/s, 0.89m/s, 0.77m/s, 0.7m/s, 0.7m/s}
4走目:最短走行(MAXパラメータ
    加速度(加速)    13[m/ss]
    加速度(減速)    20[m/ss]
    最高速度 5.0[m/s]
    旋回速度 {L90deg, 45deg, 135deg, V90deg, 180deg}
      {0.9m/s, 0.89m/s, 0.77m/s, 0.7m/s, 0.7m/s}
5走目:タイムアップより走行せず

MAXパラメータで走らせた動画は以下の通りです。

 今回の正確なタイム測定でわかったことがあります。それは、「パラメータを上げてもタイムが良くなるとは限らない」ということ。上記のパラメータで走らせて、一番の好タイムを記録したのは予選の4走目と決勝の3走目でした。MAXパラメータはタイムロスで遅くなっていました。そもそも減速20[m/ss]はタイヤがスリップしている可能性が高いです。ログでは追従していても、路面とグリップしているかは別問題なので監視できません。減速でスリップしても次のターンの時に壁切れ補正で距離が整うので完走は出来てしまいますが、低速時の距離が長くなるので結果的にタイムロスが発生したと考えられます。これについては、壁切れの補正距離を監視してやれば、スリップしている距離の推測ができると思います。今回は旋回速度が極端に遅いため、低速時の距離の増加はタイム的に大きな悪影響を及ぼしたようです。
 補正が悪いような言い方になっていますが、今回の完走率はとても高いものでした。コケたのは予選の3走目のみ。これは壁補正や壁切れ補正のおかげです。完走率を上げるなら旋回の調整よりも補正の調整をした方がいいと思います。

 あともうひとついいですか?
 大会前は験担ぎに二郎系ラーメンに行きましょう(提案)
それでは今シーズンもお疲れさまでした!