名称 MIRS1003 小部屋プログラムについて その2
番号 MIRS1003-SOFT-0007

最終更新日:2011.02.03

版数 更新日 作成 承認 改訂記事
A01 2011.02.03 斎藤秀人 斎藤秀人 初版

目次
  1. プログラムの概要
  2. フローチャート
  3. 備考
目次
  1. プログラムの概要
    これは以前作成した小部屋プログラムが実用的でなかったため、新たに作成した小部屋用のプログラムである。

    実用的でない理由としては超音波センサの不正確さがあげられる。
    小部屋の壁の一辺にMIRS1003を置き、反対側の壁までの距離を超音波センサで計測したところ、反対側の壁がないときと同じ値を返した。
    これだと、以前のアルゴリズムでは壁と出口の区別がつかないので、新たにこのプログラムを作成した。
    以下よりこのプログラムの概要を説明する。

    このプログラムは小部屋を突破することが目的である。
    プログラムは小部屋に入った時点で開始され、引数はなし、返り値はなし、小部屋から通路に侵入した時点で終了する。

    このプログラムは、いわゆる「右手法」にのっとって小部屋を突破する。
    以下より具体的な突破法について記述する。
    1. すぐ右側に壁がなければ右に旋回し、1マス分直進する。
    2. 超音波センサで右側に壁があるかどうかを調べながら直進する
      壁がなければそこを出口と認識し、右旋回してから6. へ
    3. 前のタッチセンサが壁に当たるまで2. を継続する
    4. 左に旋回する
    5. 処理は再度2. へ戻るが、この際、左右の超音波センサによって両側に壁があることを検知したら6. へ
      また5. の処理を行うのが5の整数倍回目なら、それは小部屋を一周回ってきたということなので、右側に壁がないと検知しても出口と認識しないことにする
    6. 小部屋を突破、プログラムは終了

  2. フローチャート

    fig.1 フローチャート

  3. 備考
    小部屋ではMIRSの走行速度を速く設定しがちだと思うが、
    • 超音波センサの値取得に支障が出る
    • 前方の壁に衝突したときに様々なエラーが起きる
    などが予想されるため、あまり速く設定しないほうがいいと思われる。

      - 蛇足 -
    迷路において必勝法ともいえる「右手法」「左手法」だが、実は穴がある。
    それは、壁だと思っていたものが実は柱だったときである。
    通常の大きさの柱を想像すると当たり前のことだが、柱に沿って歩くと、探検者は柱を一周して元の位置に戻ってくる。
    これは大きな柱の場合も同じで、探検者が柱だと認識しようがしまいが、柱に沿って歩くと一周して戻ってくることになり、いつまで経っても出口を発見できない。
    この状況は、複数の階を持ち、大きな柱を持つ迷路で発生する可能性がある。
    特に、柱が中空になっており、中に階段がある場合に発生しやすく、探検者は十分に注意しなければならない。
    もっとも、MIRSには関係のないことだが。

関連文書


沼津工業高等専門学校 電子制御工学科