今年の振り返りと迷路シミュレータ紹介
この記事はマイクロマウスアドベントカレンダー23日目の記事です。
昨日はhmsnさんの学生大会の報告と今季の取り組みの紹介でした。モーターの音を測定して,逆起電力定数を測定する手法の紹介でした。自分は1717モーターなど,すでに逆起電力定数がデータシートに乗っているようなモーターしか使ったことがないですが,今後データシートがないモータを使う場合に試してみようと思います。
自己紹介
アドベントカレンダーでブログを書くのは初めてなので自己紹介をしたいと思います。
名前 こみ(@krmtnkm)
所属 東京理科大 Mice
学年 B4
参加競技 クラシックマウス
クラシックマウス競技は去年始めて今年で2年目となります。
学生大会の感想
マイクロマウス全日本学生大会に参加させていただきました。運営の工芸大からくり工房の皆さんありがとうございました。
自分の結果はクラシック部門で5位(37台参加)でした。タイムは5.040でした。当初の目標であった吸引走行での最短の成功は達成することはできましたが,長い斜めを走れず大きくロスしたり,せっかく作った1.7m/sパラメータがうまく動いてくれなかったりと悔しい結果となりました。安定性,速度ともにまだまだ学生上位陣には遠そうです。
Miceのほかの方々は,吸引や斜めに手を出していました。後輩も出場してましたが,完走にはなりませんでした。直前は自分のことで手一杯になってしまい,まともに見れず申し訳ありませんでした。また,Miceのトコロ君はいつも通り安定した走りでまだまだ勝てそうにありません。
今年作成した迷路シミュレータについて
去年は探索,最短共に足立法のみだったので,今年はアルゴリズムに本格着手するため迷路シミュレータを作成しました。シミュレータの製作にはDXライブラリを使用しました。
探索走行と最短走行が可能となっています。表示されている壁はボタンになっており,クリックすると壁を立て,もう一度クリックすると壁を消すことができます。
迷路に表示されている数字は歩数マップの数字です。
1ステップごとにマウスを動かすような機能はありませんが,代わりに一時停止でマウスの座標と向いている方角を調べることができます。この機能は探索アルゴリズムのデバックの役に立ちました。
マウスや壁の画像はedgeでテキトーに作成しました。
最短走行の様子です。最短走行ではダイクストラ法を使用しています。
最短時に表示されている数字はノードのコストです。
最短走行では斜め走行ができるようになっています。動きはちょっとかくかくしてますが,ベジェ曲線を使ってターンのアニメーションを作ってみました。
迷路シミュレータを作ってよかった点は新しいアルゴリズムの実装が楽になったことです。部室の迷路は16×7なので,探索はもちろん,最短走行も一本道になってしまいアルゴリズムのデバッグが困難でした。迷路シミュレータを作ってからは,シミュレータ上でいくつか迷路を試してバグがないかを確認してからコードをコピペで実機でも動きました。
シミュレータの今後の機能追加としては,パラメータによってターンの重みを変えて,違う経路になる経路導出をやりたいと思っています。もっと賢いマウスになりたいです。
最後に今年のマウス活動を簡単に振り返ろうと思います。
今年の振り返り
(1~2月)
dcマウスの機械設計を始める。
足回りの雑さは後々後悔することとなる。
(2~3月)
回路の設計を行う。回路設計も雑で様々な問題を引き起こした。
(4月~6月)
機体が完成し,制御のコードを書き始める。また,このあたりから制御のプログラムと並行して,迷路探査シミュレータを作り始めた。
6月には非常に不安定ながら探索を実装することができた。探索のほかにダイクストラ法での経路導出を実装したが,実際に役に立ったのは半年後であった。
また,6月の下旬にはマイクロマウス合宿に参加した。プチ大会で走らせたが,壁制御がブルブルしたり,ターンの角度が毎回違うなどが原因で完走はできなかった。
(7月)
大廻のターンを実装して関西地区大会に参加した。大会三日前に機体を壊したりして,大変だったが,奇跡的に完走することができた。
最短は直進で距離がずれてコケてしまった。大会後は不安定だったスラロームの改善を試みた。かどすべーるを張ったりして角度追従がきれいになったように見えたが気のせいでターンの再現性は低いままだった。
(8月~9月上旬)
金沢草の根大会に向けて無謀にも斜め走行を実装しようとした。
スラロームすらできないのに斜めターンなどできるわけなく,実装はしたものの走るのは3×3の迷路ぐらいだった。
ターンの不安定さを補正で何とかしようと壁切れを頑張ったが,そもそも角度に再現性がなく,数回に一回±10°くらいずれるのでどうしようもなかった。
このころはサークルの部員が爆発的な進捗を生んでいたが,自分はスラロームで詰まっていた。
9月の上旬には金沢草の根大会に参加した。精神と時の部屋では不安定なスラロームを改善するべく,ひたすら角度のゲインをいじっていたが,結局一番最初のゲインに戻ってきて絶望した。
前壁補正と後距離の補正で何とか完走はできたが,最短走行はすべて失敗した。しかし重ねて探索させて記録を残すことはできた。
↑無謀な斜めターン(たぶんin135?)
(9月中旬~10月)
金沢から帰った後にマウスのタイヤを2つ外して走らせてみる。少し角速度の追従がよくなったのでソフトではなく足回りを疑う。
モータマウントの車高を変えて再発注,軸ねじの長さを短くし,ナイロンナット,ホイール,ギアすべて再発注した。
モータマウントを再発注したら精度の問題でナットをはめる穴が小さくなっており圧入しないといけなくなっており,少し焦った。
しかし,足回りを作り直したら,よりスルスルとタイヤが回るようになり,やっとターンの再現性問題が解決した。
原因はあまりよくわかっていないが,軸ねじが長すぎた,ナイロンナットのナイロンが劣化していて固定が不安定だったこと,軸ねじの頭とナットで止める部分の距離が短すぎたことなどが挙げられる。
角速度も多少の振動はあるものの追従するようになり,ターンの再現性が大幅に上がった。ターンがよくなり,やっと斜め走行がある程度走るようになった。10月の初旬には東北地区大会に参加し,斜めで完走することができた。(ターン速 all 0.8 m/s)
(10月~11月)
中部地区大会に向けて吸引の実装を頑張る。ファンを回したら偏心でマウスがものすごく振動してターンどころではなかった。
ファンをゆっくり回すようにしたら振動は収まったが,20~30gくらいしか吸えなかった。
また,ファンを回してたらなぜかファンのfetが焼けるようになった。fetを付けたり外したりしてたら吸引回路のパターンがはがれてファンを回せなくなった。
そのため中部地区大会と東日本地区大会は非吸引で参加した。ただ,このままでは進歩がないので,ターン速を0.8から1.0にした。
(12月)
マウスのスピーカを剥ぎ取り,そこにファンのコネクタをつなぎ,さらにファンをアクリルで発注しなおし,ファンの穴径を圧入前提にしたらようやく振動なく150gくらい吸えるようになった。学生大会に向け吸引ターンを調整しようとするが,吸引すると壁制御が利かなくなる問題が発覚した。
ログを見るとセンサーに吸引のノイズが乗りまくっていた。回路に問題があることが分かったが,再発注している時間はないので平均を取ってごまかした。普通の壁制御は平均でもなんとかなったが,斜めの壁制御はどうしようもなかった。
学生大会では長い斜めがあったため連続斜めの重みを増やして,斜めルートを回避した。最短は成功したものの,長い斜めを走れていればもっとタイムを短縮できたと思う。
ノイズが乗る原因はまだよくわかっていないが,ベタGNDができていないのが怪しいので,ベタを張りなおして再発注する予定
この一年を振り返えると,ひたすらハードで苦戦しているので,来年は今年の反省を踏まえてしっかりした設計を心掛けたいです。
明日はうえぽんさんのマウス0作目のソフト設計のようななにかです。今年はある程度全体のソフト設計を行ってから開発を始めましたが,まだまだ改善点があるので,参考にさせていただきます。