先月(6月11,12日)に行われたマイクロマウス合宿2016に参加しました。マウス合宿の参加報告をしようと思っていたのですが、下書きが消えてしまいました。ここではマウス合宿で行われたプチ大会のみの報告で終わります。

マウス合宿では、クラシックサイズ、ハーフサイズ、ロボトレースのプチ大会が行われました。その中で、私はマイクロマウスのクラシックサイズに参加しました。合宿前は中間テストやレポートなど、マウスどころではない生活を送っていて、合宿前は徹夜でデバッグしました。
デバッグ内容は、
・目標速度に対して出力が負の向きになるバグの修正
・角速度フィードバックの再構築
・再現性のない距離合わせ
・全く思い通りにいかないスラローム
・右手方のモジュールを作ってみるものの前進すらしない。
(当時のTwitterより引用)

抜本的な改良ができたのはよかったのですが、こんな進捗では迷路を走ることすらできません。今書いてて思うのですが、「超信地旋回すらできないのになんでスラローム作ろうとしてるんだよ」ってことです。睡眠時間が足りない中、新しいことをしようとすると失敗する典型的な例ですね。睡眠時間を削って作業をする場合、やっていいことと悪いことが最近わかるようになってきました。睡眠時間が十分ある場合は新しいモジュールの開発、探索アルゴリズム、加減速走行のアルゴリズム等、機体に依存しない基となるアルゴリズムの構成を考えてよくて、睡眠時間を削って作業していい内容は、動くことが保証されたアルゴリズムの上で、距離合わせやゲイン調整、機体に依存するその場しのぎが許される単純な作業のみだと思います。

頭が働かないなか新しいことに挑戦しようとすると、二度手間になる上に、そこにミスがあることに気付かずに今後の調整をしていって、最終的に大規模修正を必要としてしまう場合が考えられます。要するに寝れるときに寝て、早めに動くアルゴリズムを完成させてしまうことです。徹夜デバッグでゲイン調整や距離合わせに時間を使えばいいと思います。

そしてプチ大会の結果ですが、スタートは切れるものの、超信地旋回の動作に入ると暴走してしまいます。それが5回とも続いてリタイヤで終わりました。動画も撮ってません。色々と頑張ってはみましたが、どうにもなりませんでした。この時点で草の根大会まで一カ月を切っています。
みんなクタクタでした。


合宿が終わってよく寝て、マウスの開発を再開しました。
(×するしか ◯するか)
合宿が終わって一週間後のことです。超信地旋回ができるようになりました。しかし、これは45°角加速して45°減速する動作確認の制御をしています。スラロームに使える超信地旋回ではありません。ゲイン調整も殆どやっていないので、音を聞くとわかりますが、ガタガタと発振しています。高校物理の内容を思い出してプログラムしてやれば減速に必要な角度が計算できるので、それを使えばもっと低速の定速で超信地旋回ができるようになります。その実装には時間がかからずにできました。この状態でも超信地旋回で方向を変えられるようにはなったので、迷路を一応走ることはできるようになりました。

八の字走行ができるようになったのは更に2週間後のことです。この頃にはDCモーターの基本的な制御系の構築ができていたと思います。しかし、この時もゲイン調整を怠っていたので角度が合っていません。

いよいよ右手法で迷路を走行できるようになりました。しかし調整が今一で、2,3周で位置がずれて壁の読み間違いで階段走行になったり、すべての方向に壁があると判断したのか超信地旋回が発動したりと滅茶苦茶です。大会までに角速度フィードバックのゲイン調整と、スラローム中にも壁補正を掛けることによって、このコースでも1分程度では体制を崩すことはなくなりました。

そして7月10日にニコラ・テスラ氏の誕生日があり、
その二日後に私の二十歳の誕生日があり、
同日に秋月電子から球根が発売されたり・・・
秋月の球根事件については、こちらの記事に解説が載っていました。


ここからの記事は7月17日に行われた金沢草の根大会の参加報告について書こうと思います。
大会ではなんと、足立法による探索アルゴリズムでゴールにたどり着くことができました。以前から足立法についてはネットで調べていたのですが、どうやってC言語のプログラムにすればいいかとずっと悩んでいました。壁情報の格納方法や未探索と既探索の分け方などを先輩から教えていただき、足立法をなんとか形にできました。
試走会では無事に探索と簡単な最短走行ができることを確認しました。しかし、この時点では加減速走行ができませんでした。ということで・・・
この時点でスラロームが上手いこと行かなくなっています。何故か角速度フィードバックのIゲインをゼロにしていました。ちょっと触ってしまったのだと思うのですが、もう少し派手に触っていればコンパイルエラーで気付けたのですが、うまいことゼロになっていたので気付きませんでした。動きがおかしいことに気付いたのは大会前の短い調整時間でした。試走会ではある程度走れていたのに、当日は4回スラロームしただけで壁に激突してフェイルセーフが発動するような状況に。そのような症状に気付いたのも束の間、迷路を本番用のコースにするために私は退出。試走はできなくなりました。そのまま開会式が始まり、それでも諦めきれずにコードを隈なく探していたらIゲインがゼロになっていることに気付きました。ゲインの小数点以下が消滅していたのです。過去のバックアップデータからIゲインを復活させ、なんとか迷路の公開までにはコードの修正と書き込みを終えることができました。これでちゃんと走ってくれるかは本番で確かめるしかなかったので、変な緊張をしたまま大会に臨みました。

この動画の10:00くらいから私の出走です。
なんとかスラロームができていて安心しました。2走目が一番いいタイムでした。
速度選定については、
直線:10m/ss, 1m/s
スラローム:15deg/ss, 500deg/s, 0.6m/s
このパラメータが今大会の限界でした。加減速走行については、速度を上げるほど減速でスリップしているようで距離が合わなくなります。これは前方の車高が0.5mmしかないため、減速時に前方へ重心が移動することにより、タイヤではなく機体のフロント部分に車重が掛かってしまい、グリップが低下したためと考えられます。実はそのスリップ分も考慮して加減速走行をしていましたが、調整していた床と本番の床にグリップの差があったため、結局壁に当たってしまいました。次の大会では加減速走行も安定させたいです。

今大会までに色々ありましたが、なんとか3位をいただくことができました。ありがとうございます。
CnzB8qSUkAA-ZCk2

それと、副賞としてコロコロ大量セットもいただきました。
Cnko-yxUsAAiP-D
家に犬を飼っているので、掃除機では吸いきれない細かい毛をしっかりと取り除くことができるので結構使えます。もう少し大きいともっとよかったのですが。勿論コースの手入れやタイヤの掃除にも使わせていただきます。ありがとうございました。

大会が終わって部室の迷路で走らせてみました。
やっぱり加速すると直線の距離が合わなくなるようです。これはハードの問題よりもソフトを疑った方がいいかもしれない・・・夏休みにどれだけ進捗を作れるか。


最後に、今後の方針について。
これからやらなければいけないことは、まずはトレーサーの機械設計と基板設計です。これは夏休みが始まったら直ぐに取り掛かろうと思っています。マウスに関しても、色々とハードの設計ミスがあるので、できれば同時に基板発注ができればいいなと思います。全日本大会で吸引も視野に入れての設計を考えています。基板が届くまでに、今の機体でアルゴリズム面を向上させたいです。

それと今年の参加予定の大会もまとめます。
・熱田の森
・草の根
・中部初級者
・中部地区(?)
・全日本大会
これくらいを予定しています。大会が近くなると捗るので、積極的に出場していきたいです。

全日本大会までのマウス、トレースのサクセスレベルを夏休み前に定めておきます。
【マイクロマウス】
・ミニマムサクセス
    そこそこ賢い探索アルゴリズムの実装
・ミッションサクセス
    フレッシュマン3位以内
・フルサクセス
    最短経路を斜め加減速走行してゴールする
・エクストラサクセス
    吸引機構を搭載したマウスを製作して吸引してゴール。

【ロボトレース】
・ミニマムサクセス
  決勝進出
・ミッションサクセス
    2走目以降のプログラム(加減速)をマーカーレスで実装
・フルサクセス
    様々な補正やフィルターの実装
・エクストラサクセス
    決勝コースで加減速してゴールする。

いい結果が出るように、夏休みも頑張っていきます。
夏休みはマウス・トレース以外にも、やりたいことがいっぱいなので楽しみです。