MIRS2008 ソフトウェア製造仕様書 |
MIRS0801-SOFT-0002 |
版数 |
最終更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2009/2/24 |
小林、井上 |
和泉 |
初版 |
目次
1. 目的
2. 動作内容
2.1 1回目動作内容
2.2 2回目動作内容
3.1 関数
3.2 グローバル関数
4. 各動作内容
4.1 ポスト獲得1回目
4.2 ポスト獲得2回目
5. 主要な関数の動作内容
5.1 p_check
5.2 post_get
6. ポスト獲得動作
1 目的
この文書ではMIRS0701基本設計書に規定されたシステムの動作規定、 状態遷移を実現する各タスクの開発(コーディング、試験等)に必要な事項を述べる。
2 動作内容
2.1 一回目動作内容
競技場中央線上を往復し、MIRS進行方向に対し右側にあるポストを超音波センサで探索する。
探索時に見つけたポストは番号にかかわらず獲得に向かう。
以下にフローチャートを示す。
2回目動作内容
競技場中央線上を移動しながら、一回目の動作で得たデータを元に、できる限り順番どおりにポストを獲得する
以下にフローチャートを示す。
3 新たに追加、変更した関数、グローバル変数
関数名 |
引数 |
機能 |
int post_search_first(void) |
無し |
競技1回目でのポスト探索 |
int post_search_u(void) |
無し |
競技2回目でのポスト探索 ポストのデータがある場合に使用 |
int post_search_m(void) |
無し |
競技2回目でのポスト探索 ポストのデータが無い場合に使用 |
int post_search_s(void) |
無し |
競技2回目でのポスト探索 1回目でぶつかったポストを獲得する |
int post_search_d(void) |
無し |
競技2回目でのポスト探索 順番どおりに獲得できなかった場合に使用 |
int correct_drection2(void) |
無し |
正対補正 補正量をグローバル変数cor_ang2に代入 |
int correct_direction3(void) |
無し |
正対補正 |
int post_get(int) |
ポスト番号 |
ポストの獲得(ポストの周りを1周) |
int post_get2(int) |
ポスト番号 |
ポストの獲得(ポストの周りを半周) |
int post_approach2 |
ポスト番号 |
正対補正をまとめた関数 |
int p_check(void) |
無し |
白線に対し垂直方向を向くように姿勢を補正する |
int fileout(int,int,int) |
ポストのデータ |
ファイルにポストのデータを出力 |
int sign(int) |
任意 |
引数が正、及び0であれば1、負であれば0を返す |
int vfd(int) |
VFDへのコード |
アドレス0x0154に引数を出力 |
3.2 グローバル変数
変数名 |
説明 |
int cor_ang2 |
正対補正角度 |
int cor_ang3 |
正対補正角度 |
int cor_ang4 |
正対補正角度 |
int cor_ang5 |
正対補正角度 |
int aw |
移動量 |
int arw_local |
移動量(右タイヤ) |
int alw_local |
移動量(左タイヤ) |
int ima |
MIRSの方向(行き:1、帰り:−1) |
int aso |
行動フラグ |
int uss_3 |
左右のussセンサ(右:−1、左:1) |
int uss_data3 |
ussセンサの値を保持 |
int x[10] |
ポストのデータ(x座標) |
int y[10] |
ポストのデータ(y座標) |
int gotpost[10] |
獲得フラグ(0:未、1:済) |
int target |
ターゲットポストの番号 |
int got |
ポスト取得数 |
int error_flag1 |
行動フラグ |
4.1 ポスト探索1回目
flag1はローカル変数であり、戻り値はこの値である。
4.2 ポスト探索2回目
post_search_u
post_search_m
ターゲットポストを獲得できれば戻り値は1それ以外の場合の戻り値は負の値になる
post_search_d
post_search_s
5.1 p_check
後退していき、どちらかの白線センサで感知したら、そのタイヤを中心に回転し、両方のセンサが反応したら止まる。
これを3回繰り返すことでどんな角度からでも垂直をとることができる。
ポストの周りを一周するのがpost_get、ポストの周りを半周するのがpost_get2である。
post_get2はポストに衝突したときに使われる。
6 ポスト獲得動作
ポスト獲得1回目
ポスト獲得2回目
以上の手順でポストを獲得する。
以上のプログラム製作することで、詳細設計を満たすMIRSを製作する。