沼津高専 電子制御工学科
MIRS0003ソフトウェア詳細設計書
MIRS0003-SOFT-0002
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2001.6.1 高橋、鈴木、赤堀 関野 初版
A02 2001.7.3 高橋、鈴木、赤堀 関野 モードの定義、フローチャートの改訂
A03 2001.7.5 高橋、鈴木、赤堀 関野 メインプログラムの追加
B01 2002.2.14 高橋、鈴木、赤堀 関野 mモード・モジュールの変更

目次

1.はじめに
2.概要
3.OS(RT-Linux)の概要
4.行動モードの詳細
5.プログラム群の構成
6.試験
7.作成ドキュメント一覧

1.はじめに

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

2.概要

MIRS0003ソフトウェアは、RT-Linux 上で動作するプログラム群で構成される。プログラムは、Linux の標準の API とともに、行動モードに対応した プログラム、一つの機能を複数のプログラム群で提供する機能モジュール、および、RTタスク、ドライバと、補助関数と独自に定義したヘッダファイ ルから構成される。
本MIRSでは、行動モードに対応した次の6個のモードモジュールを用意する。IO制御は、超音波測定と駆動系の制御を RT タ スクとして駆動させ、赤外線センサ信号入力探知と、LCD出力は、デバイスドライバを用いて行う。デバイスドライバは、標準APIのデバイスドライ バを利用する。

3.OS(RT-Linux)の概要

今回使用するOSについては、下記のドキュメントを参照のこと。
MIRS0003ソフトウェア調査報告書(MIRS0003-TECH-0007)

4.行動モードの詳細

  1. 初期モード
  2. 周回軌道移動モード
  3. ポスト探索モード
  4. ポスト獲得モード
  5. 周回軌道移動モードB
  6. 中央直進モード

5.プログラム群の構成

プログラム群の構成

6.プログラム群の詳細

  1. メインプログラム
    1. 定義:mirsの行動の中心となるプログラム。すべてのモードモジュールを使用する。各モードへの遷移は下記参照。
    2. フローチャート:
      フローチャート
    3. モードモジュール
      1. 初期モード
        1. モード定義:
          競技開始直後、後退し右に90°回転する。
        2. モード遷移条件:
          メインプログラム開始と同時に遷移。 。
        3. 構成要素:
          機能モジュール 回転モジュール,LCDモジュール
          RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ なし
        4. 関数名:syoki_mode()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

      2. 周回軌道移動モード
        1. モード定義:
          競技上四角形のうち上下二辺の壁ぎわをポストの探索をしないで直進補正しながら前進する。mirsが軌道上からずれた場合後退し角度の補正を行う。この条件は
          • 右側の超音波センサで壁との距離を測り、mirsが25cm以上離れた場合。
          • 右前部二つのタッチセンサが反応した場合。
          • 左前部二つのタッチセンサが反応した場合。
          前方の二つのタッチセンサが反応し壁にあたったことを確認したら、壁に対して正対するよう補正し、後退した後左に90度回転する。
        2. モード遷移条件:
          初期モード、ポスト探索モード終了後に遷移。
        3. 構成要素:
          機能モジュール 回転モジュール、LCDモジュール
          RTタスクモジュール 超音波センサ RTタスクモジュール、PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ タッチセンサドライバ
        4. 関数名:idou_mode()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)

      3. ポスト探索モード
          1. モード定義:
            探索範囲到達時(左右の壁際走行時)より、フィールド方向に超音波を発し、ポストを探索する。mirs本体より1m以上離れたポストは認識しない。軌道上からずれた場合の補正は、周回軌道移動モードと同様である。前方のタッチセンサが反応し壁にあたったことを確認したら、後退し左に90度回転する。
          2. モード遷移条件:
            周回軌道移動モード、獲得モード終了後に遷移。
          3. 構成要素:
            機能モジュール 回転モジュール、LCDモジュール
            RTタスクモジュール 超音波センサ RTタスクモジュール、PWM・ロータリーエンコーダ RTタスクモジュール
            デバイスドライバ タッチセンサドライバ
          4. 関数名:tansaku_mode()
          5. 引数:なし
          6. 戻り値:なし
          7. アルゴリズム(フローチャート):
            フローチャート

      4. ポスト獲得モード
        1. モード定義:
          発見したポストに向かって移動する。ポストにぶつかり前方のタッチセンサが反応すると、中心補正モジュールでポストに正対する。円移動でポストの周り一周し、赤外線を感知すると方向転換しスイッチを押す。ポスト獲得後は円移動を再開し円移動を開始した地点まで戻る。周回軌道上に復帰し終了。
        2. モード遷移条件:
          スト探索モードで超音波センサが反応した場合に遷移。
        3. 構成要素:
          機能モジュール 回転モジュール、中心補正モジュール 、ポスト周回モジュール、LCDモジュール
          RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ なし
        4. 関数名:kakutoku_mode()
        5. 引数:
          変数説明
          double lengthポスト探索モジュールから渡される"ポストまでの距離"
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

      5. 周回軌道移動モードB
        1. モード定義:
          二回目の探索モード終了地点からゼロ地点まで移動する。まず後退し壁に当り、その地点からロータリーエンコーダを用いて距離を測る。ゼロ地点まで移動したら、壁に正対し180°回転する。移動の方法は周回軌道移動モードと同様である。
        2. モード遷移条件:
          二回目のポスト探索モード終了後に遷移。
        3. 構成要素:
          機能モジュール 回転モジュール、LCDモジュール
          RTタスクモジュール 超音波センサ RTタスクモジュール、PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ タッチセンサドライバ
        4. 関数名:idou_mode_b()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)

      6. 中央直進モード
        1. モード定義:
          周回軌道を完了し、再びゼロ地点に戻ってきた後、中央を直進し前方にあるであろう未獲得ポストを、前方のタッチセンサで探索し獲得する。
        2. モード遷移条件:
          回軌道移動モードによる周回軌道の完了後に遷移。
        3. 構成要素:
          機能モジュール 回転モジュール、ポスト探索モジュール、ポスト獲得モード
          RTタスクモジュール なし
          デバイスドライバ タッチセンサドライバ
        4. 関数名:tyuou_mode()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

    4. 機能モジュール
      1. 回転モジュール
        1. 機能: ロータリーエンコーダを用いて MIRS を指示された回転角その場回転させる。
        2. 構成要素:
          RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ なし
        3. このモジュールが使用されるモード:
          モード  周回軌道移動モード、ポスト獲得モード、探索モード
        4. 関数名: circle_test()
        5. 引数:
          変数説明
          int anglemirsの回転角度
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

      2. 探索モジュール
        1. 機能:超音波の送受信を行う。
        2. 構成要素:
          RTタスクモジュール 超音波センサ RTタスクモジュール
          デバイスドライバ なし
        3. 使用されるモード:
          モード  探索モード
        4. 関数名:tansaku()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

      3. ポスト周回モジュール
        1. 機能:ポストの周りを円軌道で周回し、ポストを獲得する。
        2. 構成要素:
          RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ 赤外線センサドライバ、タッチセンサドライバ
        3. 使用されるモード:
          モード  ポスト獲得モード
        4. 関数名:ensyu()
        5. 引数:
          変数説明
          int angle中心補正量
        6. 戻り値:なし
        7. アルゴリズム(フローチャート)
          フローチャート

      4. 中心補正モジュール
        1. 機能:ポストにぶつかったとき、ポストに正対する。
        2. 構成要素:
          RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール
          デバイスドライバ タッチセンサドライバ
        3. 使用されるモード:
          モード  ポスト獲得モード
        4. 関数名:t_hosei()
        5. 引数:なし
        6. 戻り値:
          変数説明
          int r_ang中心補正量
        7. アルゴリズム(フローチャート)
          フローチャート

      5. LCD表示モジュール
        1. 機能: LCDに文字を表示する。
        2. 構成要素:
          RTタスクモジュール なし
          デバイスドライバ LCDドライバ
        3. 使用されるモード:
          モード  全モード
        4. 関数名: lcd_print()
        5. 引数:なし
        6. 戻り値:なし
        7. アルゴリズム(フローチャート):
          フローチャート

    5. RT タスクモジュール
      1. 超音波センサ RTタスクモジュール
        標準MIRSで提供されている物を使用する。
        MIRSATML 超音波センサRTタスクモジュール取扱説明書(MIRSATML-SOFT-1001)
        標準MIRSと異なる点について以下に示す。
        • このRTタスクモジュールがされるモード、機能モジュール: 周回軌道移動モード,ポスト探索モード,ポスト獲得モード,探索復帰モード,修正モード,中央直進モード,直進モジュール,修正モジュール,ポスト探索モジュール
      2. PWM・ロータリーエンコーダ RTタスクモジュール
        標準MIRSで提供されている物を使用する。
        MIRSATML PWM・ロータリーエンコーダRTタスクモジュール取扱説明書(MIRSATML-SOFT-1002)
        標準MIRSと異なる点について以下に示す。
        • このRTタスクモジュールがされるモード、機能モジュール:周回軌道移動モード,ポスト探索モード,ポスト獲得モード,探索復帰モード,障害物回避モード,修正モード,中央直進モード,直進モジュール,回転モジュール,多角形移動モジュール

    6. デバイスドライバ
      1. 赤外線センサドライバ
        標準MIRSで提供されている物を使用する。
        MIRSATML 赤外線・タッチセンサデバイスドライバ取扱説明書(MIRSATML-SOFT-1004)
        標準MIRSと異なる点について以下に示す。
        • このドライバ使用されるモード、モジュール
      2. タッチセンサドライバ
        標準MIRSで提供されている物を使用する。
        MIRSATML 赤外線・タッチセンサデバイスドライバ取扱説明書(MIRSATML-SOFT-1004)
        標準MIRSと異なる点について以下に示す。
        • このドライバ使用されるモード、モジュール:
        • IO アドレス、IRQ
          アドレス
          D15
          D14
          D13
          D12
          D11
          D10
          D9
          D8
          R/W
          機能説明
          0140H
          PO
          TS6
          TS5
          TS4
          TS3
          TS2
          TS1
          TS0
          R
          POはパワーオン信号、TS*はタッチセンサを示す。
      3. LCDドライバ
        標準MIRSで提供されている物を使用する
        MIRSATML LCDデバイスドライバ取扱説明書(MIRSATML-SOFT-1003)
        標準MIRSと異なる点について以下に示す。
        • このドライバ使用されるモード、モジュール: LCD表示モジュール

    6.試験

    1. 各モード、機能モジュールの単体試験
      各モードを単体で動作させ、実行できるかを試験する。
    2. 標準MIRS上での試験
      標準MIRSと異なるタッチセンサ関連の部分を除いては、標準MIRSと互換性がある。実機が完成するまでに、仮の総合的な試験を行う。
    3. 実機上での試験
      直進、回転等のMIRSの行動に関する微調整を行う。

    7.作成ドキュメント一覧


    関連文書