沼津高専 電子制御工学科

MIRS0805 ソフトウェア詳細設計書

 

MIRS0805-SOFT-0001

改訂記録

版数

作成日

作成者

承認

改訂内容

A01

2008/09/18

塚本・芦澤

石井

初版

A02

2008/10/06

塚本・芦澤

石井

フローチャート改定

 


はじめに

本ドキュメントは、MIRS0805基本設計書に規定されたシステムを実現するのに必要な、新しく開発する部分について述べる。

 

動作モード:

動作の各段階を次のように分けてモード名をつける。

モード名

概要

init_compass

電子コンパス関連の設定などをする。競技場に対する電子コンパスの基準方位を測定し保存する。

move_center

スタート位置から競技場中心まで移動する。

search_center

競技場中心で探索する。このとき発見したポストをlevel1のポストと呼ぶこととする。

return_center

現在位置から取りにいけるポストがなくなったときに競技場中心までもどる。

approach

目標ポストにアプローチし、正対補正。このとき、移動する前の位置からみた方位情報を記録する。

around

ポストへの進入方位を記憶。ポストを左回りで周回しながら、右方向を探索。同時に赤外線センサを監視。

error1

例外動作1(ポストに衝突)

error2

例外動作2(白線検知)

 

中心から見えるポストをlevel1と呼び、level1のポストを周回中に発見したポストをlevel2と呼ぶ。

 

ポスト位置データの扱い

ポスト位置は、直交座標に直して記録する。

座標原点は競技場中心に設定し、競技開始時のMIRSの向きをy軸方向とする。

コンパスからの方位情報は、init_compassモードで測定した基準方位を保存しておき、

これをy軸方向(90deg)として座標系に合うように正規化して使う。

 

 

post構造体を拡張して、以下のメンバを追加する。配列数のPOST_NUMはポストの個数を表す。

メンバ名

概要

int x[POST_NUM]

ポスト位置のx座標[mm]

int y[POST_NUM]

ポスト位置のy座標[mm]

int level[POST_NUM]

中心から見えているかどうか

 

競技一回目終了時には、この変数配列の内容をファイルに保存する。

 

新たに開発する関数、タスク:

関数名

概要

collation

aroundモード内で発見したポストがすでに発見済みか、獲得済みかを照合し、アプローチすべきか判定する。

save_data

ポストの位置情報をファイルに保存する。(競技1回目用)

load_data

ポストの位置情報をファイルから読み込む。(競技2回目用)

 

タスク名

概要

read_ compass

電子コンパスモジュールから方位情報のデータを取得する

search_right

aroundモード内で右側を探索する。現在位置、方位情報を利用して競技場外は無視する。

irs_check

aroundモード内で赤外線センサを監視する。スイッチ部を発見したらポスト番号を記録、さらにそれが獲得できたかチェックする。

 

 

競技一回目

競技一回目ではポスト番号にかかわらず獲得する。

 

1.         電子コンパスの初期設定をする。(init_compassモード)

2.         競技場中心まで移動する。(move_centerモード)

3.         その場で回転し、周囲を探索する。(seach_centerモード)このとき発見したポストをlevel1のポストと呼ぶこととする。

4.         seach_centerモードで発見した最も近いポストにアプローチする。(approachモード)

5.         ポストを周回し、ポスト番号の読み取り、ポストの獲得を行う。このとき、右側の超音波センサにより周囲のポストを探索する。(aroundモード)新たなポストを発見した場合、これをlevel2のポストと呼ぶ。

以降は次にアプローチするポストを以下の基準で決める。

l        level2のポストが見つかったのであればそれを優先する。

l        level2のポストがなければ周回動作の開始位置から見つかった順。

l        現在のポストから取りにいけるポストが何もない場合は、中心に戻る。

 

競技二回目

競技二回目では、競技一回目で記録したポスト位置情報を元にポスト番号順にすべて直線移動でアプローチする。

ただし、目標ポストと自機の間に他のポストがある場合、これを経由する。この際右回りで周回することで、獲得せず経由する。

他のポストのほうが近くにあり、ポスト間の角度が設定した値よりも小さければ、他のポストを経由する。

 

動作モード詳細解説:

search_center

中心で回転し、ポストを探索する。

基本的には標準プログラムを利用するが、回転回数に制限を設けてすべてのポストを発見できなくてもあきらめることにする。

 

approach

獲得するポストに進み、正対補正を行う。

このとき、前の基準位置(競技場中心や前のポスト)からの方位情報を電子コンパスから読み取り記憶する。

 

around

ポスト獲得のための周回動作を行うモードである。

左回りで周回し、MIRS本体左側面についたアームを使って周回するだけで獲得する。

さらに、このときアームの前部と後部についた赤外線センサで、ポストが獲得できたかどうかチェックする。

ポスト獲得に失敗したとき(後部のセンサが赤外線を感知した場合)はもう一周周回動作を行う。

また、同時にMIRS本体の右側に取り付けた超音波センサによりポスト探索を行う。

 

 

例外動作

想定外のポストに衝突した場合(error1モード)

競技一回目の場合

少し下がって衝突したポストに対して正対補正し、周回、獲得を試みる。(aroundモード)

正常に獲得できた場合、発見したポストとして新たに記録しておく。

すでに獲得済みで、赤外線を感知できなかった場合、現在位置座標から一番近い獲得済みポスト座標に現在位置座標を設定しなおす。

 

競技二回目の場合

少し下がって衝突したポストに対して正対補正し、右回りで周回して回避する。

現現在位置座標から一番近い獲得済みポスト座標に現在位置座標を設定しなおす。

 

白線を検知した場合(error2モード)

一時停止して、現在位置座標から一番近い白線位置に現在位置座標を設定しなおす。