名称 MIRS1204 ソフトウェア詳細設計書
番号 MIRS1204-SOFT-0002

最終更新・2012.1.28

版数 最終更新日 作成 承認 改訂記事
A01 2012.1.28 荻江 諒
小池 侑紀
中嶋 悠斗
初版

目次




1.はじめに

このドキュメントはMIRS競技会に向けたソフトウェアの詳細設計を示したものである。

2.内容

高専祭でのデモ走行で完成したプログラムを除く、いくつかのプログラムを作成する。
このドキュメントでは、高専祭ですでに作成済みであったプログラムを含み、今回のMIRS競技会に向けて作成するすべてプログラムについて述べる。

3.ソフトフェア詳細

まず、競技会に向けて作成する関数の一覧を以下に示す。

作成関数一覧

ファイル名 関数名 概要
mirs_1204.c mirs_1204 統合メインプログラム(センサスレッドを含む)
motor.c motor_state0 直進
motor_state10 DB認識失敗時の直進
motor_step_after_white 白線認識後の直進
motor_step_50 50cm直進
motor_step_val 指令値分直進
motor_rotate_left 左90°回転
motor_rotate_right 右90°回転
motor_correction_left 白線後の左補正
motor_correction_right 白線後の右補正
motor_rotary 90°旋回(ロータリー攻略専用)
motor_goal ゴール直前動作(白床認識)
num.c num 数字選択
num_detect.c num_detect 数字認識
cosmo.c cosmo コスモ攻略プログラム
uss_test.c uss_test 超音波取得用関数

走行中に必要となるモータ制御を全て関数として作成し、メインプログラム以外でも呼び出せるようにする。
また、タッチセンサ及び白線センサは画像認識時を除き、スレッドとして常に起動させる。
画像認識プログラムは既存のものではなく、より正確に数字認識可能なプログラムを作成する。
uss_testの中で左右の値の差や一個前の値との差を算出し、走行時の条件判断に用いる。

各関数の状態偏移図を以下に示す。


各仕掛け攻略のフローチャートは
競技用ソフトウェア開発計画書参照。

次に、プログラム内でのグローバル変数を定義する。

変数一覧

変数名 概要
state メインプログラム内のswitch_case文を動かすための変数。現在の状態を表す
state2 数字認識で取得した数字を格納する
state3 1つ前の状態を表す
irs_dat[] タッチセンサ及び白線センサの値を保持
ogie[] 超音波センサの値を保持
irs_dat[]とogie[]は配列変数とし、プログラム作成時に適宜数を増やす。
stateと名のついた変数はメインプログラム内及び、数字認識、直進走行、コスモ攻略プログラム内で変更するものとし、それぞれの動作が終了したときは必ずメインプログラムに一回戻る。

続けて、stateの数字に対応する状態を定義する。

状態一覧

数字 状態 使用関数
0 通常走行 motor_state0
1 motor_state0時のT字路攻略 uss_test,motor_rotate_right,motor_rotate_left
2 motor_state10時のT字路攻略 uss_test,motor_rotate_right,motor_rotate_left
3 小部屋 cosmo(uss_test,motor_step_50,motor_rotate_left,motor_rotate_right)
4 ロータリー uss_test,motor_rotate_right,motor_rotary
5 白床認識 motor_goal
10 直進走行(DB認識失敗時) motor_state10
12 画像認識 num,num_detect,motor_correction_right,motor_correction_left
50 ゴール動作 motor
ただし、stateは原則、メインプログラムで変更する。直進プログラムでは1・2・12へのみ変更できるものとする。

4. 関連文書




沼津工業高等専門学校 電子制御工学科