名称 |
MIRS1102 システム開発計画書 |
番号 |
MIRS1102-PLAN-0003 |
最終更新日:2011.7.8
版数 |
最終更新日 |
作成 |
承認 |
改訂記事 |
A01 |
2011.7.4 |
望月康孝 |
- |
初版 議事録1,2 |
A02 |
2011.7.8 |
望月康孝 |
望月康孝(牛丸先生) |
2版 議事録3 |
目次
1.はじめに
-
本ドキュメントは、MIRS1102の戦略・プログラム設計及び開発工程について記したドキュメントである。
2.行動戦略
-
各機能をシンプルにしつつ、動作の精度を向上させることを優先し、確実に迷路を攻略する。そのために、攻略時間の短縮を諦める場合もある。
3.動作仕様
-
マルチスレッドの流れを下図に示す。MIRS1102では、基本的に3つのスレッド(状態判断スレッド・モータ制御スレッド・計測スレッド)を用意して、動作させる。状態判断スレッドをメインとし、計測スレッドからの情報をもとに、モータ制御スレッドに逐次指示を出す。
また、スレッド切り替えにタイムラグが発生すると考えられ、誤差が発生する可能性がある。そこで、状態判断スレッドでは、計測スレッドの情報から、その後のMIRSの状態を予測し、タイムラグを考慮して事前に指示を出す。
※なお、下図は直進走行における動作を示している。
プログラムのフローチャートを下図に示す。MIRS1102では、各機能をモジュール化して、必要に応じて呼び出す形を取る。各機能の動作の流れは機能定義で示す。
- 通路走行
- コースを記憶しながら進む
- 前方のタッチセンサと超音波センサによりT字路・カーブ・行き止まりを検知する
- 行き止まりの場合は、コースを戻り、まだ通っていない通路を探す。その後、通っていない通路を検出・走行
- カーブの場合は、その場で90°回転し、走行
- 直進の場合は、超音波センサやロータリーエンコーダなどを使用し、壁に接触しないように走行する。
- ロータリー
- ロータリーに侵入後、中央のポールを中心に現在地から90°回転した位置まで移動する
- 超音波センサを用いて、出口を探す
- 無ければ、再度移動して出口を探す or あれば、ロータリーを出る
- Direction Board
- 白線ラインを検知して、撮影を行う
- ラベリング処理後、2つの領域を画像内の座標から番号を振る
- 1つずつテンプレートマッチングを行っていく
- 小部屋
- Direction Boardで識別後、小部屋に侵入したことを超音波センサで判断
- 左右の超音波センサから、どちらの壁づたいで出口を探すか決め、走行する。
- 見つけたら出る or 前方のタッチセンサに反応があれば90°回転して再度探索する
- 鍵・扉
- Direction Boardで識別後、鍵の位置まで移動する。
- 壁にタックルし、扉を開ける
- 扉を通り、次の動作に移行する。開いていなかった場合は再度鍵の取得に移行する。
4.機能定義
-
基本的動作の関数の動作を下記に示す。
- 直進走行
- 機能概要: 要求された距離を真っ直ぐ走行する。(基本的に速度は固定とする)
- 性能要求: 1mの距離を、左右のずれを2㎝以内、前後のずれを2㎝以内に抑える
- 備考: 標準の関数を変更
- 回転走行
- 機能概要: 要求された角度だけその場で回転する。(基本的に速度は固定とする)
- 性能要求: 90度、180度を±5度以内でその場で回転する。
- 備考: 標準の関数を変更
- 周回走行
- 機能概要: 要求された半径・角度・方向に基づき、弧を描いて走行する。(基本的に速度は固定とする)
- 性能要求: ロータリー用に周回半径35㎝で180度回った時に、回転のずれを±5度以内、左右のずれ±2㎝以内に抑える。
- 備考: 標準の関数を変更
- 超音波計測
- 機能概要: 目的の物体との距離を計測する。
- 性能要求: 20cmから150cmまでの距離を、10%未満の誤差に抑えて計測する
- 備考: 標準の関数を利用
- 白線センサ検知
- 機能概要: 床面の白線を検知する
- 性能要求: 2か所以上の白線について(環境の変化に強くするため)、その各々で検出率を9割以上にする
- 備考: 標準の関数を利用
- 通路及び走行履歴の記憶
- 機能概要: 迷路の通路および走行履歴を記憶する
- 性能要求: 迷路における記憶ミスを3か所未満とする
- 備考: 新規作成
- 壁検知
- 機能概要: 壁を検知する(タッチセンサのON/OFFを検知する)
- 性能要求: 壁接触時の誤動作を10%未満の回数にする
- 備考: 標準の関数を利用
- 数字認識
- 機能概要: DBの数字を認識する
- 性能要求: 白線からの距離(DBからカメラの距離は60㎝)で数字認識を行った場合に90%精度で0~9の数字を認識できるようにする。
- 備考: 標準の関数を変更
下記に各種動作を補正する機能を示す。
- 正対補正
- 機能概要: 正面の壁に正対することを補助する
- 性能要求: 正面の壁に対する機体正面方向の誤差を5度未満にする
- 利用する機能: 直進、回転、超音波計測
- 備考: 新規作成
下記に示す機能はモジュールとして分割する。
- Direction Board
- 機能概要: 数字認識を行う
- 性能要求: 仕掛け攻略の成功率を90%以上とする
- 利用する機能: 直進、回転、数字認識、白線センサ検知、通路及び走行履歴の記憶、壁検知、正対補正
- 通路走行
- 機能概要: 仕掛け以外の通路の走行を制御する
- 性能要求: 通路走行の成功率を95%以上とする
- 利用する機能: 直進、回転、周回、超音波計測、白線センサ検知、通路及び走行履歴の記憶、壁検知
- ロータリー
- 機能概要: ロータリー内の走行を制御する
- 性能要求: 仕掛け攻略の成功率を90%以上とする
- 利用する機能: 直進、周回、超音波計測、通路及び走行履歴の記憶、壁検知
- 小部屋
- 機能概要: 小部屋内の走行を制御する
- 性能要求: 仕掛け攻略の成功率を90%以上とする
- 利用する機能: 直進、回転、超音波計測、通路及び走行履歴の記憶、壁検知
- 鍵・扉
- 機能概要: 鍵・扉の場所における制御を行う
- 性能要求: 仕掛け攻略の成功率を90%以上とする
- 利用する機能: 直進、回転、超音波計測、通路及び走行履歴の記憶、壁検知
5.テスト仕様
-
テスト実施の順番は単体テスト→結合テスト→総合テストの流れで行う。機能テストの順番はプログラムが完成したものから順次実施する。
単体テスト仕様
- 直進走行
迷路内の直進コースにおいて1mの距離を、左右のずれを2㎝以内、前後のずれを2㎝以内で走行できることを確認する。
- 回転走行
迷路内の適当な個所で、機体が90度・180度を±5度以内で回転できることを確認する。
- 周回走行
迷路内のロータリーにおいて、周回半径35㎝で180度を指定したとき、回転のずれを±5度以内、左右のずれ±2㎝以内に抑えられていることを確認する。
- 超音波計測
迷路内の適当な個所で、20cmから150cmまでの距離を、10%未満の誤差に抑えて計測できることを確認する。
- 白線センサ検知
迷路内における白線検出率を9割以上であることを確認する。また光量など環境の違う場所での動作も同様に確認する。
- 壁検知
迷路内の適当な個所で、壁検知率が9割以上であることを確認する。
- 数字認識
迷路内のDBにおいて数字認識率を9割以上であることを確認する。また光量など環境の違う場所での動作も同様に確認する。この時、機体の位置は手動で調整する。
結合テスト仕様
- Direction Board
仕掛け攻略の成功率を90%以上であることを確認する。
- 通路走行
通路を最後まで走行することを成功とし、成功率を95%以上であることを確認する。
- ロータリー
仕掛け攻略の成功率を90%以上であることを確認する。
- 小部屋
仕掛け攻略の成功率を90%以上であることを確認する。
- 鍵・扉
仕掛け攻略の成功率を90%以上であることを確認する。
総合テスト仕様
- 迷路攻略
迷路攻略成功率を80%以上であることを確認する。
6.開発計画
-
プログラム開発における開発工程表を下記に示す。
沼津工業高等専門学校 電子制御工学科