名称 |
MIRS1001
統合プログラム |
番号 |
MIRS1001-SOFT-0011 |
最終更新日:2011.3.1
版数 |
更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2011.3.1 |
川合 |
古橋 |
初版 |
各仕掛けをクリアするプログラムをまとめ、それらのプログラムをまとめて迷路をクリアする
2. 概要
各ファイルで宣言した関数をextern宣言することで、mainプログラム内で使えるようにした。
3. 各仕掛けクリアのプログラムの説明(外部で宣言した関数)
関数名 |
型 |
引き数 |
説明 |
返り値 |
DB_act() |
int |
(int)
*num1,*num2 |
引数をポインタ型にして、画像認識の結果をもらう。また、認識できなかった場合はエラーを返す。 |
エラーなし:0 エラーあり(右):-1 エラーあり(左):-2 |
tuuro() |
int |
void |
通常の通路を走行する |
void |
seitai_hosei() |
int |
(int)
hakusen_pattern |
引数のよって、正体補正の動作を変える。 |
void |
turn90() |
int |
(int)
pattern |
右・左に90度回転する。 |
void |
kobeya() |
int |
void |
小部屋をクリアする。 |
void |
susumukun() |
int |
void |
少し前進する。 |
void |
modorukun() |
int |
void |
少し後進する。 |
void |
tuuro_ju() |
int |
(int)
juji_counter |
十字路専用の通路を走行する。 |
void |
key() |
int |
void |
鍵をクリアする。 |
void |
rotary2() |
int |
void |
ロータリーをクリアする。 |
void |
4. 具体的プログラムのフローチャート
5. 工夫した点
・メインプログラムに極力モーターを回す処理を入れないようにした。
・メインのプログラムはデバッグ処理をしやすくするためにシンプルにした。
・画像処理が3回失敗したら、少し前進して正対補正をし、再び画像処理を行うようにした。それによって、画像処理の成功確率が上げた。
・各クリア仕掛けのプログラムを統合するときに、フォルダごとに分けた。また、各仕掛けのプログラムのデバッグ処理簡単化のためにMakefileでtestプログラムを作成するようにした。
・また、メインプログラムの動作をデバッグするために、疑似的な画像処理プログラムを作成してデバッグを行った。
6. 弱点・改良点
それぞれの仕掛けのプログラムをクリアした後、スレッドが完璧に閉じていないことがあり、次のプログラムのスレッドが起動できないということがあった。
→スレッドが完璧に閉じれるように、各プログラムの前に1秒間のsleepを入れた
7. まとめ
統合プログラム自体は、各仕掛けのプログラムをくっつけただけなので、問題点も改良点もあまりなかった。
後半は、各仕掛けをクリアするプログラムの精度を上げるために努力する形となった。