目次
- プログラムの概要
- フローチャート
- 備考
- プログラムの概要
これは以前作成した小部屋プログラムが実用的でなかったため、新たに作成した小部屋用のプログラムである。
実用的でない理由としては超音波センサの不正確さがあげられる。
小部屋の壁の一辺にMIRS1003を置き、反対側の壁までの距離を超音波センサで計測したところ、反対側の壁がないときと同じ値を返した。
これだと、以前のアルゴリズムでは壁と出口の区別がつかないので、新たにこのプログラムを作成した。
以下よりこのプログラムの概要を説明する。
このプログラムは小部屋を突破することが目的である。
プログラムは小部屋に入った時点で開始され、引数はなし、返り値はなし、小部屋から通路に侵入した時点で終了する。
このプログラムは、いわゆる「右手法」にのっとって小部屋を突破する。
以下より具体的な突破法について記述する。- すぐ右側に壁がなければ右に旋回し、1マス分直進する。
- 超音波センサで右側に壁があるかどうかを調べながら直進する
壁がなければそこを出口と認識し、右旋回してから6. へ - 前のタッチセンサが壁に当たるまで2. を継続する
- 左に旋回する
- 処理は再度2. へ戻るが、この際、左右の超音波センサによって両側に壁があることを検知したら6. へ
また5. の処理を行うのが5の整数倍回目なら、それは小部屋を一周回ってきたということなので、右側に壁がないと検知しても出口と認識しないことにする - 小部屋を突破、プログラムは終了
- フローチャート
fig.1 フローチャート - 備考
小部屋ではMIRSの走行速度を速く設定しがちだと思うが、- 超音波センサの値取得に支障が出る
- 前方の壁に衝突したときに様々なエラーが起きる
- 蛇足 -
迷路において必勝法ともいえる「右手法」「左手法」だが、実は穴がある。
それは、壁だと思っていたものが実は柱だったときである。
通常の大きさの柱を想像すると当たり前のことだが、柱に沿って歩くと、探検者は柱を一周して元の位置に戻ってくる。
これは大きな柱の場合も同じで、探検者が柱だと認識しようがしまいが、柱に沿って歩くと一周して戻ってくることになり、いつまで経っても出口を発見できない。
この状況は、複数の階を持ち、大きな柱を持つ迷路で発生する可能性がある。
特に、柱が中空になっており、中に階段がある場合に発生しやすく、探検者は十分に注意しなければならない。
もっとも、MIRSには関係のないことだが。