| 沼津高専 電子制御工学科 | ||||||
| ||||||
| 改訂記録 | ||||||
|---|---|---|---|---|---|---|
| 版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
| 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 | 左右どちらに進んだか |
| 関連文書 |
|---|