沼津高専 電子制御工学科
MIRS0205 Software詳細設計書
MIRS0205-SOFT-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2003.05.27
若林 齋藤
初版
A02 2003.06.13
齋藤 齋藤
指摘点の改正


目次

  1. はじめに
  2. 概要
  3. OS(RT-Linux)の概要
  4. 行動モードの詳細
  5. プログラム群の詳細
    1. モードモジュール
      1. 待機モード
      2. ポスト検索モード
      3. ポスト接近モード
      4. ポスト番号認識モード
      5. ポスト獲得モード
      6. 基本走行ライン復帰モード��
      7. 基本走行ライン復帰モード��
      8. ポスト回避モード
      9. ポスト間移動モード
      10. 緊急モード
      11. バックアップモード
      12. 勝利モード
      13. お手上げモード
      14. 総合試験モード
    2. 機能モジュール
      1. 直進モジュール
      2. 自転モジュール
      3. 公転モジュール
      4. 赤外線受信モジュール
      5. 電磁弁開閉モジュール
      6. 白線検知モジュール
      7. タッチセンサ検知モジュール
      8. PSDモジュール
      9. 総合試験モジュール
    3. RTタスクモジュール
      1. PWM・RE RTタスクモジュール
    4. デバイスドライバ
      1. 赤外線センサドライバ
      2. タッチセンサドライバ
      3. LCDドライバ
      4. 白線検知ドライバ
  6. 試験
    1. モード、機能モジュール単体試験
    2. 実機上での試験
      1. モード
      2. 機能モジュール

  1. はじめに
  2.  本ドキュメントは、MIRS0205基本設計書(MIRS0205-DSGN-0003)に規定されたシステムの動作規定、状態遷移を実現する各タスクの開発(コーディング、試験等)に必要な事項を述べる。


  3. 概要
  4.  MIRS0205ソフトウェアは、RT-Linux上で動作するプログラム群で構成される。 プログラムは、Linux の標準のAPIとともに、行動モードに対応したプログラム、一つの機能を複数のプログラム群で提供する機能モジュール、およびRTタスク、ドライバと、補助関数と独自に定義したヘッダファイルから構成される。
    本MIRSでは、行動モードに対応した14個のモードモジュールを用意する。

     IO制御は駆動系の制御と白線感知をRTタスクとして駆動させ、赤外線・タッチセンサ信号入力探知とLCD出力はデバイスドライバを用いて行う。 デバイスドライバは標準APIのデバイスドライバを利用する。


  5. OSの概要
  6. 詳しくは ソフトウェア調査報告書を参照する。
     RT-Linuxは標準のLinux環境でのプログラムの開発ができ、フラッシュメモリ上に保存可能などの理由からMIRSの開発に適している。


  7. 行動モード詳細
    1. モード

      1. 待機モード
        • モード定義
          メインプログラムを立ち上げ、スタートスイッチが押されるまでの待機状態に入るモード。
        • モード遷移条件
          • スタートボタン押下 → ポスト検索モード

      2. ポスト検索モード
        • モード定義
          PSDから赤外線を出しながら、基本走行ライン上を前進し、MIRS周辺にポストがないか検索するモード。
        • モード遷移条件
          • 側面にポスト発見 → ポスト接近モード
          • 進行方向にポスト発見 → ポスト番号認識モード
          • 最後のポストを確認 → ポスト間移動モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 競技時間終了直前 → お手上げモード

      3. ポスト接近モード
        • モード定義
          MIRSの正面をポストの中心に向け、ポストとの距離が50mmになるまで直進するモード。
        • モード遷移条件
          • ポストとの距離が50mm → ポスト番号認識モード
          • 白線を検知 or TSが反応 → 緊急モード

      4. ポスト番号認識モード
        • モード定義
          MIRS本体が右に回転し、左側面をポストの中心に向け、ポストとの距離を50mmに保ちながらポストの周りを反時計回りで回る。その際、MIRS本体の左側面に設置した赤外線センサでそのポストの赤外線を受信し、赤外線の番号を記録するモード。
        • モード遷移条件
          • 獲得可能ポスト → ポスト獲得モード
          • 獲得不可ポスト(ポスト接近モードを経て来た場合) → 基本走行ライン復帰モード��
          • 獲得不可ポスト(ポスト接近モードを経ていない場合)→ 基本走行ライン復帰モード��
          • 白線を検知 or TSが反応 → 緊急モード

      5. ポスト獲得モード
        • モード定義
          MIRSの左側面をポストのスイッチがある部分に向け、エアシリンダーを使いスイッチを押す。そして確実にポストを獲得できたかをタッチセンサと赤外線センサを使い確認するモード。
        • モード遷移条件
          • 獲得確認(ポスト接近モードを経て来た場合) → 基本走行ライン復帰モード��
          • 獲得確認(ポスト接近モードを経ていない場合) → 基本走行ライン復帰モード��
          • 獲得確認(ポスト間移動モードを経て来た場合) → ポスト間移動モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 獲得確認できず → バックアップモード
          • 全てのポストを獲得 → 勝利モード

      6. 基本走行ライン復帰モード��
        • モード定義
          ポスト接近モードを経て来た場合で基本走行ラインに戻るモード。
        • モード遷移条件
          • 復帰した → ポスト検索モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 競技時間終了直前 → お手上げモード

      7. 基本走行ライン復帰モード��
        • モード定義
          ポスト接近モードを経ていない場合で基本走行ラインに戻るモード。
        • モード遷移条件
          • 復帰した → ポスト検索モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 競技時間終了直前 → お手上げモード

      8. ポスト回避モード
        • モード定義
          ポストとの距離50mmまで近づき、ポストをまわる距離が短くて済む方にMIRSを回転させ、ポストと50mmの距離を保ったままポストの周りを回り、本来の進路に戻るモード。
        • モード遷移条件
          • 回避した → ポスト間移動モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 競技時間終了直前 → お手上げモード

      9. ポスト間移動モード
        • モード定義
          今MIRS本体がいる場所から次に獲得すべきポストに向かって、直線に進行するモード。
        • モード遷移条件
          • 目標ポストに到達 → ポスト番号認識モード
          • 進行方向に獲得不可ポストが存在する → ポスト回避モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 競技時間終了直前 → お手上げモード

      10. 緊急モード
        • モード定義
          走行時に白線を検知したら。またはMIRS前部、後部のタッチセンサが押されたらもう一度最初からやり直すモード。
        • モード遷移条件
          • スタート可能地点に帰還 → ポスト検索モード
          • 競技時間終了直前 → お手上げモード

      11. バックアップモード
        • モード定義
          エアシリンダーがうまく作動しないときにMIRSが前面でスイッチを押すモード。
        • モード遷移条件
          • 獲得確認(ポスト接近モードを経て来た場合) → 基本走行ライン復帰モード��
          • 獲得確認(ポスト接近モードを経ていない場合) → 基本走行ライン復帰モード��
          • 獲得確認(ポスト間移動モードを経て来た場合) → ポスト間移動モード
          • 白線を検知 or TSが反応 → 緊急モード
          • 全てのポストを獲得 → 勝利モード

      12. 勝利モード
        • モード定義
          フィールド上の全てのポストを獲得したときにアピールするモード。 
        • モード遷移条件
          • なし

      13. お手上げモード
        • モード定義
          終了10秒前に、残りのポストの獲得が不可能な場合にアピールするモード。
        • モード遷移条件
          • なし

      14. 総合試験モード
        • モード定義
          試験走行用のモードで各種試験を行うモード。
        • モード遷移条件
          • なし

  8. プログラム郡の詳細
    1. モードモジュール
      1. 待機モード
        • 構成要素
          なし
        • 関数名:wait()
        • アルゴリズム(フローチャート)

      2. ポスト検索モード
        • 構成要素
          直進モジュール、自転モジュール、タッチセンサ検知モジュール、
          白線検知モジュール、PSDモジュール
        • 関数名:search()
        • アルゴリズム(フローチャート)

      3. ポスト接近モード
        • 構成要素
          直進モジュール、自転モジュール、赤外線受信モジュール、
          タッチセンサ検知モジュール、白線検知モジュール、PSDモジュール
        • 関数名:near()
        • アルゴリズム(フローチャート)

      4. ポスト番号認識モード
        • 構成要素
          自転モジュール、公転モジュール、赤外線受信モジュール、
          タッチセンサ検知モジュール、白線検知モジュール、PSDモジュール
        • 関数名:number()
        • アルゴリズム(フローチャート)

      5. ポスト獲得モード
        • 構成要素
          電磁弁開閉モジュール、赤外線受信モジュール、タッチセンサ検知モジュール、
          白線検知モジュール
        • 関数名:get()
        • アルゴリズム(フローチャート)

      6. 基本走行ライン復帰モード��
        • 構成要素
          直進モジュール、自転モジュール、公転モジュール、
          タッチセンサ検知モジュール、白線検知モジュール、PSDモジュール
        • 関数名:return1()
        • アルゴリズム(フローチャート)

      7. 基本走行ライン復帰モード��
        • 構成要素
          直進モジュール、自転モジュール、公転モジュール、
          タッチセンサ検知モジュール、白線検知モジュール、PSDモジュール
        • 関数名:return2()
        • アルゴリズム(フローチャート)

      8. ポスト回避モード
        • 構成要素
          自転モジュール、公転モジュール、タッチセンサ検知モジュール、
          白線検知モジュール、PSDモジュール
        • 関数名:escape()
        • アルゴリズム(フローチャート)

      9. ポスト間移動モード
        • 構成要素
          直進モジュール、自転モジュール、タッチセンサ検知モジュール、
          白線検知モジュール、PSDモジュール
        • 関数名:cross()
        • アルゴリズム(フローチャート)

      10. 緊急モード
        • 構成要素
          直進モジュール、自転モジュール、公転モジュール、
          タッチセンサ検知モジュール、白線検知モジュール、PSDモジュール
        • 関数名:warning()
        • アルゴリズム(フローチャート)

      11. バックアップモード
        • 構成要素
          直進モジュール、自転モジュール、赤外線受信モジュール、
          タッチセンサ検知モジュール、白線検知モジュール
        • 関数名:backup()
        • アルゴリズム(フローチャート)

      12. 勝利モード
        • 構成要素
          直進モジュール、自転モジュール、公転モジュール、電磁弁開閉モジュール、
        • 関数名:victory()

      13. お手上げモード
        • 構成要素
          直進モジュール、自転モジュール、公転モジュール、電磁弁開閉モジュール、
        • 関数名:give-up()

      14. 総合試験モード
        • 構成要素
          全ての機能モジュール
        • 関数名:exam()

    2. 機能モジュール
      1. 直進モジュール
        • 機能
          MIRSを直進させるモジュール。
        • 使用されるモード
          ポスト検索モード、ポスト接近モード、基本走行ライン復帰モード� �
          基本走行ライン復帰モード�◆▲櫂好抜岼榮哀癲璽鼻�緊急モード、バックアップモード、
          勝利モード、お手上げモード、総合試験モード
        • 構成要素
          PWM・RE RTタスクモジュール、LCDドライバ
        • 関数名:m-go()

      2. 自転モジュール
        • 機能
          MIRSを指定した角度、その場で回転させるモジュール。
        • 使用されるモード
          ポスト検索モード、ポスト接近モード、ポスト番号認識モード、基本走行ライン復帰モード� �
          基本走行ライン復帰モード�◆▲櫂好伐麋鬟癲璽鼻▲櫂好抜岼榮哀癲璽鼻�緊急モード、
          バックアップモード、勝利モード、お手上げモード、総合試験モード
        • 構成要素
          PWM・RE RTタスクモジュール、LCDドライバ
        • 関数名:m-rot()

      3. 公転モジュール
        • 機能
          MIRSを指定された半径の円の円周上を弧を描き進ませるモジュール。
        • 使用されるモード
          ポスト番号認識モード、基本走行ライン復帰モード� �基本走行ライン復帰モード�◆�
          ポスト間移動モード、緊急モード、勝利モード、お手上げモード、総合試験モード
        • 構成要素
          PWM・RE RTタスクモジュール、LCDドライバ
        • 関数名:m-rev()

      4. 赤外線受信モジュール
        • 機能
          ポストからの情報を受信、記録するモジュール。
        • 使用されるモード
          ポスト接近モード、ポスト番号認識モード、ポスト獲得モード 、
          基本走行ライン復帰モード�◆▲櫂好伐麋鬟癲璽鼻▲櫂好抜岼榮哀癲璽鼻�緊急モード、
          バックアップモード、勝利モード、お手上げモード、総合試験モード
        • 構成要素
          赤外線センサドライバ、LCDドライバ
        • 関数名:m-irs()

      5. 電磁弁開閉モジュール
        • 機能
          エアシリンダーを始動させるための電磁弁を開閉するモジュール。
        • 使用されるモード
          ポスト獲得モード、勝利モード、お手上げモード、総合試験モード
        • 構成要素
          LCDドライバ
        • 関数名:m-valve()

      6. 白線検知モジュール
        • 機能
          MIRSの下の白線を検知するモジュール。
        • 使用されるモード
          ポスト検索モード、ポスト接近モード、ポスト番号認識モード、ポスト獲得モード、
          基本走行ライン復帰モード� �基本走行ライン復帰モード�◆▲櫂好伐麋鬟癲璽鼻�
          ポスト間移動モード、緊急モード、バックアップモード、総合試験モード
        • 構成要素
          白線検知ドライバ、LCDドライバ
        • 関数名:m-wl()

      7. タッチセンサ検知モジュール
        • 機能
          MIRSが接触したことを検知するモジュール。
        • 使用されるモード
          ポスト検索モード、ポスト接近モード、ポスト番号認識モード、ポスト獲得モード、
          基本走行ライン復帰モード� �基本走行ライン復帰モード�◆▲櫂好伐麋鬟癲璽鼻�
          ポスト間移動モード、緊急モード、バックアップモード、総合試験モード
        • 構成要素
          タッチセンサドライバ、LCDドライバ
        • 関数名:m-ts()

      8. PSDモジュール
        • 機能
          PICから送られてくるPSDの距離データを、Linux標準のシリアル通信デバイスドライバを介して受信するモジュール。
        • 使用されるモード
          ポスト検索モード、ポスト接近モード、ポスト番号認識モード、基本走行ライン復帰モード� �
          基本走行ライン復帰モード�◆▲櫂好伐麋鬟癲璽鼻▲櫂好抜岼榮哀癲璽鼻�緊急モード、総合試験モード
        • 構成要素
          LCDドライバ
        • 関数名:m-psd()

      9. 総合試験モジュール
        • 機能
          試験走行用のモジュール。各種試験を行うもの。試験内容はシステム試験仕様書による。
        • 使用されるモード
          なし
        • 構成要素
          全てのAPI
        • 関数名:m-exam()

    3. RTタスクモジュール
      1. PWM・RE RTタスクモジュール
        • 機能
          MIRS標準APIを基本とする(但しタイヤ径の機体情報等必要部分は変更する)。
          左右のロータリーエンコーダのカウント値、速度データなどをやりとりすることで直進、旋回をこのRTタスクで実現する。
        • 使用される機能モジュール
          直進モジュール、自転モジュール、公転モジュール、総合試験モジュール
        • FIFO の仕様・関数名
          以下リンク先を参照
        MIRSATLM PWM・ロータリーエンコーダRTタスクモジュール取扱説明書

    4. デバイスドライバ
      1. 赤外線センサドライバ
        • 機能
          使用する赤外線センサ番号を選択し、赤外線の信号を調べる。
        • 使用される機能モジュール
          赤外線受信モジュール、総合試験モジュール
        • IOアドレス:0130H,0132H
        制御関数
        動作説明
        irs_open
        センサデバイスファイルをopenし、I/Oポートアドレスのチェックと登録を行う。
        irs_read
        赤外線受信モジュールからデータを読み込む。
        irs_ioctl
        赤外線センサからデータをint型で読み込む。
        メソッド内に定義したコマンドに応じて、赤外線センサのデータをユーザ空間に書き込む。
        赤外線を解析した番号をデータとし、赤外線が出てない場合は"0"を書き込む。
        定義したコマンドを以下に示す。
            READ_ALL:全ての赤外線センサのデータを書き込む。
            READ_f:MIRS正面の赤外線センサのデータを書き込む。
            READ_r:MIRS右側の赤外線センサのデータを書き込む。
            READ_l:MIRS左側の赤外線センサのデータを書き込む。
        irs_release
        I/Oポートアドレスを解放する。

      2. タッチセンサドライバ
        • 機能
          MIRS標準APIを使用する(但し個数等必要部分は変更し、赤外線部分は使用しない)。
          使用するタッチセンサ番号を選択し、タッチセンサの信号を調べる。
        • 使用される機能モジュール
          タッチセンサ検知モジュール、総合試験モジュール
        • IOアドレス・関数名
          以下リンク先を参照
        MIRSATLM 赤外線・タッチセンサデバイスドライバ取扱説明書

      3. LCDドライバ
        • 機能
          MIRS標準APIを使用する。LCDに文字列を表示する。
        • 使用される機能モジュール
          全ての機能モジュール
        • IOアドレス・関数名
          以下リンク先を参照
        MIRSATLM LCDデバイスドライバ取扱説明書

      4. 白線検知ドライバ
        • 機能
          白線センサが白線を検知しているかを判断する。
          検知したときはどの白線センサが検知したのかデータを送る。
        • 使用される機能モジュール
          白線検知モジュール、総合試験モジュール
        • IOアドレス:0150H
        制御関数
        動作説明
        wls_open
        センサデバイスファイルをopenし、I/Oポートアドレスのチェックと登録を行う。
        irs_read
        白線検知モジュールからデータを読み込む。
        wls_ioctl
        白線センサからデータをint型で読み込む。
        白線を検知していれば"1"を、していなければ"0"を書き込む。
        irs_release
        I/Oポートアドレスを解放する。



  9. 試験
    1. モード、機能モジュール単体試験
      プログラムがPC上で正常動作するかを試験する。
      各モードに対し任意の信号を入れたと仮定して予定のモードに移行するか試験する。
      各モジュールに対し任意の信号を入れたときに予定の動作を行うか試験する。

    2. 実機上での試験
      プログラムが実機上で正常動作するかを試験する。
      設定した値と実際に動いた距離、プログラム上で受け取っている数値と実際に動いた距離との間に大きなズレは無いか試験する。

      以下に実機上で各モード・機能モジュール動作時の試験点を記述する。
        1. モード
        • 待機モード
          ┗スタートボタンを押した時にしっかりと次のモードに移行するか。

        • ポスト検索モード
          ┣基本走行ラインをズレないで直進できるか。
          ┗ポストが発見可能範囲にあった時にモードが移行するか。

        • ポスト接近モード
          ┣ポストをMIRS正面に捕らえるように回転できるか。
          ┣接近した時にポストとの距離が50mmになるか。
          ┗モードを移行する時の座標を記憶できるか。

        • ポスト番号認識モード
          ┣ポストを中心とした同心円状に周回できるか。
          ┣赤外線に反応してスイッチの前で止まれるか。
          ┗受信した赤外線の番号を確認しLCDに表示できるか。

        • ポスト獲得モード
          ┣エアーシリンダーでスイッチを押すことができるか。
          ┗ポストを獲得できたか確認できるか。

        • 基本走行ライン復帰モード��
          ┣ポスト接近モードから移行した時の座標に戻れるか。
          ┗基本走行ラインに戻ることができるか。

        • 基本走行ライン復帰モード��
          ┗基本走行ラインの延長線上に動くことができるか。

        • ポスト回避モード
          ┣接近した時にポストとの距離が50mmになるか。
          ┣ポストと50mm離れて周回できるか
          ┗本来の進路、及び進路の延長線上に戻ることができるか。

        • ポスト間移動モード
          ┣次に獲得すべきポストの座標が正しいか
          ┗ポストの座標近くになったらPSDでポストを探して方向を修正できるか。

        • 緊急モード
          ┣予想外の白線検知やタッチセンサ反応を検出できるか。
          ┣白線上をできるだけ蛇行せずに移動できるか。
          ┗スタート地点に戻ることができるか。

        • バックアップモード
          ┣スイッチをMIRS正面に捕らえて赤外線を感知できるか。
          ┗タッチセンサがスイッチに引っかからないか。

        • 勝利モード
          ┣他のモードから移行できるのか。
          ┗MIRSがアピールするときにポストにぶつからない場所に移動できるか。

        • お手上げモード
          ┣他のモードから移行できるのか。
          ┗MIRSがアピールするときにポストにぶつからない場所に移動できるか。

        • 総合試験モード
          ┣テンキーのボタンに対応したモードに移行できるか。
          ┗各モードが終了したらこのモードに戻ってくるか。

        2. 機能モジュール
        • 直進モジュール
          ┣指定した距離の±3cm以内に停止できるか。
          ┗直進時の左右方向のぶれが±1度以内であるか。

        • 自転モジュール
          ┗指定した角度の±1度以内で旋回できるか。

        • 公転モジュール
          ┗指定した半径の円の円周上を走行できるか。

        • 赤外線受信モジュール
          ┣赤外線を正しく受信できるか。
          ┗受信した赤外線の番号を記録できるか。

        • 電磁弁開閉モジュール
          ┗電磁弁がしたように開閉されるか。

        • 白線検知モジュール
          ┗白線を確実に検知できるか。

        • タッチセンサ検知モジュール
          ┗タッチセンサが反応したときに割り込み信号がでるか。

        • 総合試験モジュール
          ┣テンキーのボタンに対応したモジュールに移行できるか。
          ┗各モジュールが終了したらこのモジュールに戻ってくるか。

関連文書