名称 MIRS1101 標準機ソフトウェア詳細設計書
番号 MIRS1101-SOFT-0001

最終更新日:2011.7.21

版数 最終更新日 作成 承認 改訂記事
A01 2011.7.21 望月麟太郎、村松茂 初版

本ドキュメントは、MIRS1101の戦略・アルゴリズム設計について記したドキュメントである。

目次

  1. 動作仕様

  1. 動作仕様

    1. 通路通過中の動作
    2. T字路攻略中の動作
    3. 小部屋攻略中の動作
    4. ロータリー攻略中の動作
    5. 鍵・扉攻略中の動作

    並列動作の検討

    機体の制御などを受け持つmainタスクのほかに、各種sensorを制御するsensor監視タスクを設ける。
    sensor監視タスクは、超音波センサおよびタッチセンサ、白線センサ、ロータリーエンコーダの値を常に共通変数へ書き込む。
    ロータリーエンコーダの値をリセットするときのみ、mainタスクからsensor監視タスクへ指令が出る。
    mainタスクは共通変数の値を読むことで常に最新の各種センサの状態を知ることができる。

    1. 通路走行中の動作
      概要

      1. 左側と正面の超音波センサを用いて、左側と正面の壁の有無を確認しながら、左側の壁に沿って前進する。⇒2.または3.へ
      2. 左側、正面ともに壁があるときは進路を右にとる。⇒1.へ
      3. 左側に壁がなければ左折する。⇒1.へ
      4. 走行中は常に白線センサをチェックし、白線が認識されればT字路動作、白床ならゴール動作へ移行する。

      詳細

      • ◎左向きの超音波センサで左側の壁との距離を確認:(a1)
      • ―左側の壁が近くにない場合
        • ロータリーエンコーダを利用して25cm直進する。
        • 左方向に90°回転
        • ロータリーエンコーダを利用して直進:(a2)
        • ◎白線を認識したか
        • ―認識した場合
          • 白線か、白床かを確かめる。
          • 白線ならT字路動作、白床ならゴール動作に移行する。
        • ―認識しない場合
          • ◎1ブロック分前進したか
          • ―前進していない場合
            • ⇒(a2)へ
          • ―前進した場合
            • ⇒(a1)へ
      • ―左側の壁が近くにある場合
        • ◎正面の超音波センサで、正面に壁が迫っているかを確認
        • ―正面が開けている場合
          • ◎白線を認識したか
          • ―認識した場合
            • 白線か、白床かを確かめる。
            • 白線ならT字路動作、白床ならゴール動作に移行する。
          • ―認識しない場合
            • 左側の壁沿いに前進する。
        • ―正面に壁が迫っている場合
          • 正対補正
          • ロータリーエンコーダを利用して直進:(a3)
          • ◎白線を認識したか
          • ―白線を認識した場合
            • 白線か、白床かを確かめる。
            • 白線ならT字路動作、白床ならゴール動作に移行する。
          • ―認識しない場合
            • ◎正面の壁と機体中央の距離が25cmになったか
            • ―なっていない場合
              • ⇒(a3)へ
            • ―なっている場合
              • 右方向に90°回転
              • ◎正面の超音波センサで進路が開けているか確認
              • ―壁が正面のすぐ近くにある場合
                • 右方向へ90°回転
                • ⇒(a1)へ
              • ―前方に進路がある場合
                • ⇒(a1)へ
    2. T字路攻略中の動作
      概要

      1. 白線まで下がる。⇒2.へ
      2. DBへ正対し、画像取得、数字認識処理を行う。
        数字が正しく認識されなければもう一度2.を行い、正しく認識できれば⇒3.へ
      3. 攻略する仕掛け、進路を選択し、選択した仕掛け攻略動作または通路走行に移行する。

      詳細

      • 後退:(b1)
      • ◎白線を認識できたか
      • ―白線が認識できない場合
        • ⇒(b1)へ
      • ―白線を認識した場合
        • 走行停止
        • 正対補正:(b2)
        • 画像を取得、数字認識処理
        • ◎数字が2つ認識できたか確認
        • ―数字が認識できなかった場合
          • ⇒(b2)へ
        • ―数字が正しく認識できた場合
          • 攻略する仕掛け、進路を選択する
          • 選択した各仕掛け攻略動作へ移行する。
    3. 小部屋攻略中の動作
      概要

      1. 左側と正面の超音波センサを用いて、左側と正面の壁の有無を確認しながら、左側の壁に沿って前進する。⇒2.または3.へ
      2. 左側、正面ともに壁があるときは進路を右にとる。⇒1.へ
      3. 左側に壁がなければ左折する。⇒1.へ
      4. 走行中は常に白線センサをチェックし、白線が認識されれば通路走行へ移行する。

      詳細

      • ◎左向きの超音波センサの値がある範囲におさまっているか:(c1)
      • ―おさまっている(壁沿いにいる)場合
        • ◎正面の超音波センサで壁の接近を確認
        • ―正面の壁が遠い場合
          • ◎白線を検知したか
          • ―白線を検知した場合
            • 通路走行へ移行する。
          • ―白線を検知していない場合
            • 左側の壁との距離を一定に保ちながら前進
            • ⇒(c1)へ
        • ―正面の壁が近い場合
          • 左側の壁との距離を一定に保ちながら前進:(c2)
          • ◎正面の壁と機体中央の距離が25cmになったか
          • ―25cmになっていない場合
            • ◎白線を検知したか
            • ―検知した場合
              • 通路走行へ移行する。
            • ―検知していない場合
              • ⇒(c2)へ
          • ―25cmになった場合
            • 右方向に90°回転
            • ⇒(c1)へ
      • ―左側に壁がない場合
        • 25cm、ロータリーエンコーダを利用して直進する。
        • 左方向に90°回転する。
        • ロータリーエンコーダを利用して直進する:(c3)
        • ◎白線を検知したか
        • ―検知した場合
          • 通路走行に移行する
        • ―検知していない場合
          • ◎1ブロック分進行したか
          • ―進行していない場合
            • ⇒(c3)へ
          • ―進行した場合
            • ⇒(c1)へ
    4. ロータリー攻略中の動作
      概要

      1. 左側と正面の超音波センサを用いて、左側と正面の壁の有無を確認しながら、左側の壁に沿って前進する。⇒2.または3.へ
      2. 左側、正面ともに壁があるときは進路を右にとる。⇒1.へ
      3. 左側に壁がなければ右を向き、正面の超音波センサを用いて右側の壁の有無を確認する。⇒4.または5.へ
      4. 右側に壁があれば進路を左にとる。⇒1.へ
      5. 右側にも壁がなければロータリーに進入していると判断する。
        進路を左にとり、左側の超音波センサを用いて左側の壁の有無を確認しながら、左側の壁に沿ってロータリーを周回する。
        左側の壁がなければ、そこからロータリーを脱出する。⇒1.へ
      6. 走行中は常に白線センサをチェックし、白線が認識されれば通路走行へ移行する。

      詳細

      • ◎左向きの超音波センサで壁の有無を確認:(d1)
      • ―左側の壁がある場合
        • ◎正面の超音波センサで正面の壁の接近を確認
        • ―正面に壁が無い場合(進路は前方)
          • ◎白線認識の確認
          • ―白線認識した場合
            • 通路走行へ移行する。
          • ―白線認識しない場合
            • 壁沿いに走行する。
            • ⇒(d1)へ
        • ―正面に壁がある場合(進路は右)
          • 前進:(d2)
          • ◎白線認識の確認
          • ―白線認識した場合
            • 通路走行へ移行する。
          • ―白線認識しない場合
            • ◎壁と機体中央との距離が25cmになったか
            • ―25cmになっていない場合
              • ⇒(d2)へ
            • ―25cmになった場合
              • 右方向へ90°回転する。
              • ⇒(d1)へ
      • ―左側の壁が無い場合
        • 15cm前進
        • 右方向へ90°回転する。
        • ◎正面の超音波センサで壁の有無を確認
        • ―右側に壁がある場合(進路は最初の左)
          • 180°回転する。
          • 前進する。:(d3)
          • ◎白線認識の確認
          • ―白線認識した場合
            • 通路走行へ移行する。
          • ―白線認識しない場合
            • ◎1ブロック分前進したか確認
            • ―1ブロック分前進していない場合
              • ⇒(d3)へ
            • ―1ブロック分前進した場合
              • ⇒(d1)へ
        • ―右側に壁が無い場合(ロータリーに進入している)
          • 180°回転する。
          • 一定長さ前進する。
          • ◎左向きの超音波センサで壁の有無を確認:(d4)
          • ―左側の壁がある場合
            • 壁沿いに前進する。
            • ⇒(d4)へ
          • ―左側の壁がある場合
            • 一定長さ前進する。
            • 左方向に90°回転する。
            • 前進する。:(d5)
            • ◎白線認識の確認
            • ―白線認識した場合
              • 通路走行へ移行する。
            • ―白線認識しない場合
              • ◎1ブロック分前進したか確認
              • ―1ブロック分前進していない場合
                • ⇒(d5)へ
              • ―1ブロック分前進した場合
                • ⇒(d1)へ
    5. 鍵・扉攻略中の動作
      概要

      1. 鍵の方向を向き、鍵を押すまで(タッチセンサが反応するまで)前進する。⇒2.へ
      2. 壁に接触しないよう、後退し180°回転する。
        正面の超音波センサを用いて扉が開いているか確認する。
        扉が開いていれば⇒3.へ。開いていなければ180°回転し、⇒1.へ
      3. 開いている扉の前まで前進し、通路走行へ移行する。

      詳細

      • 鍵の方向へ回転
      • 前進:(e1)
      • ◎鍵を押すか
      • ―鍵を押していない場合
        • ⇒(e1)へ
      • ―鍵を押した場合
        • 180°回転
        • 正面の壁に正対補正をかけながら前進:(e2)
        • ◎壁が正面に迫っているか正面の超音波センサで確認
        • ―壁が迫っていない場合
          • ⇒(e2)へ
        • ―壁が迫っている場合
          • 正面の壁と期待中央の距離が25cmになるよう正対補正をかけながら前進
          • ◎左向きの超音波センサで左側のすぐ近くに壁があるか確認
          • ―左側が開けている場合
            • 左方向に90°回転
            • 1ブロック分前進し、通路走行へ移行する。
          • ―左側に壁がある場合
            • 右方向に90度回転
            • ◎正面の超音波センサで進路があいているか確認
            • ―進路があいている場合
              • 1ブロック分前進し、通路走行へ移行する。
            • ―壁がある場合(袋小路:まだ扉が開いていない)
              • 右方向に90°回転(鍵の方向を向く)
              • ⇒(e1)へ

    ▲上へ


MIRS1101 ドキュメント管理台帳へ

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