こんにちは、shotaです。
社員研修として、弊社が販売するマイクロマウス[Pi:Co Classic3]を動かしています。
前回はマイクロマウス東日本記録会の結果と、全日本大会に向けてやることについて書きました。
今回は全日本大会に向けてやることの詳細を書きます。
やることリスト
こちらが全日本大会に向けてのやることリストです。リストはGitHubのGistで編集しており、[ここ]に公開しています。
それぞれの項目について詳細を書きます。
全日本大会の申し込みをする
参加登録をしないと参加できません。(例年、登録を忘れて参加できなくなった人がいるようです。)
[こちらのページ]で登録しました。すでに登録締め切り日は過ぎています。
running_maze_Dataflash_usbをベースに新規作成
Pi:Co Classic3のサンプルプログラムには、迷路の壁情報をフラッシュメモリに保存できるものがあります(プログラム名:running_maze_Dataflash_usb)。
東日本記録会ではフラッシュメモリを使っていなかったので、Pi:Coの電源を切ると壁情報も消えていました。このままではPi:Coが暴走したときに電源を切ることもできないので、サンプルプログラムをベースにプログラムを作り直します。
Git管理を開始する
[git]はプログラムの変更履歴を記録・追跡できる分散型のバージョン管理システムです。
gitでPi:Coのプログラムを管理することで、正常に動いた時のプログラムを記録することができます。もし、プログラムを改造してPi:Coが動かなくなったときは、正常に動いた時のプログラムにすぐに戻すことができます。
ほかにもgitの良いところはたくさんあるので、興味のある方は調べてみてください。
迷路情報をフラッシュに保存する
サンプルプログラムに搭載されている機能です。
探索中断処理を入れる
サンプルプログラムでは、探索を終了したとき(ゴールに到着したとき、スタートに戻ったとき)に壁情報を記録します。そのため、ゴールに到着する直前でPi:Coが止まった場合、それまでに手に入れた壁情報がすべて消えてしまいます。
そこで、探索中断処理を追加し、探索途中で止まった場合も壁情報を保存できるようにします。
注意点としては、Pi:Coが暴走したり止まったりした時は、間違った壁情報を記録している可能性があります。その間違った壁情報を消す機能も搭載しなければなりません。
最短走行中断処理を入れる
最短走行中にボタンを押すことで、走行を中断できる機能を追加します。最短走行では壁情報を記録しないので、特別な処理は不要です。
ゴール座標設定モードを追加
ボタン操作でゴール座標を設定できる機能を追加します。練習ではゴール座標を頻繁に変えるので、作業効率が上がります。(今までは座標を変えるたびにプログラムを書き直していました・・・)
直線走行_最高速度設定モードを追加
直線走行_加速度設定モードを追加
マイクロマウス競技では、より短い時間で迷路を走行することが目標です。そのためにはマウスの走行速度や加速度を上げれば良いのですが、いきなり速い速度で走ると失敗する可能性があります。
そこで、最初は安定に走れる速度・加速度で走行し、ゴールにたどり着けたら速度・加速度を上げる、ということをやります。(大会でも、最短走行した後にパラメータを変えてる人を何人か見ました)
センサ閾値半自動設定モードを追加
Pi:Co Classic3は、LEDとフォトトランジスタを組み合わせて壁を検出します。LEDの光が壁に反射し、それをフォトトランジスタで受け取るという仕組みです。
迷路を走る前には、どのぐらい反射光を受け取ると壁があると認識するのか、しきい値を設定しなければなりません。
今のプログラムでは、Pi:CoとPCを接続し、センサの値をPC画面に表示しながらしきい値を決める。そのしきい値をプログラムに書く。という作業が走行前に必要です。
いちいちPCにつなげていると手間なので、センサのしきい値を自動で取得し、フラッシュメモリに保存するモードを追加します。(正確には、ボタン操作が必要になるので半自動です)
探索時、既知の区間を走るときは加速度を上げる
今のプログラムでは、探索走行時に一定の速度・加速度でゆっくり走行します。
すでに探索済みの区間をゆっくり走るのは無駄なので、探索済みの区間は早く走行するようにプログラムを変更します。
マイクロマウス界隈では既知区間加速と呼ぶみたいです。
次回やること
これらの機能を実装します!