目次
1. 本ドキュメントについて2. モード概要
3. モードの要求仕様
4. プログラムの動作・フローチャート
5. 行動判断の動作詳細
6. 処理結果
7. このモード外で必要な前提条件
1. 本ドキュメントについて
-
このドキュメントは、MIRS0802で使用する行動判断モード"act_decide"について詳細を記述するものである。
2. モード概要
関数名 | 行動判断モード |
---|---|
書式 | int act_decide(void) |
引数 | なし |
戻り値 | なし |
備考 | 探索用のポスト情報を外部変数に与える |
3. モードの要求仕様
-
競技1回目のポスト情報ファイル(data.txt)を展開する。
このとき展開できなければ経路設計は不可能とする。 -
data.txtの内容を読み込む(get_data)
さらにデータをポスト番号順に並び替える。 -
競技場をA,B,C,Dの4つのエリアに分割して考える。(analyzer)
ポストの座標データからエリアの割り当てを行なう。
-
不明なポストがある場合、
発見されなかったポスト番号、割り当てられなかったエリアを確認、
それらを組み合わせて予測データとする。(err_safe)
-
割り当てられたエリアから、ポスト間の最短移動距離、方向を割り出し、
探索経路とする。(route_dsgn) -
結果として、以下の外部変数をポスト情報・探索経路情報として生成する。
尚、構造体の定義はヘッダファイル corporated.h 内に記述する。
- ポスト位置( x[], y[] )
- ポスト番号( num[] )
- 分布エリア( zone[] )
- 獲得時方向( direct[] )
- 周回方向( turn[] :l - 左回り、r - 右回り)
- 移動枝数( dis[] )
- 処理例
- 競技1回目のポスト情報ファイル(data.txt)
1回目のポスト確認動作で得たポスト情報を分析し、最適なポスト探索経路を設計する。
もし、不明なポストがある場合は、明らかになっているポスト情報からおおよその位置を予測する。
もし、不明なポストがある場合は、明らかになっているポスト情報からおおよその位置を予測する。
4. プログラムの動作・フローチャート
図2. act_decide()(act_decide.bmp)
5. 行動判断の動作詳細
5.1. データ取り込み
競技1回目に得たポスト情報を読み込む。
ポスト情報はポスト番号、x座標、y座標、ポストの獲得方向の順番で並んでおり、
確認したポストの個数分データ行がある。
以下にソート例を示す。
※ポストの獲得方向についてはポスト判別動作(MIRS0802-SOFT-0002)を参照
ポスト情報はポスト番号、x座標、y座標、ポストの獲得方向の順番で並んでおり、
確認したポストの個数分データ行がある。
以下にソート例を示す。
※ポストの獲得方向についてはポスト判別動作(MIRS0802-SOFT-0002)を参照
|
ポスト番号でソート → |
|
||||||||||||||||||||||||||||||||||||||||||||
5.2. エリア判別
下図のように競技場内を分割して考え、
ポスト情報のx,y座標値を使って各ポストがどのエリア属すかを判別、
A〜Dのキャラクタを与える。
ポスト情報のx,y座標値を使って各ポストがどのエリア属すかを判別、
A〜Dのキャラクタを与える。
図3. エリア判別(analyzer.bmp)
5.3. エラー修正
データ読み込み時に確認できなかったポストがあった場合、
確認できているポストの情報から未確認ポストがどのエリアにあるかを予測し、A〜Dのキャラクタを与える。
ただし、ランダム判定を使うため、未確認個数が多いほど特定精度は下がる。
確認できているポストの情報から未確認ポストがどのエリアにあるかを予測し、A〜Dのキャラクタを与える。
ただし、ランダム判定を使うため、未確認個数が多いほど特定精度は下がる。
図4. エラー修正(err_safe.bmp)
5.4. 経路設計
競技場の白線を「枝」、角を「節」として捉えるものとする。
設計は、現在のポストから次のポストまでいくつの枝をを通るのか、 また、どちら回りで探索に行くのかを決める。
最終的には、
移動枝数を整数型で、
周回方向を l(左回り)、r(右回り)、x(どちらでも可)のいずれかのキャラクタ型
の外部変数で与える。
(例)
初期位置からエリアB
移動枝数:2、 周回方向:l(左回り)
エリアBからエリアC
移動枝数:2、 周回方向:x(どちらでも可)
設計は、現在のポストから次のポストまでいくつの枝をを通るのか、 また、どちら回りで探索に行くのかを決める。
最終的には、
移動枝数を整数型で、
周回方向を l(左回り)、r(右回り)、x(どちらでも可)のいずれかのキャラクタ型
の外部変数で与える。
(例)
初期位置からエリアB
移動枝数:2、 周回方向:l(左回り)
エリアBからエリアC
移動枝数:2、 周回方向:x(どちらでも可)
図5. 経路設計(初期)(route_dsgn1.bmp)
図6. 経路設計(route_dsgn2.bmp)
6. 処理結果
ポスト情報(構造体:pdata)
探索経路情報(構造体:route)
読み取り処理エラー(行列:d_err)
|
|
||||||||||||||
|