沼津高専 電子制御工学科
MIRS2002 Soft詳細設計書
MIRS0203-Soft-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2003.05.26 MIRS0203's Soft member 小山 初版
A02 2003.06.13 MIRS0203's Soft member 小山 赤外線センサドライバとタッチセンサドライバを修正。

目次

  1. はじめに
  2. 概要
  3. OS(RT-Linux)の概要
  4. 行動モードの詳細
    1. 待機モード
    2. 初期動作モード
    3. ポスト接近モード
    4. 通常獲得モード
    5. 緊急獲得モード
    6. 周回探索モード
    7. ロストモード
    8. 緊急回避モード
    9. 試験モード
    10. 修正タスク
  5. プログラム群の構成
  6. プログラム群の詳細
  7. 試験

  1. はじめに
  2. 概要
  3. OS(RT-Linux)の概要
  4. 行動モードの詳細
    1. 待機モード
        1. モード定義
          電源が入った後,キーボード入力を受け付ける。 ポストの数を入力する。データを初期化する。
        2. モード遷移条件
          メインプログラム開始と同時に遷移。

    2. 初期動作モード
        1. モード定義
          超音波センサを使用しながら競技場中心付近のポストのない位置へ移動する。移動後、自転してポストの距離とポスト間の角度を計測(計算)。ポスト間の距離を計算。一番近いポストの方向に向く。
        2. モード遷移条件
          1回目協議開始時のテンキーからの入力。初期動作モードより遷移し、緊急回避モード終了時。

    3. ポスト接近モード
        1. モード定義
          前方へ向けた超音波センサ(3個)、赤外線センサとロータリーエンコーダを使用しポストに接近。設定距離以内に接近後にMIRS前面に設置した赤外線センサが反応した場合、緊急獲得モードへ移る。そうでなければ前面部タッチセンサがぶつかるまで直進後、通常獲得モードへ遷移する。
        2. モード遷移条件
          初期動作終了、周回探索モードで次に向かうべきポストを確認、ロストモード現在地より最も近いポスト発見時、ポスト接近モードより遷移し、緊急回避モード終了時。

    4. 通常獲得モード
        1. モード定義
          タッチセンサを用いポストの中心を見つけて5cm後退する。左に90度回転。時計回りにポストを周回する。そして、MIRS右側に設置した赤外線センサによりスイッチの探索を行う。発見したスイッチが獲得すべき番号であれば獲得する。獲得確認後ポストから5cm後退する。左へ90度回転する。
          360度以上周回してもスイッチが発見されないときはもう一度ポストの中心を見つけ5cm後退、左へ90度回転する。
        2. モード遷移条件
          ポスト接近後タッチセンサに反応。

    5. 緊急獲得モード
        1. モード定義
          前方のスイッチが獲得すべき番号ならばそのまま前進、獲得する。獲得確認後、ポストの中心を見つけ5cm後退、左へ90度回転。
          獲得すべき番号でなければスイッチを回避してポストにぶつかり中心を見つけ5cm後退、左へ90度回転する。
        2. モード遷移条件
          ポスト接近時に前方赤外線センサが反応。

    6. 周回探索モード
        1. モード定義
          ポスト獲得モードよりこのモードに移る。ポストを(400度)周回し、MIRSの左方向に向けた超音波センサでポスト間の距離を測定。データを処理して、次に向かうポストを決定する。ポストをさらに周回して目標ポストを確認し、前方に向けた真中の超音波センサで目標ポストを確認するまで左へ回転する。
        2. モード遷移条件
          緊急獲得モード終了後、通常獲得モード終了後。

    7. ロストモード
        1. モード定義
          ポスト接近モード中にポストを見失ったとき、MIRS前方で近くにあるポストを目標に定めるためのモード。
          また、これを2回目の競技の初期動作モードとして使う。
        2. モード遷移条件
          2回目競技開始時のテンキーからの入力、目標ポストを見失った場合。

    8. 緊急回避モード
        1. モード定義
          目標以外のポストの接近に対して回避行動をとる。その後方向と距離を修正、もとのモードに復帰する。
        2. モード遷移条件
          初期動作モード、ポスト接近モードでMIRS進行方向にポストがあった場合。

    9. 終了モード
        1. モード定義
          全ポスト獲得後に,データの記憶などの終了処理を行う・・・・・・・。
        2. モード遷移条件
          緊急獲得モード、通常獲得モードですべてのポスト回収後。

    10. 試験モード
        1. モード定義
          各モード、モジュール等の動作チェックのためのモード。
        2. モード遷移条件
          二回目のポスト探索モード終了後に遷移。

  5. プログラム群の構成
  6. モード、モジュール、ユーザプログラム、RTタスク、デバイスドライバ、ヘッダファイルなど、全てのプログラム間の依存関係などがわかるように、その構成の全体を表す。

  7. プログラム群の詳細
    1. モードモジュール
      1. 待機モード
        1. 構成要素
        2. 関数名:wait
        3. 引数:なし
        4. 戻り値:amode(currentmode),bmode(nextmode)
        5. アルゴリズム(フローチャート)
      2. 初期動作モード
        1. 構成要素
          ・超音波センサAPI、赤外線センサAPI、タッチセンサAPI、直進モジュール、回転モジュール、正対判別モジュール
        2. 関数名:special
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      3. ポスト接近モード
        1. 構成要素
          ・超音波センサAPI、赤外線センサAPI、タッチセンサAPI、直進モジュール
        2. 関数名:approach
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      4. 通常獲得モード
        1. 構成要素
          ・ポスト番号判別モジュール、回転モジュール、ポスト周回モジュール、タッチセンサAPI、中心判別モジュール
        2. 関数名:nomal_win
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      5. 緊急獲得モード
        1. 構成要素
          ・ポスト番号判別モジュール、回転モジュール、ポスト周回モジュール、タッチセンサAPI、赤外線センサAPI、中心判別モジュール
        2. 関数名:emergency_win
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      6. 周回探索モード
        1. 構成要素
          ・目標ポスト決定モジュール、回転モジュール、ポスト周回モジュール、正対判別モジュール、位置確認モジュール
        2. 関数名:search
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      7. ロストモード
        1. 構成要素
          ・回転モジュール、超音波センサAPI
        2. 関数名:lost
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      8. 緊急回避モード
        1. 構成要素
          ・直進モジュール、回転モジュール
        2. 関数名:avoid
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
      9. 終了モード
        1. 構成要素
        2. 関数名:end
        3. 引数:なし
        4. 戻り値:amode,bmode
        5. アルゴリズム(フローチャート)
    2. 機能モジュール
         
      1. 位置確認モジュール
        1. 機能
          ・周回探索モードで得たポストデータより、MIRSの周回したポストに対する認識が正しいか確認、間違っていたら修正する。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・なし
        3. このモジュールが使用されるモード
          ・周回探索モード
        4. 関数名
          ・position
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      2. ポスト番号判別モジュール
        1. 機能
          ・ポスト番号を判別するための関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・赤外線センサ
        3. このモジュールが使用されるモード
          ・通常獲得モード、緊急獲得モード
        4. 関数名
          ・post_no_jadge
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      3. 目標ポスト決定モジュール
        1. 機能
          ・ポストデータより次の目標ポストを決定するための関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・なし
        3. このモジュールが使用されるモード
          ・周回探索モード
        4. 関数名
          ・next_post_mod
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      4. 中心判別モジュール
        1. 機能
          ・ポストの中心を見つけるための関数郡。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・タッチセンサ、PWM/エンコーダ
        3. このモジュールが使用されるモード
          ・通常獲得モード、緊急獲得モード
        4. 関数名
          ・center_mod
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
         
      5. 回転モジュール
        1. 機能
          ・ロータリーエンコーダを用いて MIRS を指定した角度、回転方向、速度でその場で回転させる関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・PWM/エンコーダ
        3. このモジュールが使用されるモード
          ・初期動作モード、通常獲得モード、緊急獲得モード、緊急回避モード、ロストモード
        4. 関数名
          ・turn_mod
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      6. 直進モジュール
        1. 機能
          ・指定した距離、または特定条件を満たすまで直進(後進)させる関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・PWM/エンコーダ
        3. このモジュールが使用されるモード
          ・すべてのモードで使用
        4. 関数名
          ・straight_mod
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      7. ポスト周回モジュール
        1. 機能
          ・指定した角度、または特定条件を満たすまでポストを周回させる関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・PWM/エンコーダ
        3. このモジュールが使用されるモード
          ・通常獲得モード、緊急獲得モード、周回探索モード
        4. 関数名
          ・around_post
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
          ・省略
      8. 正対判別モジュール
        1. 機能
          ・MIRS(超音波センサ)とポストが正対した時を判別するための関数群。
        2. 構成要素 補助関数、RT タスク、デバイスドライバ
          ・超音波センサ
        3. このモジュールが使用されるモード
          ・ポスト接近モード、緊急回避モード、周回探索モード
        4. 関数名
          ・toword_post
        5. 引数
          ・なし
        6. 戻り値
          ・amode,bmode
        7. アルゴリズム(フローチャート)
    3. RT タスクモジュール
      1. 超音波センサRTタスクモジュール
        1. このRTタスクモジュールがされるモード、機能モジュール
          初期動作モード、ポスト接近モード、周回探索モード、ロストモード、緊急回避モード、正対判別モジュール
        2. 構成要素 関数モジュール
        3. 関数名
        4. 優先度
        5. FIFO の仕様
        6. アルゴリズム
          *構成要素、関数モジュール、関数名、優先度、FIFOの使用、アルゴリズムはMIRS標準APIと同じである。
      2. PWM・ロータリエンコーダRTタスクモジュール
        1. 機能
        2. このRTタスクモジュールがされるモード、機能モジュール
          初期動作モード、ポスト接近モード、通常獲得モード、緊急獲得モード、周回探索モード、ロストモード、緊急回避モード、中心判別モジュール、回転モジュール、直進モジュール、ポスト周回モジュール、正対判別モジュール
        3. 構成要素 関数モジュール
        4. 関数名
        5. 優先度
        6. FIFO の仕様
        7. アルゴリズム
          *構成要素、関数モジュール、関数名、優先度、FIFOの使用、アルゴリズムはMIRS標準APIと同じである。
    4. デバイスドライバ
      1. LCDドライバ(MIRS標準APIを使用)
        1. 機能
          ・MIRS0203に搭載されるLCDへの表示を行う。
        2. このドライバ使用されるモード、モジュール
          ・すべてのモード、モジュール。
        3. 関数名
        4. IO アドレス、IRQ
        5. アルゴリズム
          ・関数名、IOアドレス、IRQ、アルゴリズムに関してはリンク先を参照。
      2. タッチセンサドライバ
        1. 機能
          ・MIRS0203に搭載されるタッチセンサ、パワー信号のON/OFFを調べる。
        2. このドライバ使用されるモード、モジュール
          通常獲得モード、緊急獲得モード、中心判別モジュール
        3. 関数名
        4. 引数、戻り値
        5. アルゴリズム
          *関数名、IOアドレス、IRQ、アルゴリズムに関してはリンク先を参照。
          タッチセンサ
      3. 赤外線ドライバ
        1. 機能
          ・MIRS0203に搭載されるタ赤外線センサ、パワー信号のON/OFFを調べ、またポストより発せられているコードの判別を行う。
        2. このドライバ使用されるモード、モジュール
          通常獲得モード、緊急獲得モード、中心判別モジュール
        3. 関数名
          ・irs_driver
        4. 引数、戻り値
          ・引数:なし
          ・戻り値:post_no
        5. アルゴリズム
          ・FPGAより赤外線センサのパワーのON/OFFを調べ、ONならそこの赤外線センサよりFPGAが処理したPostNo.を取得、戻り値としてそれを返す。
    5. ヘッダファイルの詳細
      1. 定数ヘッダ
        1. 機能
          ・さまざまな関数における規定値を記すヘッダファイル。
        2. このヘッダファイルを利用するモード、機能モジュール、ドライバ、RTタスクなど
          ・ほぼすべてのモード、モジュール、ドライバ、RTタスクで使用予定。
        3. ヘッダ名
          ・define.h
        4. 定義する変数
          ・なし

    6. 試験
      1. モード、機能モジュール単体試験
      2. 標準MIRS上での試験
      3. 実機上での試験
      目次へ

      関連文書