ロボットンのDCマウス製作記

マイクロマウス(クラシック)についての備忘録です。

関西地区大会2023の反省

お久しぶりです。mice副部長のr.kです。

7月16日に行われた関西地区大会に参加させていただきました。非常にスムーズで楽しい大会でした。運営に関わった方々に感謝致します。

 

今回は関西地区大会での結果と反省点について述べようと思います。

 

まず、私の大会の成績は

DCマウスでの初めての地区大会で完走することができました。しかし、戻り探索と、最短走行はすべて失敗しました。1走目はゴールにはたどり着きましたが、ゴールから出るところでの連続スラロームで角度がずれて、串に突っ込んで止まってしまいました。2走目以降では最短走行を試みたのですが、まず最初の長い直線の距離がずれていたのか、直線後のターンでクラッシュしてしまいました。

 

このような結果になった反省点を並べてみると

① 部室では5×7の迷路しか走らせず、15マスの長い直線の調整をしなかったこと

② 大会3日前、前日、前々日は修理に追われ、ほとんどコードをいじらなかったこと

③ 最短のパラメータを大回り有りと無しの2つしか用意しなかったこと

④ 大会で2走目以降、探索ではなく、走らない最短を走らせ続けたこと

⑤ 最短で壁切れを入れなかったこと

 

まず①に関しては、大会前はターンの調整ばかりしており、直線の調整はしませんでした。部室の迷路で直線2.5m/sでそこそこ走っていたので大丈夫だろうと思っていました。しかし部室の迷路では直線は長くても6マスくらいだったので、おそらく2m/sも出ていなかったと思います。この反省を踏まえて次の大会までには長い距離走らせて、どれだけずれがあるかを確認したいと思います。

 

大会3日前あたりからマウスの探索中やターンの調整中に急に、マウスが高速回転する現象に悩まされていました。なぜかその場でこの問題について考えずに走らせ続けていたら、さらに前センサーも読めなくなってしまいました。当初自分は前センサーが読めない原因と探索中などに回転する原因がマイコン接触不良であるんじゃないかと思い、マイコン周りの半田付けをやり直したりしました。しかし、何も変わらず、なぜかwhoamiも0になっていました。あまりに分からなかったのでサークルの先輩に助けてもらいました。

 

前センサーが読めなくなっていた原因は半田がクラックしたのか、発光回路の抵抗が導通していたためでした。自分は最初前センサーが読めないのは、発光部でなく受光部が原因だと思っていました。センサのledが光っているかどうかを確認すればよかったのですが、高速で点滅させていたので、スマホの内カメラで見てみても、他のセンサーのledと違いがよく分からず光っていると勝手に思っていました。先輩からアドバイスされ、ledの割り込みでの点滅をやめ、常時点灯させるようにしたら1つだけledが光っていないことがはっきりと分かりました。

 

また、高速回転する原因としてはジャイロの接触不良だったようです。ジャイロのwhoamiをモニターしたら基本は正常値の0x98になっていましたが時々連続して0やffになっていることがありました。ジャイロを指で触ると正常になることがあったので、大会前々日にジャイロの足を温め直すと高速回転しなくなりました。しかしまた高速回転するのが怖かったのでwhoamiの値を監視して、異常だったらフェイルセーフをかけるようにしました。これは実装してよかったです。次の日にマウスを動かそうとしたらフェイルセーフがかかっていたからです。もう一度足を温めたら直りましたが、いつ再発するか分からなかったので大会会場には半田ごてを持って行きました。大会当日では時々マウスにリポをさしてフェイルセーフがかかっていないかを確認していました。

 

これらの反省としてはまず、少しでもマウスが異常な動きをしたら動かすのをやめ、原因を探るべきでした。これをしなかったせいで、どのタイミングで前センサーが壊れたのかが分からず、無駄に時間を消費してしまいました。

 

最短のパラメータを大回り無しと有りの2つしか用意しませんでした。理由としてはこれまで、最短走行のパラメーター選択がなく、前日に機能を実装してバグになるのが嫌だったからです。そもそもそんなに時間がかかる機能でもないのにこれまで、面倒くさがってパラメータを直接書き換えていました。まず、速度を上げたりするよりもパラメータ選択機能を作ることなどを優先させるべきでした。低速パラメータを作っておけば、もう少しよい結果になったんじゃないかと思っています。

 

大会では2走目以降も最短走行を走らせ続けましたが、すべて失敗してしまいました。そもそもパラメータは2つしか作っていなかったので、両方失敗した時点でこれ以上走らせても、成功する確率は低かったと思います。走る可能性の低い最短を走らせるくらいなら、既知区間加速もありますし、もう一度探索を走らせた方がいい結果になったと思います。しかし、大会中はまったく頭が回りませんでした。この反省を踏まえて、これから2走目は重ね探索をさせて、確実に記録を残そうと思います。

 

最短走行での補正は前壁補正のみで、壁切れを入れていませんでした。今回クラッシュした動画を見返してみると、直線の距離が足りず、ターンで引っかかっていた事が分かりました。ターンの前には壁がなかったため、前壁の制御ができず、距離の補正ができませんでした。これは壁切れを入れてさえいれば少なくとも、そこでコケることはなかったと思います。

 

次に今回の大会で良かったことを述べたいと思います。

 

①環境が変わっても安定していたこと

②壁制御はまあまあいい感じだった

③目標にしていた完走をすることができた。

 

去年のステッパーでは大会などで環境が変わるたびに壁センサーのリファレンス値を測り直していました。しかし今回のdcでは一切壁センサーの値をいじらずに、部室にいるときと同じように走ってくれました。

 

壁制御は前に比べるとかなり改善しました。マウス合宿のプチ大会で走らせたときは、壁の切れ目で吸い込まれたり、壁制御と角速度PID制御が干渉したりして、ブルブルと不安定な動きをしていました。部室で閾値をいじったり、壁制御をつける条件を厳しくしたり、AD値そのままで制御するのをやめたりといろいろやりました。その甲斐もあって他の方のdcマウスのような壁制御になったと思います。

 

今回の大会では機体が壊れて前日まで修理していたこともあり、棄権も考えていたので、完走したことはとてもうれしいです。しかし、人間欲がでるもので、マウスを前日あたりに修理していたときは

           完走しなくていいからせめて動いてほしい

                    ↓

                 完走してほしい

                    ↓

                 最短走ってほしい

                    ↓

              maxパラメータで走ってほしい

 

と大会会場でわりと走ってるのをみて、どんどん欲が出てきました。そのため、完走してうれしい気持ちもありますが、最短失敗して悔しい思いも大いにあります。

 

大会の反省としてはこんな感じでしょうか、とりあえず次の大会に向けて開発頑張っていきたいです。夏休みには斜め実装したいです。