フェイルセーフを作ろう


EEPROMを積もう

電源をオフにしても迷路情報を覚える仕様にしよう.通常のRAMとは別に,EEPROMを積み,迷路情報のバックアップを取っておこう

クラッシュした後の探索は無効にしよう

クラッシュ後もマウスが暴走し続けると,間違った壁情報を記憶してしまう恐れがある.
クラッシュ・リセットがかかると,自動で過去n秒間の壁検知を無効にしよう.(スタックで覚えれば良い)あるいは,過去nマスの情報を無効にしよう(コーディングはこちらのほうが簡単)

衝突検知

Iゲインが一定以上になることは,衝突を意味する

ぶつけ制御

丁字での注意

斜めになっていると,左右方向のずれが増大する恐れがある

袋小路での注意

横かべにぶつかると,姿勢角度が90度ずれてしまう恐れがある

スラローム走行

曲がりきれないほど深くコーナーに侵入した時は,その場旋回に切り替えよう.例えば,前壁センサーを使って,コーナーに侵入した深さを測定しよう.

補正基準との距離を取ろう

壁ぎれが起きた場合,マウスが記憶している座標ともっとも近い柱が基準柱と判断するようにしよう.(実際より1区画手前の柱と勘違いしないように)

危険区画を覚えよう

探査走行中にクラッシュしたとする.その区画付近は照明の関係で危険な可能性がある

探索アルゴリズムは複数積もう

  • 右手法
  • 左手法
  • 足立法(同一コストなら左回り優先)
  • 足立法(同一コストなら右回り優先)
  • ランダム法(奥の手)

など,複数のアルゴリズムを積もう.クラッシュしやすいゾーンを選びにくいアルゴリズムを選ぶ余地を残しておこう.