沼津高専 電子制御工学科

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

MIRS0702-SOFT-0001

改訂記録

版数

作成日

作成者

承認

改訂内容

A01

2007.9.18

紅林

平田

初版

A02

2008.2.18

紅林

平田

回転板を回転盤に変更

モジュールという表現を関数に変更

作成プログラムの追加と削除

新規に定義する外部変数・配列の追加


目次

1.      ソフトウェアの構成

2.      作成プログラム概要

o        2.1 異常走行補正関数

o        2.2 最短ルート算出関数

o        2.3  LED制御関数

o        2.4 回転盤制御関数

o        2.5 ポスト情報選別関数

o        2.6 main2

3.      作成プログラム分割

4.      グローバル変数

5.      動作モード概要

6.      フローチャート

 

1.ソフトウェアの構成

基本的な構成は標準プログラムを元にする。

また標準プログラムの他に【異常走行補正関数】【無限ループ脱出関数】【最短ルート算出関数】【7seg LED制御関数】【回転盤制御関数】を追加、標準プログラムを必要に応じて変更し、MIRS0702のシステムを満たすことを目標とする。

 

2.作成プログラム概要

以下に作成するプログラムの概要を示す。また、標準プログラム、標準プログラム変更内容については省略する。

2.1 異常走行補正関数

関数名

異常走行補正関数

書式

int abnormal()

引数

駆動系ロータリーエンコーダの値

戻り値

正常動作で0、異常動作で-1

概要

エンコーダの値から角速度を算出し、基準となる角速度と比較。

近似であれば正常動作とする。異常であれば補正を行う。

2.2 最短ルート算出関数

関数名

最短ルート算出関数1

書式

int route1()

引数

なし

戻り値

なし

概要

ポスト探索の結果、2つ以上のポストを発見した場合の最短ルートの算出を行う。算出結果は外部配列に出力する。

 

関数名

最短ルート算出関数2

書式

int route2()

引数

なし

戻り値

なし

概要

動作1回目の最後に使用する。

動作1回目で得られたポストの座標から、ポストを番号順に獲得する最短ルートを求める。ルートの情報は外部配列に出力する。

 

関数名

最短ルート算出関数3

書式

int route3()

引数

なし

戻り値

なし

概要

現在の位置情報から次のルートを選択する。

 

関数名

最短ルート算出関数4

書式

int route4()

引数

ポストの距離情報 ポストの角度情報

戻り値

なし

概要

得られたポスト情報が競技場内の物かどうかの識別する。

 

関数名

最短ルート算出関数5

書式

int route5()

引数

なし

戻り値

なし

概要

例外処理動作を行う。

1つもポストを発見しなかった場合の動作と、選択したポスト情報が偽者(審判等)だった場合の動作を行う。

 

2.3 LED制御関数

関数名

LED制御関数

書式

int 7seg()

引数

なし

戻り値

なし

概要

実行中の関数に対応する点灯パターンでLEDを点灯する。

2.4 回転盤制御関数

関数名

回転盤制御関数1

書式

int rot1()

引数

パルスを発生させる秒数、回転方向の信号

戻り値

なし

概要

回転盤の制御を行う。回転させる角度に応じてパルスを発生させる。主にポスト探索に使用する。

 

関数名

回転盤制御関数2

書式

int rot2()

引数

パルスを発生させる秒数 回転方向の信号

戻り値

なし

概要

回転盤の制御と同時に超音波を起動させ、回転盤によるポスト探索を行う。

2.5 ポスト情報選別関数

関数名

ポスト情報選別関数1

書式

int select_post()

引数

なし

戻り値

なし

概要

周回中に獲得した超音波データから、ポスト情報を選別する。

 

関数名

ポスト情報選別関数2

書式

int select_post2()

引数

なし

戻り値

なし

概要

周回中に獲得した超音波データから、ポスト情報を選別する。ただし、回転直交座標系でポスト探索を行った場合に用いる。

 

2.6 main2

関数名

main2

書式

int main2(void)

引数

なし

戻り値

なし

概要

動作2回目のメイン関数。

動作1回目で得られたルート上を移動する。

 

 

3.作成プログラム分割

新規に作成する関数は次のファイルに分割して作成する。

ファイル名

関数名

main.c

main1

main2

abnormal.c

abnormal

escape.c

escape

route.c

route1

route2

7seg.c

7seg

rot.c

rot1

rot2

 

4.グローバル変数

新規に作成するグローバル変数(配列)を以下に示す。これらの関数の宣言は全てcontrol.h内で行う。

変数名

宣言方法

使用用途

post_number_code

int post_number_code[5]

ポスト番号を発見した順に記録

post_dis

double post_dis[5]

動作の直線距離の記録

post_ang

double post_ang[5]

動作の移動角度の記録

short_dis[5]

double short_dis[5]

スタート地点と各ポストを結ぶ直線の距離情報の記録

short_ang[5]

double short_ang[5]

スタート地点と各ポストを結ぶ直線の角度情報の記録

m_s_dis[5]

double m_s_dis[5]

最短ルートの距離情報の記録

m_s_ang[5]

double m_s_ang[5]

最短ルートの角度情報の記録

dis_now

int dis_now

今の移動量の距離情報の一時保存

ang_now

int ang_now

今の移動量の角度情報の一時保存

dis_before

int dis_before

ひとつ前の移動量の距離情報の一時保存

ang_before

int ang_before

ひとつ前の移動量の角度情報の一時保存

ang_now_1st

int ang_now_1st

最初に移動したときの角度情報の記録

search_try_count

int search_try_count

ポスト探索回数の記録

kosuu

int kosuu

探索時の超音波情報の個数の記録

search_post

int search_post

発見したポストの個数の記録

angle_now

int angle_now

回転盤の現在の角度の記録

dis_info[1000]

double dis_info[1000]

ポスト探索時の距離情報の保存

ang_info[1000]

double ang_info[1000]

ポスト探索時の角度情報の保存

dis_select[100]

int dis_select[100]

発見したポストの距離情報の保存

ang_select[100]

int ang_select[100]

発見したポストの角度情報の保存

dis_approach

int dis_approach

ポスト間移動時の距離情報の保存

ang_approach

int ang_approach

ポスト間移動時の角度情報の保存

warning_point

int warning_point

例外処理実行の判断

 

5.動作モード概要

以下に分類した動作モードを示す。

 

1.回転盤ポスト探索モード

1回目の動作開始直後に行うポスト探索。

回転盤を180度回転させ、回転盤に取り付けてある超音波センサによりポストを探索する。

ポストを発見した場合、その距離と移動角を記録する。

探索エリア内に少なくとも1つポストが発見できた場合、終了する。

2.ポスト間移動モード

目標ポストへ接近する。このとき、回転盤に取り付けてある超音波センサをMIRS後方へ向ける。

MIRS前方の超音波センサの値+MIRS後方の超音波センサの値+MIRS本体の直径=移動する距離」を満たすように動作する。

満たさない場合(ルートから外れた等)は、フィードバックさせ補正する。

目標ポストに正対補正を行い、終了する。

3.ポスト周回モード

その場で右に90度回転し、ポストを周回、MIRS側面の赤外線センサにより信号を探索する。

周回中MIRS側面の超音波センサを起動させポスト探索を同時に行う。ポストを発見した場合、その距離と移動角を記録する。

1周し、元の場所に戻ったら終了。

4.ポスト番号判別モード

MIRS側面の赤外線センサでポストからの信号を受信、判別、記録する。

5.ポスト獲得モード

その場で左に90度回転し、正対補正を行う。その後タッチセンサが反応するまで前進、前面の赤外線センサでポスト獲得の判断をする。

ポスト獲得後、元の位置まで後進し、右に90度回転、終了する。

6.ルート計算モード

動作中に得たポストの情報を元に、競技開始点(または任意のポスト)と各ポストとの最短距離と移動角を求め、外部ファイルに格納する。

7.ポストデータ記憶モード

動作1回目で得たポストの位置データ、番号を外部ファイルに保存する。

正常に保存し終えたら終了。

8.ポストデータ読み取りモード

ポストデータ記憶モードで記録したデータを読み取り、対応する変数に格納する。

格納し終えたら終了。

 

6.フローチャート

ここでは 5.動作モードの概要 で述べたモードについてフローチャートを示す。

1.回転盤ポスト探索モード

2.ポスト間移動モード

3.ポスト周回モード

 

 


関連文書

 

MIRS0702 システム提案書MIRS0702-DSGN-0001

MIRS0702 技術調査書MIRS0702-TECH-0001