沼津高専 電子制御工学科
MIRS9804ソフトウェア詳細設計書
MIRS9804-DSGN-0004
改訂記録
版数作成日作成者承認改訂内容
A011999.5.25村松新一品川 彰初版
B011999.6.11村松新一 品川 彰タスク、HCPチャートを改訂

目次

  1. はじめに
  2. 概要
  3. リアルタイムモニタ
  4. PWM制御タスク
  5. 自己位置認識タスク 
  6. 超音波センサ制御タスク
  7. 赤外線センサ制御タスク 
  8. タッチセンサ制御タスク 
  9. MMI制御タスク 
  10. 行動計画タスク 
  11. 走行制御タスク 
  12. 自己位置補正タスク 
  13. 総合試験タスク
  14. 試験
  15. 作成ドキュメント一覧

1.はじめに

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

2.概要

MIRS9804ソフトウェアはリアルタイムモニタMIRX68KとMIRX68K上で動作するタスクから構成される。タスクは低レベルタスクと高レベルタスクとメインタスクに大別され、基本的には低レベルタスクはハードウェアの制御を高レベルタスクは低レベルタスクを用いてシステムの動作を実現する。メインタスク(行動計画タスク)はスイッチ状態やセンサ情報をもとに動作を決定しそれに応じたタスクの起動を行う。 MIRS9804ソフトウェアは下記のタスクから構成される。
低レベルタスク   高レベルタスク メインタスク      

3.リアルタイムモニタ

  1. タスクの数(MAX_TASK)=10タスク
  2. BBの数(MAX_BB)=8
  3. 以下に各タスク使われる処理と優先順位(0〜6)を示す。
タスクナンバーイニシャライズノーマルタイマ割り込み優先順位
PWM制御00××2
自己位置認識01××3
超音波センサ02×2
赤外線センサ03××3
タッチセンサ04××3
MMI制御051
行動計画06××6
走行制御07××5
自己位置補正08××2
総合試験09××4

4.task00:PWM制御タスク

    1. 機能

    2. 走行制御タスクBBに書き込んであるデューティ比からPWM信号を作成し左右のモータに出力する。
    3. コマンド仕様
    4. コマンド名コード
      (HEX)
      サブコマンド機能
      なしanyanyコマンドなし
    5. BB仕様

    6. 不使用
    7. 初期設定

    8. PWMを初期化する。
      1. モジュール定義

      2. void inzt00():リアルタイムモニタから呼ばれる初期設定関数。
      3. HCPチャート

      4. 図4.1 inzt00モジュールHCPチャート(ZWD
    9. コマンド処理

    10. BBに書き込んであるデータをもとにPWM信号を作成、送信しモータを駆動させる。
      1. モジュール定義

      2. void nrmt00(int,int):モータ駆動関数。
      3. HCPチャート

      4. 図4.2 nrmt00モジュールHCPチャート(ZWD
    11. 割り込み処理

    12. なし。
      1. モジュール定義

      2. void intt00:なし
      3. HCPチャート

      4. Not exist

       
    13. タイマ処理

    14. なし。
      1. モジュール定義

      2. void intt00:なし
      3. HCPチャート

      4. Not exist

5.task01:自己位置認識タスク

  1. 機能
     一定時間毎に起動され、ロータリーエンコーダの値から自己位置のx、y座標と姿勢角θを検出しBBに書き込む。
  2. コマンド仕様
    コマンド名コード(HEX)サブコマンド機能
    なしanyanyコマンドなし
  3. BB仕様
    番号内容
    1自機位置x座標データ
    2自機位置y座標データ
    3自機位置姿勢角θデータ
  4. 初期設定
     Hardware Function Libraryのロータリーエンコーダ・タッチセンサ系の初期化関数void re_ts_init();を用いる。BBを初期化し、タイマタスク登録をする。
    1. モジュール定義
      void inzt01():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図5.1.inzt01モジュールHCPチャート(ZWD

  5. 割り込み処理
    なし
  6. タイマ処理
    一定時間毎に起動され、ロータリーエンコーダの値から自機位置のx、y座標と姿勢角θを算出してBBに書き込む。
    1. モジュール定義
      void timt01():タイマ割り込みによって一定時間ごとに実行される関数。
    2. HCPチャート

      図5.2.timt01モジュールHCPチャート(ZWD

  7. コマンド処理
    なし

6.task02:超音波センサ制御タスク

  1. 機能
    一定時間毎に起動され超音波を送信する。また超音波を受信するごとに起動され距離データをBBに書き込む。
  2. コマンド仕様
    コマンド名コード
    (HEX)
    サブコマンド機能
    なしanyanyコマンドなし
  3. BB仕様
    番号内容
    1距離データ1
    2距離データ2
    3距離データ3
    4距離データ4
    5過去距離データ1
    6過去距離データ2
    7過去距離データ3
    8過去距離データ4
  4. 初期設定
     Hardware Function Libraryの超音波センサ系の初期化関数void uss_init();を用いる。BBを初期化し、割り込みタスク、タイマタスク登録をする。
    1. モジュール定義
      void inzt02():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図6.1.inzt02モジュールHCPチャート(ZWD

  5. 割り込み処理
    超音波センサへの受信信号があったときに距離を計算しBBに書き込む。
    1. モジュール定義
      void intt02():超音波センサへの割り込み要求があった時に実行される関数
    2. HCPチャート

      図6.2.intt02モジュールHCPチャート(ZWD )

  6. タイマ処理
    一定時間ごとに起動され超音波を送信する。また一定時間以内に受信信号がなかったとき受信を中断する
    1. モジュール定義
      void timt02():タイマ割り込みによって一定時間ごとに実行される関数。
    2. HCPチャート

      図6.3.timt02モジュールHCPチャート(ZWD

  7. コマンド処理
    なし

7.task03:赤外線センサ制御タスク

  1. 機能
    一定時間毎に起動し赤外線センサの情報をBBに書き込む。
  2. コマンド仕様
    コマンド名コマンド(HEX)サブコマンド機能
    なしanyanyコマンドなし
  3. BB仕様
    番号内容
    1赤外線の状態
    2赤外線の感知数
  4. 初期設定
     HFLの赤外線センサ系初期化関数void irs_init();を用いる。BBを初期化し、タイマタスク登録をする。
    1. モジュール定義
      void inzt03():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図7.1.inzt03モジュールHCPチャート(ZWD

  5. 割り込み処理
    なし
  6. タイマ処理
    一定時間ごとに起動され、各赤外線センサの状態を読み取り、合計感知数をBBに書き込む。
    1. モジュール定義
      void timt03():赤外線センサからの割込み要求信号があったときに実行される関数。
    2. HCPチャート

      図7.2.timt03モジュールHCPチャート(ZWD
  7. コマンド処理
    なし

8.task04:タッチセンサ制御タスク

  1. 機能
     タッチセンサが反応する毎に、このタスクが起動されてタッチセンサの状態を読み取りBBに書き込む。
  2. コマンド仕様
    コマンド名コマンド(HEX)サブコマンド機能
    なしanyanyコマンドなし
  3. BB仕様
    番号内容
    1正面タッチセンサのデータ
    2右斜め前タッチセンサのデータ
    3左斜め前タッチセンサのデータ
    4後ろタッチセンサのデータ
  4. 初期設定
     Hardware Function Library(HFL)のロータリーエンコーダ・タッチセンサの初期化関数void re_ts_init();を用いる。BBを初期化し、割り込みタスク登録をする。
    1. モジュール定義
      void inzt04():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図8.1.inzt04モジュールHCPチャート(ZWD

  5. 割り込み処理
    タッチセンサからの割り込み要求信号があったときに各タッチセンサの状態を読み取りBBに書き込む。
    1. モジュール定義
      void intt04():タッチセンサからの割り込み要求信号があったときに実行される関数。
    2. HCPチャート

      図8.2.intt04モジュールHCPチャート(ZWD

  6. タイマ処理
    なし
  7. コマンド処理
    なし

9.task05:MMI制御タスク

  1. 機能
    主に7seg.LED表示,単色LED点灯の処理を行う。  電源投入時またはリセットボタンが押されたとき、一回だけ初期設定し,処理終了後行動計画タスクを起動する。タスクの初期化,ハードウェアの初期設定,掲示板(BB)の初期化を行う。また,DIPスイッチを読み込み,動作モードをBBに書き込む。
  2. コマンド仕様
    コマンド名コード
    (HEX)
    サブコマンド機能
    DIPスイッチ01anyDIPスイッチのデータをBBに書き込む。
  3. BB仕様
    番号内容
    1DIPスイッチデータ
    27seg.LED表示
    3単色LED点灯
  4. 初期設定
     Hardware Function Libraryのマン・マシンインターフェース系の初期化関数void mmi_init();を用いる。BBを初期化し、タイマタスク登録をする。
    1. モジュール定義
      void inzt05():リアルタイムモニタから呼ばれる初期設定関数。
    2. HCPチャート

      図9.1.inzt05モジュールHCPチャート(ZWD

  5. 割り込み処理
    なし
  6. タイマ処理
    一定時間毎にLED表示データを読み込み、LEDを表示してBBに書き込む。
    1. モジュール定義
      void timt05():タイマ割り込みによって一定時間ごとに実行される関数。
    2. HCPチャート

      図9.2.timt05モジュールHCPチャート(ZWD

  7. コマンド処理
    DIPスイッチのデータをBBに書き込む。
    1. モジュール定義
      void nrmt05():DIPスイッチデータの読み込み。
    2. HCPチャート

      図9.3.nrmt05モジュールHCPチャート(ZWD

10.task06:行動計画タスク

  1. 機能

  2. ディップスイッチの値から試験走行か1(2)回目の走行かを判断し、試験走行の時は総合試験タスクを起動する。1(2)回目の時は、BB情報に基づいて走行制御タスクを起動する。1回目にすべてポストを獲得し終わったら2回目の動き(軌跡)を作成する様にする。
  3. コマンド仕様
  4. コマンド名コード
    (HEX)
    サブコマンド機能
    モード選択01anyモードの選択
    軌道作成02any2回目の軌道を作成する
  5. BB仕様
  6. 番号内容
    1現在の行動
    n=0:なし
    n=1:試験走行
    n=2:1回目の走行
    n=3:2回目の走行
    2現在のモード
    n=1:ポスト探索
    n=2:ポスト獲得
    3獲得したポストの数
  7. 初期設定

  8. BBを初期化する。ロータリスイッチの値で動作モードを決定する。
    1. モジュール定義

    2. void inzt06():リアルタイムモニタから呼ばれる初期設定関数。
    3. HCPチャート

    4. 図10.1 inzt06モジュールHCPチャート(ZWD
  9. コマンド処理

  10. BBを読み込み、計画に従って走行するために走行制御タスクを呼び出す。
    1. モジュール定義

    2. void nrmt06(int,int):計画に従って行動を起こす関数。
    3. HCPチャート

    4. 図10.2 nrmt06モジュールHCPチャート(ZWD
  11. 割り込み処理

  12. なし。
    1. モジュール定義

    2. void intt06:なし
    3. HCPチャート

    4. Not exist
  13. タイマ処理

  14. なし
    1. モジュール定義

    2. void timt06():なし
    3. HCPチャート

    4. Not Exist

11.task07:走行制御タスク

    1. 機能

    2. 行動計画タスクから起動される。各モードにしたがって行動する。探索モードでは超音波センサ、赤外線センサを使用しながらポストを探索し受信データからポストがあると判断されたとき、ポスト獲得行動に移る。ポスト獲得モードではポストへ近づきその周りを回ってスイッチを押す。 この時ポストのX座標、Y座標、角θをBBに書き込む。
    3. コマンド仕様
    4. コマンド名コード
      (HEX)
      サブコマンド機能
      ポスト探索01any

      ポストを探索する。

      ポスト獲得02anyポストの周りを回って、スイッチを押す。
      2回目移動03any指定された動きでスイッチを押す。
    5. BB仕様
    6. 番号内容

      1

      PWM右デューティ比
      2PWM左デューティ比
      3ポール発見時X座標
      4ポール発見時Y座標

      5

      ポールの方向と距離
      6スイッチ位置(x)
      7スイッチ位置(y)
      8スイッチ位置(θ)

       

    7. 初期設定

    8. BBを初期化する。
      1. モジュール定義

      2. void inzt07():リアルタイムモニタから呼ばれる初期設定関数。
      3. HCPチャート

      4. 図11.1 inzt07モジュールHCPチャート(ZWD
    9. コマンド処理

    10. 各モードに従って行動する。
      1. モジュール定義

      2. void nrmt07():動作関数
      3. HCPチャート

      4. 図11.2 nrmt07_1モジュールHCPチャート(ZWD

        図11.3 nrmt07_2モジュールHCPチャート(ZWD

        図11.4 nrmt07_3モジュールHCPチャート(ZWD

    11. 割り込み処理

    12. なし
      1. モジュール定義

      2. void intt07:なし
      3. HCPチャート

      4. Not exist
         
    13. タイマ処理

    14. なし
      1. モジュール定義

      2. void timt07(int,int):なし
      3. HCPチャート

      4. Not exist

12.task08:自己位置補正タスク

    1. 機能

    2. ノーマルタスクであり、補正の必要な時に適宜呼び出される左右の超音波センサの測定したデータに基づき、左右方向(XかYかはMIRSの姿勢及び現在位置により決定する)を補正する。
    3. コマンド仕様
    4. コマンド名コード
      (HEX)
      サブコマンド機能
      位置補正01any位置を補正する
    5. BB仕様
    6. 番号内容
      1X座標
      2Y座標
      3姿勢角θ
    7. 初期設定

    8. BBを初期化する。タイマタスク登録。
      1. モジュール定義

      2. void inzt08():リアルタイムモニタから呼ばれる初期設定関数。
      3. HCPチャート

      4. 図12.1 inzt08モジュールHCPチャート(ZWD
    9. コマンド処理

    10. 自分の位置を確認し、ロータリエンコーダのずれを修正する。
      1. モジュール定義

      2. void nrmt08(int,int):位置修正。
      3. HCPチャート

      4. 図12.2 nrmt08モジュールHCPチャート(ZWD
    11. 割り込み処理

    12. なし
      1. モジュール定義

      2. void intt08:なし
      3. HCPチャート

      4. Not exist
         
    13. タイマ処理
    14. なし

      1. モジュール定義

      2. void timt08():なし
      3. HCPチャート

      4. Not exist


13.task09:総合試験タスク

  1. 機能

  2. テストモードにしたがって、超音波、赤外線、タッチセンサ、 サーボ、ロータリーエンコーダ、及び走行テストを行う。
     
  3. コマンド仕様
  4. コマンド名コード
    (HEX)
    サブコマンド機能
    試験走行01n(モード)走行試験を行う。
    センサテスト02n(試験個所)各センサ試験を行う。試験個所の指定可能
  5. BB仕様
  6. 番号内容
    1情報1
    2情報2
    3情報3
    4情報4
    5情報5
    6情報6
    7情報7
    8情報8
  7. 初期設定

  8. BBをクリアする。
    1. モジュール定義

    2. void inzt09():リアルタイムモニタから呼ばれる初期設定関数。
    3. HCPチャート

    4. 図13.1 inzt09モジュールHCPチャート(ZWD
  9. 割り込み処理タスク

  10. なし
    1. モジュール定義

    2. interrupt void intt09():なし
    3. HCPチャート

  11. コマンド処理

  12. 詳細は、試験項目を参照
    1. モジュール定義

    2. void nrmt09(int,int):テストを行う
    3. HCPチャート

    4. 図13.2 nrmt09モジュールHCPチャート(ZWD
  13. タイマ処理

  14. なし
    1. モジュール定義

    2. void timt09(int,int):なし
    3. HCPチャート

    4. Not exist

14.試験

  1. タスク単体試験
    1. PWM制御タスク試験
    2. 自己位置認識タスク試験
    3. 超音波センサ制御タスク試験
    4. 赤外線センサ制御タスク試験
    5. タッチセンサ制御タスク試験
    6. MMI制御タスク試験
    7. 行動計画タスク試験
    8. 走行制御タスク試験
    9. 自己位置補正タスク試験
    10. 総合試験タスク試験
  2. 標準MIRS上での試験
    1. 直線走行試験
    2. 回転走行試験
    3. 総合試験
  3. 規定走行試験
  4. システム試験

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

ソフトウェアインストール手順書
MIRS9804.task00(Program file)
MIRS9804.task01(Program file)
MIRS9804.task02(Program file)
MIRS9804.task03(Program file)
MIRS9804.task04(Program file)
MIRS9804.task05(Program file)
MIRS9804.task06(Program file)
MIRS9804.task07(Program file)
MIRS9804.task08(Program file)
MIRS9804.task09(Program file)
MIRS9804タスク単体試験仕様書
MIRS9804標準MIRS上試験仕様書
MIRS9804規定走行試験仕様書
MIRS9804システム試験仕様書
MIRS9804取扱説明書 
関連文書