沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2001.5.31 | 勇・高根沢・中村 | 高根沢 | 初版 | ||
A02 | 2001.6.1 | 勇・高根沢・中村 | 高根沢 | 構成を表に改正 | ||
A03 | 2001.8.1 | 勇・高根沢・中村 | 高根沢 | 機能モジュールに赤外線デコードモジュールの追加、それに伴い図も更新 | ||
A04 | 2001.8.31 | 勇・高根沢・中村 | 高根沢 | 構造体の型を表にした・画像の更新 |
目次
本ドキュメントは、MIRS0004基本設計書(MIRS0004-DSGN-0003)に規定された システムの動作規定、状態遷移を実現する各タスクの開発(コーディング、試験等)に必 要な事項を述べる。
MIRS0004 ソフトウェアは、RT-Linux 上で動作するプログラム群で構成される。 プログラムは、Linux の標準の API とともに、行動モードに対応したプログラム、一つの機能を複数のプログラム群で提供する機能モジュール、および、RTタスク、ドライバと、補助関数と独自に定義したヘッダファイルから構成される。
本 MIRS0004 では、行動モードに対応した次の6個のモードモジュールを用意する。 IO 制御は、超音波測定と駆動系の制御を RT タスクとして駆動させ、 赤外線センサ信号入力探知と、LCD 出力は、デバイスドライバを用いて行う。 デバイスドライバは、標準 API のデバイスドライバを利用する。
以下にMIRS0004で用いる。モードモジュール・RTタスクモジュール・デバイスド ライバ・機能モジュール・関数モジュール・ヘッダファイルの関係を示す。
機能モジュール | 全て |
補助関数 | 全て |
RT タスク | 全て |
デバイスドライバ | 全て |
機能モジュール | 直進モジュール、回転モジュール |
補助関数 | PWM・ロータリーコーダエンコ−ダ デューティー比のデコード |
RT タスク | 超音波センサ RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール |
デバイスドライバ | なし |
typedef struct POINT{ int radius; double rage; }POINT; typedef struct{ int flag; POINT pt; }StructEvode;回避モード実行時に右にずれたか左にずれたか、どれだけずれたかを入力。
機能モジュール | 直進モジュール、回転モジュール |
補助関数 | PWM・ロータリーコーダエンコ−ダ デューティー比のデコード 回転角のエンコード |
RT タスク | 超音波センサ RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール |
デバイスドライバ | 赤外線センサドライバ・タッチセンサドライバ |
typedef struct { int postnum; int x; int y; }POSTDATA; postnumはポストの取る順番。 xはポストのx座標 yはポストのy座標
機能モジュール | 直進モジュール |
補助関数 | PWM・ロータリーコーダエンコ−ダ デューティー比のデコード |
RT タスク | 超音波センサ RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール |
デバイスドライバ | タッチセンサドライバ・赤外線ドライバ |
typedef struct{ int Length; int flag; }Discover;発見したかどうかとポストまでの距離を入力。
機能モジュール | 直進モジュール・回転モジュール |
補助関数 | PWM・ロータリーコーダエンコ−ダ デューティー比のデコード・回転角のエンコード |
RT タスク | 超音波センサ RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール |
デバイスドライバ | なし |
typedef struct { int Lenght; double rage; int radius; }GetPillarMove;獲得とレースモードの実行時に移動した距離、回った半径、回った角度を入力。
機能モジュール | 直進モジュール・回転モジュール |
補助関数 | PWM・ロータリーコーダエンコ−ダ デューティー比のデコード・回転角のエンコード |
RT タスク | 超音波センサ RTタスクモジュール PWM・ロータリーエンコーダ RTタスクモジュール |
デバイスドライバ | なし |
#define L (1)
#define END (0)
構造体名 | GetPillarMove |
定義 |
typedef struct{ int Lenght; double rage; int radius; }GetPillarMove; |
Length | 柱までの距離 |
rage | 柱の方向の角度 |
radius | 柱の回る半径 |
構造体名 | Discover |
定義 |
typedef struct{ int Length; int flag; }Discover; |
Length | 柱までの距離 |
flag | 右か左か |
構造体名 | POSTDATA |
定義 |
typedef struct{ int postnum; int x; int y; }POSTDATA; |
postnum | 柱をとった順番 |
x | x座標 |
y | y座標 |
構造体名 | POINT |
定義 |
typedef struct{ int radius; double rage; }POINT; |
radius | 初期位置から移動した量 |
rage | 移動した角度 |
構造体名 | StructEvode |
定義 |
typedef struct{ int flag; POINT pt; }StructEvode; |
pt | 上記参照 |
flag | 左右どちらに進んだか |
関連文書 |
---|