目次
1. 本ドキュメントについて2. MIRS0802プログラムについて
3. 標準プログラム関数について改良・流用
4. モード遷移表
5. 新規デバイスドライバ
1. 本ドキュメントについて
-
このドキュメントは、MIRS0802ソフトウェアの詳細設計を記述するものである。
2. MIRS0802プログラムについて
- 競技1回目
- 競技2回目
- 標準位置移動モード
- 白線復帰モード
- ポスト探索モード
- ポスト接近モード
- ポスト判別モード
- ポスト獲得モード
- 行動判断モード
2.1. プログラム概要
-
競技1回目と2回目では動作が異なる為、実行ファイルを2つ用意し、
それに伴ない、各競技専用のモードも作成する。
競技1回目は、反時計回りにライントレース、
ポストは順不同、発見し次第獲得をしていき、同時にポスト情報(番号、位置)を記録する。
競技2回目は、1回目に得たポスト情報により行動判断、経路設計を行い、
短時間の間に順番にポストを獲得していくことを目指す。
(基本設計書を参照のこと)
2.2. プログラム構成
図1. 競技1回目(struct1.bmp)
図2. 競技2回目(struct2.bmp)
2.3. 各動作モード概要
関数名:move_std()
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
スタート位置から白線のある位置まで後退する。
後退を完了した位置をポスト座標を考えるときの基準にする。
「ポスト探索モード」に移る。
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
スタート位置から白線のある位置まで後退する。
後退を完了した位置をポスト座標を考えるときの基準にする。
「ポスト探索モード」に移る。
関数名:line_return()
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
白線のある位置まで後退する。そして、右に90°回転し、ライントレースを始める。
「ポスト探索モード」に移る。
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
白線のある位置まで後退する。そして、右に90°回転し、ライントレースを始める。
「ポスト探索モード」に移る。
関数名:post_search1(), post_search2()
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
超音波センサタスクモジュール
ライントレースしながら、左側の超音波センサでポストがあるか探索する。
ポストを発見したら、「ポスト接近モード」へ
構成要素:白線センサデバイスドライバ、ロータリーエンコーダドライバ
超音波センサタスクモジュール
ライントレースしながら、左側の超音波センサでポストがあるか探索する。
ポストを発見したら、「ポスト接近モード」へ
2回目は前進と後退のライントレースを使い分け、
1回目に得たポスト位置情報を元に、最短距離でポストへ移動する。
1回目に得たポスト位置情報を元に、最短距離でポストへ移動する。
関数名:post_approach()
構成要素:超音波センサタスクモジュール、ロータリーエンコーダドライバ
タッチセンサデバイスドライバ
前方の超音波センサで補正を行いながら、ポストに接近する。
バンパーにあるタッチセンサにポストが当たったら、「ポスト判別モード」へ
構成要素:超音波センサタスクモジュール、ロータリーエンコーダドライバ
タッチセンサデバイスドライバ
前方の超音波センサで補正を行いながら、ポストに接近する。
バンパーにあるタッチセンサにポストが当たったら、「ポスト判別モード」へ
関数名:post_check()
構成要素:白線センサデバイスドライバ
バンパーに付いている白線センサでポスト番号を判別する。
また、読み取り時のMIRSの位置を記憶し、2回目の探索に役立てる。
その後、「ポスト獲得モード」へ
構成要素:白線センサデバイスドライバ
バンパーに付いている白線センサでポスト番号を判別する。
また、読み取り時のMIRSの位置を記憶し、2回目の探索に役立てる。
その後、「ポスト獲得モード」へ
関数名:post_get()
構成要素:
ポスト判別後、アームを動かしポストを獲得する。
アームを本体に閉まって、「周回復帰モード」へ
構成要素:
ポスト判別後、アームを動かしポストを獲得する。
アームを本体に閉まって、「周回復帰モード」へ
関数名:act_decide()
構成要素:
1回目に得たポスト情報を整理し、不明なポストの位置も予測、
行動経路を設計し、最短で、順番にポストの獲得が行なえるようにする。
構成要素:
1回目に得たポスト情報を整理し、不明なポストの位置も予測、
行動経路を設計し、最短で、順番にポストの獲得が行なえるようにする。
3. 標準プログラム関数について改良・流用
- 行動制御系
- 駆動系
- スレッド系
MIRS0802ではアームによる獲得機構によりポスト獲得動作時の周回動作を省き、位置の誤差を減らすように設計している。
また、赤外線センサを使用してない。
なので、標準機プログラムの関数、ヘッダファイルには、周回動作、赤外線センサに関わるものについては流用・及び改良しない。
また、赤外線センサを使用してない。
なので、標準機プログラムの関数、ヘッダファイルには、周回動作、赤外線センサに関わるものについては流用・及び改良しない。
改良する関数
control_test.c
initialize.c
post_search.c
post_check.c
rm_data.c
post_approach.c
functions.c
correct_center.c
流用する関数
void pwm_enco_start(int);
void pwm_enco_stop(void);
void pwm_enco_restart(void);
void encoder_data(float *lm, float *rm, float *lv, float *rv, int *br);
void encoder_data2(float *la, float *ra, int *br);
void encoder_data3(float *la, float *ra, int *br);
void pwm_both_data(int, int);
void pwm_straight(int, int);
void pwm_rotate(int);
void pwm_lqr_straight(int, int);
void pwm_lqr_rotate(int, int);
int pwm_lqr_straight(int, int);
int pwm_lqr_rotate(int, int);
int pwm_lqr_circle(int, int, int);
void *irs_ts_ws(void *t);
void *encoder(void *t);
void *uss_read(void *t);
void *uss_read(void *t);
4. モード遷移表
- 競技1回目
- 競技2回目
図3. 競技1回目(m_shift1.bmp)
図4. 競技2回目(m_shift2.bmp)
5. 新規デバイスドライバ
- アーム制御ドライバ
-
IOポートアドレス0160(AMC制御信号)の下位2bitを使用。
アームを動作させるモータの動作を制御する。
FPGAとの対応、詳細はエレクトロニクス詳細設計書を参照。