沼津高専 電子制御工学科
MIRS0101詳細設計SOFT
MIRS0101-SOFT-0001
改訂記録
版数 作成日 作成責任者 承認 改訂内容
A01 2002.5.17 小畑 勝又 初版
A02 2002.6.5 小畑 勝又 試験、行動モードの変更・改正
A03 2002.6.14 小畑 勝又 行動モードの変更・改正

目次

  1. はじめに
  2. 概要
  3. OS(RT-Linux)の概要
  4. 行動モードの詳細
  5. プログラム群の詳細
    1. モードモジュール
    2. 機能モジュール
    3. RTタスクモジュール
    4. デバイスドライバ
  6. 試験
  7. 参考資料

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

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

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

  5. OSの概要
  6.  RT-Linuxは、Linuxの機能にリアルタイム処理をする機能を付け加えたものである。 RT-カーネルは、RT-タスクとLinuxカーネルを対象にしたスケジューリングを行う。 Linuxカーネル本体は最も低い優先度でスケジューリングされるもので、RT-タスクの優先度のほうが Linuxカーネルよりも高い。 MIRSでは、通常動作の状態では最も優先度の低いユーザプログラム(行動制御プログラム)を実行し、その中で決められた周期でRT-タスクを実行していく。 これがリアルタイム処理である。 RT-タスク・ユーザプログラム間の情報交換は、FIFO(First In First Out)を生成してそれを用いて行われる。

  7. 行動モードの詳細
    1. 待機モード。
      • モード定義
        メインプログラムを立ち上げ、スタートスイッチが押されるまでの待機状態に入る。
      • モード偏移条件
        スタートスイッチが押されたら直線上のポスト検索モードに偏移する

    2. 直線上のポスト検索モード
      • モード定義
        超音波センサから超音波を出し、MIRS正面の直線上にポストがないか検索する。
      • モード偏移条件
        ポストを発見しない、もしくは2000o以上先に発見した場合『中心移動モード』に入る。
        1600o〜2000oの位置にポストを発見した場合『ポスト接近モード』に入る。
        1600o以内にポストを発見した場合『ポスト回避モード』に入る。

    3. ポスト回避モード
      • モード定義
        右に90°回転し300o前進する。その後、また左に90°回転する。
      • モード偏移条件
        移動後、左側に向けている超音波センサを使い『直線上のポスト検索モード』に入る。

    4. 中心移動モード
      • モード定義
        MIRSがその時いる位置から中心に移動する。
      • モード偏移条件
        その後『ポスト検索モード』に入る。

    5. ポスト検索モード(1)
      • モード定義
        その場で右回転しながらポストを検索し、その方向を見る。
      • モード偏移条件
        その後『ポスト方向に回転モード』に入る。

    6. ポスト検索モード(2)
      • モード定義
        その時周っているポストを中心に右回転しながらポストを検索し、その方向を見る。
      • モード偏移条件
        その後『ポスト方向に回転モード』に入る。

    7. ポスト接近モード
      • モード定義
        ポストに近づいていく。この時、前面の赤外線センサを使いポストの赤外線センサがこちらを向いていないか確認する。
      • モード偏移条件
        赤外線センサがこちらに向いていない時はポストにぶつかるまで進み、『ポストの周り回転モード』に入る。
        赤外線センサがこちらを向いている時は『赤外線識別モード』に入る。

    8. ポストの周り回転モード
      • モード定義
        ポストの周りを右回転しポストに取り付けられた赤外線センサを探す。同時に左側に向けている超音波センサを使い中心とそのポストの直線上に別のポストがないか見る。
      • モード偏移条件
        赤外線を見つけたら『赤外線識別モード』に入る。。
        赤外線が見つからず中心から反対がわにポストを発見にした場合そのポストに対して『ポスト接近モード』に入る。
        赤外線も死角のポストも発見できなかっら『中心移動モード』に入る。
        『直線上のポスト検索モード』→『ポスト接近モード』→『ポストの周り回転モード』の手順で実行している時は『ポスト検索モード(2)』に入る。

    9. 赤外線識別モード
      • モード定義
        赤外線の周波数からポストの番号を割り出す。
      • モード偏移条件
        『ポスト獲得モード』に入る。

    10. ポスト獲得モード
      • モード定義
        ポストの番号が獲得すべきものだった場合、右へ90°回転、ぶつかるまで前進しスイッチを押す。その後、前面の赤外線センサを使い赤外線が出ていない事を確認する。
      • モード偏移条件
        ポストを獲得した時と、ポストの番号が獲得すべきでなかった時は『中心移動モード』に入る。
        上と同じ条件で、さらに中心から反対がわにポストを発見にした場合そのポストに対して『ポスト接近モード』に入る。
        『直線上のポスト検索モード』→『ポスト接近モード』→『赤外線識別モード』→『ポスト獲得モード』の手順で実行している時は『ポスト検索モード(2)』に入る。

    11. 白線感知モード
      • モード定義
        MIRSの進行方向前方に白線を探す。
      • モード偏移条件
        白線を感知した場合『中心移動モード』に入る。
    12. 回避モード
      • モード定義
        MIRSがポストに引っ掛かった時、そこから回復する。
      • モード偏移条件
        行動を終了したら『ポスト接近モード』に入る。

  8. プログラム群の詳細
    1. モードモジュール
      1. 待機モード
        • 構成要素
        • アルゴリズム(フローチャート)
      2. 直線上のポスト検索モード
        • 構成要素
          超音波センサ RTタスクモジュール
        • アルゴリズム(フローチャート)
      3. ポスト回避モード
        • 構成要素
          左右回転モジュール、前後移動モジュール
        • アルゴリズム(フローチャート)
      4. 中心移動モード
        • 構成要素
          前後移動モジュール、左右回転モジュール、確認モジュール
        • アルゴリズム(フローチャート)
      5. ポスト検索モード(1)
        • 構成要素
          左右回転モジュール、超音波センサRTタスクモジュール
        • アルゴリズム(フローチャート)
      6. ポスト検索モード(2)
        • 構成要素
          周回モジュール、超音波センサRTタスクモジュール
        • アルゴリズム(フローチャート)
      7. ポスト接近モード
        • 構成要素
          前後移動モジュール、確認モジュール、赤外線センサドライバ
        • アルゴリズム(フローチャート)
      8. ポストの周り回転モード
        • 構成要素
          周回モジュール、赤外線センサドライバ
        • アルゴリズム(フローチャート)
      9. 赤外線識別モード
        • 構成要素
          赤外線センサドライブ
        • アルゴリズム(フローチャート)
      10. ポスト獲得モード
        • 構成要素
          左右回転モジュール、前後移動モジュール、赤外線センサドライバ、確認モジュール
        • アルゴリズム(フローチャート)
      11. 白線感知モード
        • 構成要素
          白線感知センサ RTタスクモジュール
      12. 回避モード
        • 構成要素
          左右回転モジュール、前後移動モジュール、RTタスクモジュール
    2. 機能モジュール
      走行動作のモジュールでは、走行中に下記の条件を満たしたら、MIRSは何かに「接触」したものとみなす。
      • タッチセンサがON
      • ロータリエンコーダの値が一定時間以上変化していない(速度がゼロ)
      以上を踏まえて開発する。
      1. 前後移動モジュール
        • 機能
          指定した走行距離、速度(PWM値)で直進する。 左右のタイヤの速度のずれが無く走行するように制御する。 超音波によりポストまでの距離が小さくなったら停止する。
        • 構成要素
          PWM・RE 超音波 白線感知RTタスクモジュール、
        • アルゴリズム(フローチャート)
      2. 左右回転モジュール
        • 機能
          指定した角度だけその場回転する。 左右のタイヤの速度のずれが無く、左右タイヤが逆に回転するように制御する。
        • 構成要素
          PWM・RT 超音波RTタスクモジュール
        • アルゴリズム(フローチャート)
      3. 中心接触モジュール
        • 機能
          一度ポストに接触した時点で姿勢を直す。
        • 構成要素
          前後移動 左右回転モジュール、タッチセンサドライバ
        • アルゴリズム(フローチャート)
      4. 周回モジュール
        • 機能
          指定された走行距離(半周か、1周か、等)・死角監視位置に従い、走行制御、死角監視、赤外線監視を行う。 円軌道を描いて走行するため、左右のタイヤの回転比をある一定の値に保つ様に制御する。 指定位置で監視スレッドを生成し死角ポストを監視する。 死角ポストを発見した場合は、それを表す変数の内容を書き換える。
        • 構成要素
          PWM・RE 超音波RTタスクモジュール、赤外線 タッチセンサドライバ
        • アルゴリズム(フローチャート)
      5. 確認モジュール
        • 機能
          ポストからの赤外線がなくなっているか確認する。
        • 構成要素
          赤外線センサドライバ
        • アルゴリズム(フローチャート)
    3. RT タスクモジュール
      1. 超音波RTタスクモジュール
        MIRS標準APIを使用する。MIRSATLMプログラム詳細仕様書(MIRSATLM-SOFT-0001)

      2. PWM ロータリーエンコーダ RTタスクモジュール
        MIRS標準APIを使用する。ロータリーエンコーダでの機体情報(タイヤ径、実行周期など)は、変更する。 MIRSATLMプログラム詳細仕様書(MIRSATLM-SOFT-0001)

      3. 白線検知RTタスクモジュール
        MIRS標準APIを使用する。

    4. デバイスドライバ
      1. 赤外線ドライバ
        MIRS標準APIを使用する。 MIRSATLMプログラム詳細仕様書(MIRSATLM-SOFT-0001)
      2. タッチセンサドライバ
        MIRS標準APIから、タッチセンサ1個分減らしたものに変更する。
      3. LCDドライバ
        MIRS標準APIを使用する。 MIRSATLMプログラム詳細仕様書(MIRSATLM-SOFT-0001)

  9. 試験
    1. モード、機能モジュール単体試験
      プログラム通りに動作するかを試験する。
      各モード、モジュールについて任意の信号を入れたときに予定どうりの反応が返ってくるかをプログラム上でチェックする。
    2. 実機上での試験
      プログラム通りに動作するか試験する。
      設定した値と実際に動いた距離との間に大きなズレは無いか試験する。
      • 直線上のポスト検索モード
        ┣ポストまでの距離によって指定の動きをするか。
        ┗ポストまでの距離が曖昧だった時どうするか。
      • ポスト回避モード
        ┣回転角は正しいか。
        ┗進んだ距離は正しいか。
      • 中心移動モード
        ┗より正確に中心の位置まで近づけるか。
      • ポスト検索モード(1)
        ┣ポストに反応を示すか。
        ┗ポスト方向を正確に向いて止まれるか。
      • ポスト検索モード(2)
        ┣ポストに反応を示すか。
        ┗ポスト方向を正確に向いて止まれるか。
      • ポスト接近モード
        ┣超音波を使い旨く近づけるか。
        ┗赤外線が進路上にあるときにポストの手前で止まれるか。
      • 赤外線識別モード
        ┗正しい番号を識別できるか。
      • ポスト獲得モード
        ┣ポストの番号が正しければとるか。
        ┗番号が間違っていればとらないか。
      • 白線感知モード
        ┣白線を感知するか。
        ┗感知したら指定の動きを見せるか。
      • 前後移動モジュール
        ┗指定した距離を正しく移動するか。
      • 左右回転モジュール
        ┗指定した角度を正しく回転するか。
      • 中心接触モジュール
        ┗ポストの中心を向いて止まれるか。
      • 周回モジュール
        ┗指定した角度ポストの周りを正しく回転するか。
      • 確認モジュール
        ┗赤外線が出ていないことを正しく確認するか。

  10. 参考資料

関連文書