沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2003.5.27 | 全員 | 今村 | 初版 | ||
A02 | 2003.6.17 | 今村 | 今村 | 改訂版 白線探知センサをデバイスドライバに変更等 |
本ドキュメントは、に規定された システムの動作規定、状態遷移を実現する各タスクの開発(コーディング、試験等)に必要な事項を述べる。
MIRS0201 では、行動モードに対応した次の8個のモードモジュールを用意する。 IO 制御は、超音波測定と駆動系の制御を RT タスクとして駆動させ、 赤外線センサ信号入力探知と、LCD 出力、白線探知、タッチセンサ信号入力探知は、デバイスドライバを用いて行う。 デバイスドライバは、タッチセンサ信号入力探知、白線探知に関しては標準APIのデバイスドライバを変更して利用する。LCDドライバ、赤外線センサ信号入力探知に関しては、各々のデバイスドラバを作成する。
MIRS0201 ソフトウェアは、RT-Linux 上で動作するプログラム群で構成される。 プログラムは、Linux の標準の API とともに、行動モードに対応したプログラム、一つの機能を複数のプログラム群で提供する機能モジュール、および、RTタスク、ドライバと、補助関数と独自に定義したヘッダファイルから構成される。
定義:メインプログラムを立ち上げる。競技が始まる(スタートスイッチが押される)まで、待機状態を続ける。 遷移条件:競技開始時にテンキーからポスト数、動作番号を入力→白線検索モード ポストの配置状況により、ポストにぶつかることなく直進できる時テンキー入力→ポスト探索モード 構成要素:LCDデバイスドライバ 関数名:post() 引数:type,postnumber 戻り値:start フローチャート:
定義:プログラムスタート直後、MIRSが白線まで後進する。その後、回転し,垂直補正する。 遷移条件:スタート直後、後退して白線を感知、垂直補正→コース探索モード 構成要素:垂直補正モジュール 直進走行モジュール 回転モジュール 白線センサデバイスドライバ 関数名:whiteline() 引数:なし 戻り値:line フローチャート:
定義:白線沿いに直進し、さらに競技場に向かってY軸となるコースを超音波により探索する。 遷移条件:MIRSが通過可能なY軸を発見→ポスト探索モード 右(左)の白線に到達→反対方向へ進みコース探索モード MIRSが通過可能なY軸を発見できない→横軸へ 構成要素:直進走行モジュール 回転モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:course_tansaku() 引数:なし 戻り値:y_jiku,right_line,left_line,line フローチャート:
定義:通り道を探したら、向こう側の白線まで直進する。この際、左右の超音波センサでポストを探索していく。ただし、この時ポストには接近しない。 遷移条件:白線を感知→コース移動モード1 ポスト探索モード開始後3.6m以上進んでも白線を見つけられない→動作不明モード 構成要素:直進走行モジュール 垂直補正モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:post_tansaku() 引数:なし 戻り値:right_uss,left_uss,line,post_right,post_left フローチャート:
定義:ポスト探索により記憶したポストの位置までコースを後進していく。超音波によりMIRS横にポストがあるところで停止する。 遷移条件:MIRS横にポストを発見し停止→ポスト検索モード1 構成要素:直進走行モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:course_idou1() 引数:right_uss,left_uss 戻り値:siten,line フローチャート:
定義:後進した場所からポストまで接近し、ポストを周回する。このとき、ポストからの赤外線を感知し記憶し、さらに周回するポストの反対側に隠れたポストを超音波で探索する。1周した後に元のコースへ戻る。また、ポストの座標も記憶しておく。 遷移条件:スタート時に入力されたポストを識別完了→コース移動モード2 ポスト番号識別完了後Y軸に戻る(認識していないポストがある)→ポスト検索モード1 ポストの陰に隠れたポストを発見→ポスト検索モード2 赤外線コードが次に獲得すべき番号→ポスト獲得モード1 白線を感知→動作不明モード 構成要素:直進走行モジュール 回転モジュール ポスト周回モジュール ポスト識別モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:post_kensaku1() 引数:post_right,post_left,siten 戻り値:post_n,kage_post,line フローチャート:
定義:ポスト検索モード1で新たなポストを発見した場合、そのポストまで接近し、検索モード1と同様の作業を行う。1周したあと、最初のポストの周回コースに戻る。 遷移条件:ポスト番号識別完了後Y軸に戻る(認識していないポストがある)→ポスト検索モード1 ポストの陰に隠れたポストを発見→ポスト検索モード2 赤外線コードが次に獲得すべき番号→ポスト獲得モード1 白線を感知→動作不明モード 構成要素:直進走行モジュール 回転モジュール ポスト周回モジュール ポスト識別モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:post_kensaku2 引数:kage_post,siten 戻り値:post_n,line フローチャート:
定義:ポスト検索中に検知したポスト番号が、取得すべきポストの番号だった場合、そのポストをアームによって取得する。 遷移条件:ポストの赤外線が消えたことを確認しY軸に復帰→ポスト検索モード1 ポストの赤外線が消えない→ポスト獲得モード1 白線を感知→動作不明モード 構成要素:ポスト獲得モジュール 白線センサデバイスドライバ 関数名:post_kakutoku1() 引数:なし 戻り値:post_n,line フローチャート:
定義:ポストの番号の順にコースを移動していくモード。 遷移条件:次に獲得すべきポストを発見→ポスト獲得モード2 白線を感知→動作不明モード 一定時間探しても次に獲得すべきポストが発見できない→番号関係なしでポストを獲得する 構成要素:直進走行モジュール 回転モジュール 超音波センサRT-タスクモジュール 白線センサドライバ 関数名:course_idou2() 引数:post_n 戻り値:siten,line,error フローチャート:
定義:Y軸からポストに接近し、周回、ポストの獲得をするモード。検索時に記憶した座標のポストを獲得する。隠れていたポストを取得する場合は超音波によって、正確な位置を測定し、接近する。 遷移条件:そのポストの陰にポストがある場合→ポスト獲得モード2 白線を感知→動作不明モード 構成要素:直進走行モジュール 回転モジュール ポスト周回モジュール ポスト識別モジュール ポスト獲得モジュール 超音波センサRT-タスクモジュール 白線センサドライバ 関数名:post_kakutoku2() 引数:siten,post_n,kage_post 戻り値:post_n,line フローチャート:
定義:一定時間同じ動作を繰り返したら、直進して白線を探す。白線を見つけたあとは、白線からコース探索モードに移る。(初期化) 遷移条件:白線を発見→白線上を移動→コース探索モード 構成要素:直進走行モジュール 回転モジュール 垂直補正モジュール 超音波センサRT-タスクモジュール 白線センサデバイスドライバ 関数名:humei() 引数:start 戻り値:なし フローチャート:
定義:白線に対して本体を垂直に補正する 構成要素:白線センサデバイスドライバ、PWM/ロータリエンコーダRT-タスクモジュール、LCDデバイスドライバ 関数名:void suityoku() 引数:なし 戻り値:なし
定義:ポストの周りを一定距離を保ったまま周回する 構成要素:PWM/ロータリエンコーダRT-タスクモジュール、超音波センサRT-タスクモジュール、LCDデバイスドライバ 関数名:void shykai() 引数:なし 戻り値:なし
定義:ポストの赤外線の番号を識別する 構成要素:赤外線センサRT-タスクモジュール、LCDデバイスドライバ 関数名:void irs_number() 引数:なし 戻り値:number
定義:識別したポストが次にとるポストならばアームを伸ばす 構成要素:タッチセンサデバイスドライバ、LCDデバイスドライバ、アームデバイスドライバ 関数名:void get_post() 引数:discernment 戻り値:なし
定義:MIRS0201の行動を決定する 構成要素:PWM/ロータリエンコーダ・超音波センサ・白線検知センサRT-タスクモジュール、赤外線センサ・タッチセンサ・LCDデバイスドライバ等 関数名:void main() 引数:なし 戻り値:なし
定義:MIRS0201を指定した距離直進移動させる 構成要素:PWM/ロータリエンコーダRT-タスクモジュール、LCDデバイスドライバ 関数名:void straight() 引数:distance 戻り値:なし
定義:MIRS0201を指定した角度その場で回転させる 構成要素:PWM/ロータリエンコーダRT-タスクモジュール、LCDデバイスドライバ 関数名:void turn() 引数:angle 戻り値:なし
定義:各種試験を行う 構成要素:各種RT-タスクモジュール、デバイスドライバ等 関数名:void exam() 引数:なし 戻り値:なし
関連ドキュメント | ||
---|---|---|
ドキュメント番号 | ドキュメント名称 | 作成者 |
MIRS0201-SOFT-0002 | MIRS0201 ソフトウェア取扱設計書 | 鈴木健二 |
MIRS0201-DSGN-0004 | MIRS0201 基本設計書 | MIRS0201全員 |
MIRS02SF-CURR-0012 | MIRS2002 ソフトウェア詳細設計書作成規定 | 大原先生 |