名称 | MIRS1403 地図情報管理モジュール詳細設計書 |
---|---|
番号 | MIRS1403-SOFT-0006 |
最終更新日:2014.2.20
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2014.12.09 | 堀部 | 大林 | 初版 |
A02 | 2014.2.20 | 堀部 | 実際に使用したプログラムの使用へと追記した。 |
本ドキュメントは、MIRS1403の地図情報管理モジュールの詳細設計書である。
このモジュールは競技場の情報をインポートし、座標やオブジェクトを管理するプログラムである。
現在地から目標値までの経路の導出も行う。
以下に本モジュールの仕様を示す。
地図情報管理プログラムは、Mapディレクトリ内また、各ファイルに含まれる関数は下記の関数にて説明する。
ファイル名 | 含まれる関数 |
---|---|
GetPattern | GetPattern |
GetTarget2 | GetTarget |
MapSample | Judge,MapOpen,GetDeg |
PatternSkip | PatternSkip |
PositionThread | PrePosition |
修飾子 | 名称 | 概要 |
---|---|---|
enum | ObjectType | 競技場のオブジェクトの種類 |
型 | メンバ名 | 説明 |
NONE | オブジェクトなし | |
START | スタート地点 | |
TREASURE | 小部屋の宝 | |
DIRECTIONBOURD | ダイレクションボード | |
CHECKPOINT | 自身で設定したチェックポイント | |
UNKOWN | オブジェクト情報なし |
修飾子 | 名称 | 概要 |
---|---|---|
struct | Detail | 現在の状況情報 |
型 | メンバ名 | 説明 |
Point | Positioin | 現在のx,y座標 |
int | Row | マップ情報を行列表示したときの行 |
int | Column | マップ情報を行列表示したときの列 |
ObjectType | Object | table1で示したオブジェクトの種類 |
RIGHT | 現在地の1つ右のオブジェクトの種類 | |
UP | 現在地の1つ上のオブジェクトの種類 | |
LEFT | 現在地の1つ左のオブジェクトの種類 | |
DOWN | 現在地の1つ下のオブジェクトの種類 |
型 | 名称・引数 | 概要 | 引数の説明 | 返り値の説明 |
---|---|---|---|---|
int | GetPattern(Point Position) | 引数で与えた座標がどの区分にあるか判別する | 判別させる座標 | 判別した区分を返す |
void | GetTarget(Point BeforePosition,Point Destination) | 現在地から目標地に移動する | 現在地と目標値 | |
int | Judge(char a) | オブジェクトの種類をEnum型を使って整数にする | オブジェクトの種類 | オブジェクトの種類を整数で返す |
int | MapOpen(char *filename) | マップデータのインポートを行い、データを整理する | インポートするcsvファイル名 | 正常にファイルオープンできたかどうか |
double | GetDeg(double xd,double yd) | 現在地と進むx,y成分から進行方向の角度を出す | 進行するxy成分 | 進行方向の角度 |
int | PatternSkip(int *Pattern) | 現在と目標の区分より道筋を短縮する | 区分 | 短縮するかどうか |
void | PrePosition() | スレッドを立ててエンコーダの値から現在地を導く |
型 | 名称 | 概要 |
---|---|---|
typedef struct Point | Position | 現在のx,y座標 |
double | Argument | 現在機体の向いている方向の角度 |
PC上でシミュレーションを行い、導出された経路が壁を貫いていないか等を確認する。問題なく経路が導出でき、目的地に到達できるようなら合格とする。
次にMIRSにディスプレイを接続し、実際に走行させる。その際に随時現在地の座標と機体の方向、オブジェクトの種類を表示する。また、座標を入力したとき、表示がその座標まで移動するかを確認する。
コーディングおよびデバッグが完了した後追記する。
競技会終了までにはプログラムを公開する。