10.ソフトウェア構成
本ソフトウェアは,リアルタイムモニタを用いマルチタスク処理を実現する.リアルタイムモニタは93年度電子制御工学科卒業研究で開発されたMIRX68Kを使用する.但し,MIRX68Kは,旧型MIRS制御ボード用に開発されたもので,これをVSBC1に移植する作業が必要である.また,現在MIRX68Kのリンク手順はパソコン(PC9800)上でのみ確立されいるので,これをWS上(Masterworks上)でのリンク手順を作成しなければならない.
タスクの作成
ここでは、プログラムを大きくセンサ管理、PWM、モード決定、演算処理の4つに分け、その上にモード決定のためのタスクをおく。これらのタスクは、状況に応じてさらに細かく分割される。それぞれのタスクで行われる処理を、下の様に定める。
制御Task | モード決定 | ノーマル処理 |
Task A | 赤外線センサ管理 | 割り込み処理 |
Task B | 超音波センサ管理 | タイマ(送信)割り込み(受信)処理 |
Task C | タッチセンサ管理 | 割り込み処理 |
Task D | ロータリーエンコーダ | タイマ処理 |
Task E | 駆動系制御 | ノーマル処理 |
Task F | 演算処理 | ノーマル処理 |
それぞれのタスクの概要
- モード決定
- 演算処理部からの位置データと、超音波センサからのデータをもとに行動モードをけっていし、駆動系制御部にモータの制御データを送る。
赤外線センサ管理部からの信号に対する処理を最優先とする。
- 赤外線センサ管理
- 赤外線センサからの割込み信号により起動。
赤外線入力データを制御タスク(モード決定)に送る。
- 超音波センサ管理
- インターバルタイマにより、一定の時間周期毎に起動。
距離の算出、タスクF(演算処理部)へデータを送る。
- タッチセンサ管理
- タッチセンサからの割込み信号により起動。
タッチセンサ入力データを制御タスク(モード決定)に送る。
- ロータリエンコーダ
- インターバルタイマにより、一定の時間周期毎に起動。
計測値をタスクFに送る。
- 駆動系制御制御
- タスクからの信号によって、PWM回路に信号を出力する。
- 演算処理
- タスクD(ロータリーエンコーダ)からの信号から自MIRSの場所(x,y座標と姿勢角)を算出する。
タスクの遷移を図14に表す。
各モジュールで得られる情報は以下のようになる。
TASK名 | センサ名 | 情報 |
TASK1 | 赤外線センサ | 相手機のLEDが見えるか |
TASK2 | 超音波センサ | 前・左・右の(壁or相手機との)距離 |
TASK3 | タッチセンサ | 壁or相手機が接触しているか |
TASK6 | ロータリーエンコーダ | 自機の位置 |
なお、具体的なプログラムの書き方等については、卒業研究報告書「小型ロボット用リアルタイムモニタの設計、製作」に従う。
目次に戻る
表紙に戻る