目次
1. 本ドキュメントについて2. 各動作モード概要・フローチャート
3. 標準プログラム関数について改良・流用
4. モード遷移表
5. 新規デバイスドライバ
1. 本ドキュメントについて
-
このドキュメントは、MIRS0802ソフトウェアの詳細設計を記述するものである。
2. 各動作モード概要・フローチャート
- 後退動作モード
- ポスト探索モード
- 左回転モード
- ポスト接近モード
- ポスト判別モード
- ポスト獲得モード
- 周回復帰モード
- ポスト番号保存モード
- 危機回避動作
関数名:back()
構成要素:白線センサデバイスドライバ
白線のある位置まで後退する。そして、右に90°回転し、ライントレースを始める。
構成要素:白線センサデバイスドライバ
白線のある位置まで後退する。そして、右に90°回転し、ライントレースを始める。
関数名:post_search()
構成要素:白線センサデバイスドライバ
超音波センサタスクモジュール
ライントレースしながら、左側の超音波センサでポストがあるか探索する。
3つの白線センサが白線を確認したら、「左回転モード」へ
ポストを発見したら、「ポスト接近モード」へ
構成要素:白線センサデバイスドライバ
超音波センサタスクモジュール
ライントレースしながら、左側の超音波センサでポストがあるか探索する。
3つの白線センサが白線を確認したら、「左回転モード」へ
ポストを発見したら、「ポスト接近モード」へ
図. (post_search.bmp)
関数名:turn left()
構成要素:なし
ライントレースができるように、左に90°回転する。
その後、「ポスト探索モード」へ
構成要素:なし
ライントレースができるように、左に90°回転する。
その後、「ポスト探索モード」へ
関数名:post_approach()
構成要素:超音波センサタスクモジュール
タッチセンサデバイスドライバ
前方の超音波センサで補正を行いながら、ポストに接近する。
バンパーにあるタッチセンサにポストが当たったら、「ポスト判別モード」へ
構成要素:超音波センサタスクモジュール
タッチセンサデバイスドライバ
前方の超音波センサで補正を行いながら、ポストに接近する。
バンパーにあるタッチセンサにポストが当たったら、「ポスト判別モード」へ
関数名:post_check()
構成要素:白線センサデバイスドライバ
バンパーに付いている白線センサでポスト番号を判別する。
その後、「ポスト獲得モード」へ
構成要素:白線センサデバイスドライバ
バンパーに付いている白線センサでポスト番号を判別する。
その後、「ポスト獲得モード」へ
関数名:post_get()
構成要素:
ポスト判別後、アームを動かしポストを獲得する。
アームを本体に閉まって、「周回復帰モード」へ
構成要素:
ポスト判別後、アームを動かしポストを獲得する。
アームを本体に閉まって、「周回復帰モード」へ
図. (post_get.bmp)
関数名:course_return ()
構成要素:白線センサデバイスドライバ
右に90°回転する。そして、白線が見つかるまで前進する。
白線を感知したら、左に90°回転し、ライントレースを数秒する。(ポスト探索は行わない。)
その後、「ポスト探索モード」へ
4つのポストを獲得したら、スタートしてからポストを発見した順番と、そのポスト番号を書き込む。これをもとにして2回目の競技では、判別動作をなしに順番どおりにポストを獲得する
構成要素:白線センサデバイスドライバ
右に90°回転する。そして、白線が見つかるまで前進する。
白線を感知したら、左に90°回転し、ライントレースを数秒する。(ポスト探索は行わない。)
その後、「ポスト探索モード」へ
4つのポストを獲得したら、スタートしてからポストを発見した順番と、そのポスト番号を書き込む。これをもとにして2回目の競技では、判別動作をなしに順番どおりにポストを獲得する
関数名:post_number()
構成要素:
4つのポストを獲得したら、スタートしてからポストを発見した順番と、そのポスト番号を書き込む。これをもとにして2回目の競技では、判別動作をなしに順番どおりにポストを獲得する
構成要素:
4つのポストを獲得したら、スタートしてからポストを発見した順番と、そのポスト番号を書き込む。これをもとにして2回目の競技では、判別動作をなしに順番どおりにポストを獲得する
関数名:crisis()
構成要素:
想定される基本プログラム外のトラブルを危機回避モードとしてスレッドを走らせ、予定外の行動を起こしたときに緊急回避を可能にさせる。
構成要素:
想定される基本プログラム外のトラブルを危機回避モードとしてスレッドを走らせ、予定外の行動を起こしたときに緊急回避を可能にさせる。
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. モード遷移表
図.(m_shift1.bmp)
5. 新規デバイスドライバ
- アーム制御ドライバ
-
IOポートアドレス0160(AMC制御信号)の下位2bitを使用。
アームを動作させるモータの動作を制御する。
FPGAとの対応、詳細はエレクトロニクス詳細設計書を参照。