沼津高専 電子制御工学科
MIRS9901ソフトウェア詳細設計書
MIRS9901-SOFT-0001
改訂記録
版数 作成日 作成者 承認 改訂内容
A01 2000.5.30 佐田/稲葉/坪井 佐田 初版
A02 2000.6.23 佐田/稲葉/坪井 佐田 他のドキュメントとの整合


目次

  1. はじめに
  2. 概要
  3. リアルタイムモニタ
  4. タスク詳細
  5. 試験

はじめに

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

概要

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

リアルタイムモニタ

  • タスクテーブル
  • タスク関数の処理の有無と優先度(高0〜6低)
    Oは有り
    Xは無し
    Task No. Initialization Normal Timer Interrupt Priority
    00 (MMI) O O O O 2
    01 (超音波センサ) O O X O 3
    02 (ロータリエンコーダ) O X O O 3
    03 (タッチセンサ) O X O O 3
    04 (PWM) O O O X 1
    05 (距離セット) O X X O 4
    06 (方向修正) O O O X 4
    07 (ポスト獲得) O O X O 3
    08 (障害物回避) O O X X 4
    09 (センサ試験) O O X X 4
    10 (行動試験) O O X O 5
    11 (行動計画) O X O O 6
    12 (ポスト探索) O X O O 5
    13 (横移動) O X O O 5

  • 低レベルタスク


    task00:MMI制御モジュールタスク

  • 機能

  • MMIボードのLED表示のコントロールと押しボタンスイッチの割り込みの受け取りを行う。BBに書かれた4桁のデータを4桁7seg-LEDに表示する機能。タイマにより一定時間ごとに表示の更新を行う。ロータリスイッチの値をBBに書き込む。
    BBに各設定値へのポインタを乗せているので、コマンドを使わずにそのポインタを用いることにより設定が即時反映される。
     
  • コマンド仕様
  • コマンド名 コード
    (HEX)
    サブコマンド 機能
    表示 01 n(BBの番号) 指定されたBB上のデータを表示する。4桁までしか表示しない。
    赤緑LED点灯設定 02 n(Flag) 赤緑LEDの点灯状態の設定。設定にはフラグn(内容はタイマタスク参照)を使う
    ロータリフラグの設定 03 n(Flag) ロータリフラグの設定(True or False)
    押しボタンの設定 04 n(Flag) 押しボタン割り込み許可フラグの設定(True or False)
    マクロ機能説明
    DISP_SET(x,y)表示データ設定 x 番目の表示データを y に設定
    LED_SET(x)LED点灯データ設定 赤緑LEDの点灯データを x に設定
  • BB仕様
  • 番号 内容
    0 表示データその1のポインタ
    1 表示データその2のポインタ
    2 表示データその3のポインタ
    3 表示データその4のポインタ
    4 表示するBB番号のポインタ
    5 ローテーションフラグのポインタ
    6 赤、緑LED表示状態のポインタ
    7 押しボタン割り込みフラグのポインタ
    8 ロータリスイッチの値
    9 押しボタンの押された回数
  • 初期設定

  • LED周りの初期設定を行う。BBクリア等も行う。
    1. モジュール定義

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

    4. 図1.1 inzt00モジュールHCPチャート
  • 割り込み処理タスク

  • 押しボタンスイッチの割り込みを受け取る。割り込みフラグをインクリメントする。(割り込みがあったかどうかは、各タスク内で値の変化を判断してください)。ロータリフラグが立っていれば表示BB位置を次の位置にする。
    1. モジュール定義

    2. interrupt void intt00():リアルタイムモニタから呼ばれる割り込み関数。
    3. HCPチャート

    4. 図1.2 intt00モジュールHCPチャート
  • コマンド処理

  • 表示BB位置、赤緑LED表示、ローテーションの設定を行う。
    1. モジュール定義

    2. void nrmt00(int,int):各フラグ等の設定を行う。
    3. HCPチャート

    4. 図1.3 nrmt00モジュールHCPチャート
  • タイマ処理

  • 指定されたBB上のデータをMMIの7seg-LEDに表示する。赤緑LEDの表示も行う。BB表示データの編集も行う(本番のみ)。BBの指定は、n=1〜4まではこのタスクの1〜4のBB表示。n=5以上は n-4 番目のBBを表示し、このときローテーションの端(min,max)の番号をこのタスクのBBの0,1番に書きこまれているものとする。赤緑LEDの表示状態は、点灯および点滅をするかをBitフラグ(1)で指定。また、ロータリスイッチの値をBBに書き込む。
    bit 7 6 5 4 3 2 1 0
    意味 0 緑前状態 緑点滅 緑点灯 0 赤前状態 赤点滅 赤点灯
    1. モジュール定義

    2. void timt00(int,int):表示する。
    3. HCPチャート

    4. 図1.4 timt00モジュールHCPチャート

    task01:超音波センサ制御タスク

    1.機能

    4個の超音波を入力された順に動作させ距離情報をBBに書き込む。測定開始コマンドによりタスク が起動されると、停止コマンドが実行されるまで測定を行い結果をBBに書き込む。超音波発信したのち 、タスクは開放され割り込み待ちになる。超音波受信もしくはタイムアウトにより割り込み処理が起動 され距離を計算してBBに書き込む。その後、次の決定したチャネルのセンサより超音波を発信し再び割 り込み待ち状態になる。

  • コマンド仕様
  • コマンド名 コード
    (HEX)
    サブコマンド 機能
    測定開始 01 n(チャネル) 指定されたチャネル番号のセンサの測定を開始する。測定はqueに登録された順で行われる。既に測定が開始されている状態でこのコマンドが起動されたときはqueに登録する。
    測定停止 02 any(未使用) 測定を停止し、queをクリアする。
    測定開始 03 any(未使用) 測定を開始。QUE への登録は無し。(通常は使用禁止)
  • BB仕様
  • 番号 内容
    0 チャネル0の測定結果[cm]
    タイムアウト:999
    ハードウェアエラー(センサの接続など):888
    近すぎ: 777
    1 チャネル0の測定回数
    2 チャネル1の測定結果[cm]
    他は同上
    3 チャネル1の測定回数
    4 チャネル2の測定結果[cm]
    他は同上
    5 チャネル2の測定回数
    6 チャネル3の測定結果[cm]
    他は同上
    7 チャネル3の測定回数
    8 queに入っている個数
    9 queの中身(bit coding)
  • 初期設定

  • IP-Digtal48のPIT(68230)のポートBの初期設定を行う。ポートAをモード0サブモード01に設定する。タイマをDevice watchdog モードに設定し、タイマ初期値として最大測定距離3mに相当するカウント値を設定する。
    1. モジュール定義

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

    4. 図1.5 : inzt01モジュールHCPチャート
  • 割り込み処理タスク

  • 超音波受信があった時、割り込み処理を行う。
    1. モジュール定義

    2. interrupt void intt01():リアルタイムモニタから呼ばれる割り込み関数。
    3. HCPチャート

    4. 図1.6 : intt01モジュールHCPチャート
  • タイマ処理タスク

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

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

    4. なし
  • コマンド処理
    1. モジュール定義

    2. void nrmt01(int,int):超音波測定開始・停止を行う関数。
    3. HCPチャート

    4. 図1.7 : nrmt01モジュールHCPチャート

    task02:ロータリーエンコーダタスク

    1.機能
    ロータリーエンコーダの値を読み取り、それから自機位置x,yを導出する。結果をBBに書きこむ。赤外線の割り込みにより赤外線の反応の有無についても扱う。

    2.コマンド仕様

    コマンド名 コード(HEX) サブコマンド 機能
    自機位置セット(x) 01 3 自機位置の算出
    自機位置セット(y) 02 4 自機位置の算出

    3.BB仕様

    番号 内容
      1 ロータリーエンコーダ左タイヤデータ
      2 ロータリーエンコーダ右タイヤデータ
      3 自機位置x
      4 自機位置y
      5 赤外線データ
      6 過去自機位置x
      7 過去自機位置y

    4.初期設定
    void rs_ts_init()をにロータリーエンコーダと赤外線のデータを初期化する。割り込みタスク登録・タイマタスクの登録をする。
    1.定義
    void inzt02():リアルタイムモニタから呼ばれる初期設定関数。
    2.HCPチャート


    図1.8.inzt02モジュールHCPチャート

    5.割り込み処理
    赤外線による割り込みによりどの赤外線の反応をしているか調べ結果をBBに書き込む。
    1.定義
    interrupt void intt02():赤外線センサの割り込み要求信号により実行される。赤外線センサの反応を調べBBに書き込む。
    2.HCPチャート


    図1.9.intt02モジュールHCPチャート

    6.タイマ処理
    一定時間ごとに起動され、ロータリーエンコーダの値を読み取り、位置の演算を行い、BBに書き込む。
    1.定義
    void timt02():タイマ割り込みによって一定時間ごとに起動される。
    2.HCPチャート


    図1.10.timt02モジュールHCPチャート

    7.コマンド処理
    無し


    task03:タッチセンサタスク

    1.機能
    タッチセンサより割り込み要求信号があるたびにどのタッチセンサが反応したかを調べ、そのデータをBBに書き込む。

    2.コマンド仕様

    コマンド名 コード
    (HEX)
    サブコマンド 機能
    信号受信 01 n タッチセンサの状態をBBに書き込む。
  • BB仕様
    番号内容
    1タッチセンサのデータ

    4.初期設定
    Hardware Function Library(HFL)のロータリーエンコーダ・タッチセンサの初期化関数void irs_init()を使ってタッチセンサのBBのデータを初期化。割り込みタスクの登録を行う。
    1.定義
    inzt03():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート


    図1.11.inzt03モジュールHCPチャート

    5.割り込み処理
    タッチセンサの割り込み要求信号により実行、どのタッチセンサが反応したかを調べBBに書き込む。
    1.定義
    interrupt void intt03():タッチセンサの割り込み要求信号により実行される。
    2.HCPチャート


    図1.12.intt03モジュールHCPチャート

    6.タイマ処理
    無い

    7.コマンド処理
    無い


    task04:PWM駆動タスク

    1.機能
    一定時間毎に起動され、タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。

    2.コマンド仕様

    コマンド名コード
    (HEX)
    サブコマンド機能
    左右モータ駆動 01 n タスク起動時に受け渡される引数によって指定される左右車輪の速度データをPWMに書き込む。
  • BB仕様
    番号内容
    1左PWMデータ
    2右PWMデータ

    4.初期設定
    void_pwm_init()を用い、PWMのBBのデータを初期化。タイマタスクの登録。
    1.定義
    void inzt04():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート


    図1.13.inzt04モジュールHCPチャート

    5.割り込み処理
    無し

    6.タイマ処理
    一定時間ごとに実行されHFLのPWM系関数void pwm_data(int r, int l)によって引数のデューティー比をPWMに書き込む。
    1.定義
    void timt04():タイマ割り込みによって一定時間ごとに実行される。
    2.HCPチャート


    図1.14.timt04モジュールHCPチャート

    7.コマンド処理
    無し。


    高レベルタスク


    task05:距離セットタスク

    1.機能
    縦の残距離(壁までの距離)yと,横の残距離(ポストまでの距離)xを計算する。yはロータリーエンコーダの値によって計算(引き算)し、xは初期値を超音波センサ右の値とし、後はロータリーエンコーダの値によって計算(引き算)する。タッチセンサに反応があった時に残距離がほぼ0ならポストと判断する。実行するタイミングはロータリーエンコーダの計測終了毎。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能
    残距離セット  01 n  ロータリーエンコーダの値から残距離を引き算による再設定。

    3.BB仕様

    番号 内容
      1 残距離(壁)y
      2 残距離(ポスト)x

    4.初期設定
    BBのデータを初期化。残距離(壁)yの値を設定。
    1.定義
    void inzt05():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.15.inzt05モジュールHCPチャート

    5.割り込み処理
    無し

    6.タイマ処理
    無し

    7.コマンド処理
    ロータリーエンコーダの値の計測毎に起動される。その時点でのロータリーエンコーダの値を読み(この後ロータリーエンコーダの値は初期化される。)、残距離y=残距離y-ロータリーエンコーダの値、という計算を行う。横移動中は残距離x=残距離x-ロータリーエンコーダという計算を行う。
    1.定義
    void nrmt05():ロータリーエンコーダ計測終了後に呼び出されて起動。
    2.HCPチャート

    図1.16.intt05モジュールHCPチャート


    task06:方向修正タスク

    1.機能
    一定時間毎に起動し、左右の超音波センサにより、より正確に壁からの距離を計測して軌道を修正する。

    2.コマンド仕様

    なし

    3.BB仕様

      
    番号 内容
    1 旧超音波センサ左データ
    2 旧超音波センサ右データ
    3 修正データ左タイヤ(duty比)
    4 修正データ右タイヤ(duty比)

    4.初期設定
    BBにあるデータを初期化。割り込みタスクの登録。
    1.定義
    void inzt06():リアルタイムモニタから呼び出される初期設定タスク。
    2.HCPチャート

    図1.17.inzt06モジュールHCPチャート

    5.割り込み処理
    左右の超音波センサに反応があるごとに起動。その時の左右の超音波センサデータと前回の左右超音波センサのデータとを比較して方向修正のためのデータを作成(PWMのデータとして)。そしてそのデータをPWMの方に送り実際に動かす。
    1.定義
    oivd intt06():超音波センサの割り込み要求信号で起動。
    2.HCPチャート

    図1.18.intt06モジュールHCPチャート

    6.タイマ処理
    無し

    7.コマンド処理
    無し


    task07:ポスト獲得タスク

    1.機能
    ポストを獲得し、赤外線センサにより獲得されたか否かを判断する。 同時に死角にあるポストの探索も行うタスク。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能
    回転  01  1 反応のあったタッチセンサの位置の値から回転角を計算し回転、その後ポストのまわりを多角形周りする。
    超音波センサ  02  2 ポストを多角形に周りながら、ある範囲で外側の超音波センサによって 死角のポストを発見する。

    3.BB仕様

    番号 内容
      1 前面の赤外線センサ
      2 外側の超音波センサデータ

    4.初期設定
    BBのデータの初期化。割り込みタスクの登録。
    1.定義
    void inzt07():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.18.inzt07モジュールHCPチャート

    5.割り込み処理
    1周目は赤外線の割り込み要求信号にたいして発動。スイッチ押下に入る。そしてスイッチ押下後、2周目は超音波の割り込み要求信号に対して発動し、死角にあるポスト獲得に向かう。
    1.定義
    void intt07():赤外線の割り込み要求信号により起動。
    2.HCPチャート

    図1.19.intt07モジュールHCPチャート

    6.タイマ処理
    無し

    7.コマンド処理
    タッチセンサの反応により回転、その後ポストの周りを多角形で周回する。終了後にtask11行動計画タスクの獲得終了フラグを立てる。
    1.定義
    void nrmt07():task13横移動タスクから呼び出される。
    2.HCPチャート


    task08:障害物回避タスク

    1.機能
    タッチセンサに反応があり、それが障害物であると判断された場合のみ起動。障害物を回避し、その移動分を距離セットタスクの残距離データに書きこむ。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能
    障害物回避      01   障害物回避行動をとる。
    壁回避      02   壁回避行動をとる.。

    3.BB仕様

    番号 内容

    4.初期設定
    BBのデータの初期化。
    1.定義
    void inzt08():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.20.inzt08モジュールHCPチャート

    5.割り込み処理
    今のところ無し。

    6.タイマ処理
    今のところ無し

    7.コマンド処理
    回避を行う。回避の仕方はtask05の残距離yの値がほぼ0なら壁回避動作(決められた分だけ後退し180°その場回転)、yがほぼ0でなければ(この場合ポストにぶつかったことになる)反応したタッチセンサよりどちら側(ポストの右か左かということ)に回避するかを決める。その後移動(回避)。終了後task11行動計画タスクの回避終了フラグを立てる。
    1.定義
    void nrmt08():初期設定関数から呼び出される。
    2.HCPチャート

    図1.21.nrmt08モジュールHCPチャート


    task09:センサ試験タスク

    1.機能
    各センサが正常に動作するかを試験する。DIPスイッチによって試験するセンサを選別する。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能
    センサ試験      01 2  DIPスイッチの状況より試験するセンサを選択し試験する。

    3.BB仕様

    番号 内容
      1 LED表示データ
      2 DIPスイッチ選択データ

    4.初期設定
    BBのデータを初期化。
    1.定義
    void inzt09():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.22.inzt09モジュールHCPチャート

    5.割り込み
    無し

    6.タイマ処理
    無し

    7.コマンド処理
    試験項目を参照
    1.定義
    void nrmt09():センサのテストをする。
    2.HCPチャート

    図1.23.nrmt09モジュールHCPチャート


    task10:行動試験タスク

    1.機能
    各行動を正常に動作できるかの試験。DIPスイッチによって試験する行動を選別する。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能
    選択及び試験      01  2 実際に試験させる。

    3.BB仕様

    番号 内容
      1 LED表示データ
      2 DIPスイッチ選択データ

    4.初期設定
    BBのデータを初期化。コマンド処理void nrmt09()を呼び出す。
    1.定義
    void inzt10():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.24.inzt10モジュールHCPチャート

    5.割り込み
    Mirsの暴走を停止するためのハードウェア割り込み。

    6.タイマ処理
    今のところ無し。

    7.コマンド処理
    DIPスイッチの状態より試験する行動を判断。それぞれの行動に関するタスクを呼び出し実行する。 結果をBBから読み、エラー等をLEDで表示する。
    1.定義
    void nrmt10():初期設定関数から呼び出されて起動。
    2.HCPチャート

    図1.25.nrmt10モジュールHCPチャート

     


    メインタスク


    task11:行動計画タスク

    1.機能
    MIRSの行動を司るタスク。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能

    3.BB仕様

    MIRSの行動は、ポスト探索、ポスト獲得、ポスト回避であるので、以下を定義する。
    番号 内容
      1 フラグ01獲得終了フラグ:task07ポスト獲得タスク終了後このフラグが立てられ、このタスクが終わった目印になる。
      2 フラグ02回避終了フラグ:task08障害物回避タスク終了後このフラグが立てられ、このタスクが終わった目印になる。
      3 フラグ03開始タスク判別フラグ:task12ポスト探索タスクからほかのタスクを呼び出した場合このフラグは降りたままで、task13横移動タスクからほかのタスクを呼び出した場合このフラグを立てる。

    4.初期設定
    BBのデータを初期化。task00:MMIタスクを呼び出して初期設定を行う。タイマタスク・割り込みタスクの登録をする。
    1.定義
    void inzt11():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.26.inzt11モジュールHCPチャート

    5.割り込み
    mirsのモータ駆動部の電源が投入されたら起動。DIPスイッチの状態によりtask09センサ試験タスクやtask10試験走行タスクを呼び出す。

    6.タイマ処理
    一定時間毎にBBのデータのフラグを見てフラグ01orフラグ02が立っていたらフラグ03の状況によりtask08障害物回避タスクかtask12ポスト探索タスクかtask13横移動タスクを呼び出す。その後立っているフラグを下げる(フラグ03は除く)。
    1.定義
    void timt11():一定時間毎に呼び出される。
    2.HCPチャート

    図1.27.timt11モジュールHCPチャート

    7.コマンド処理
    無し


    task12:ポスト探索タスク

    1.機能
    MIRSの走行(前後)とポスト探索を司るタスク。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能

    3.BB仕様

    番号 内容
    1 ポスト位置データ

    4.初期設定
    BBのデータを初期化。割り込みタスク・タイマタスクの登録をする。
    1.定義
    void inzt12():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.28.inzt12モジュールHCPチャート

    5.割り込み
    超音波センサかタッチセンサの割り込み要求信号より割り込み処理が行われる。超音波センサの場合task13横移動タスクを 呼び出す。 タッチセンサの場合タッチセンサのデータをBBより読み込み、 (壁の場合もある)、その値をBBに書きこむ。距離セットタスクの残距離(ポスト)xの値により task07ポスト獲得タスクか、task08障害物回避タスクを呼び出す。

    1.定義
    void intt12():タッチセンサの割り込み要求信号により起動される。
    2.HCPチャート
    図1.29.intt12モジュールHCPチャート

    6.タイマ処理
    縦移動をする。
    1.定義
    void timt12():タイマ割り込みにより一定時間毎に起動される。
    2.HCPチャート

    図1.30.timt12モジュールHCPチャート

    7.コマンド処理
    無し


    task13:横移動タスク

    1.機能
    MIRSの走行(横)を司るタスク。

    2.コマンド仕様

    コマンド コード(HEX) サブコマンド 機能

    3.BB仕様

    番号 内容
      1 ポスト位置データ

    4.初期設定
    BBのデータを初期化。割り込みタスク・タイマタスクの登録をする。
    1.定義
    void inzt13():リアルタイムモニタから呼び出される初期設定関数。
    2.HCPチャート

    図1.31.inzt13モジュールHCPチャート

    5.割り込み
    タッチセンサの割り込み要求信号より割り込み処理が行われる。タッチセンサのデータをBBより読み込み、それからポストが自機より右にあるか左にあるか判断し(壁の場合もある)、その値をBBに書きこむ。距離セットタスクの残距離(ポスト)xの値によりtask07ポスト獲得タスクを呼び出す。

    1.定義
    void intt13():タッチセンサの割り込み要求信号により起動される。
    2.HCPチャート
    図1.32.timt13モジュールHCPチャート

    6.タイマ処理
    横移動をする。 1.定義
    void timt13():タイマ割り込みにより一定時間毎に起動される。
    2.HCPチャート

    図1.33.timt13モジュールHCPチャート

    7.コマンド処理
    無し

    5.試験 ソフトウェア試験


    <システム試験 >

    試験用に作成したプログラムを使用

    ディップスイッチ、押しボタンスイッチにより試験項目を選択する。

    1. 規定動作試験(ディップスイッチを0に設定)

    ディップスイッチを0に設定した後、更に以下に示すように設定する。

    1.1 動きを設定(ディップスイッチ下位2ビットの設定)

    00:その場回転
    01:半径25cmの円を描く
    10:半径50cmの円を描く
    11:1m前進

    1.2 速度を設定(ディップスイッチ上位2ビットの設定)

    00:0.2m/sec
    01:0.5m/sec
    10:0.8m/sec
    11:1.0m/sec

    1.3 タッチセンサの設定(進行方向、回転方向を決定)

    前、右:後退または左回転
    左  :後退または右回転
    後  :前進

    2. 各センサ動作試験(ディップスイッチを5に設定)

    押しボタンスイッチにより、以下の順に試験項目を選択。

    2.1 RTCによるタイマ割り込み

    10分の1秒単位のカウンタを7seg.LEDに表示。

    2.2 自己座標算出

    自己のX座標、Y座標をディップスイッチにより順次切り替えて7seg.LEDに表示。

    2.3 超音波センサ

    使用するセンサを押しボタンスイッチにより順次切り替えて7seg.LEDに表示。

    2.4 タッチセンサ

    反応のあったセンサに対応する番号を7seg.LEDに表示。

    2.5 赤外線センサ

    前方を0°として、ディップスイッチにより切り替えて7seg.LEDに赤外線の方向を角度で表示。

    2.6 ディップスイッチ

    ディップスイッチの状態を7seg.LEDで表示。

    2.7 ロータリエンコーダ

    ロータリエンコーダのカウント値を7seg.LEDで表示。


    <標準MIRS上での試験>

    試験用に作成したプログラムを使用

    MIRS9901システムの基本的な動作を基に試験を行う。

    1. 動作試験

    基本的動作

    超音波で距離を測定,表示しながら直進する。
    タッチセンサに反応があると、右に90度その場回転する。
    その後、超音波を送信せずに1m直進し、右に90度回転する。
    ここでは、どの程度の誤差が生じるか測定する。

    ポスト獲得動作

    ポストの周りを回る。
    赤外線に反応があったら、停止する。
    赤外線に反応がなかった場合、1周して停止する。
    ポストの周りをどの程度の誤差でまわれるか測定する。