名称 MIRS1205 競技用ソフトウェア開発計画書
番号 MIRS1205-PLAN-0003

最終更新日:2012.10.15

版数 最終更新日 作成 承認 改訂記事
A01 2012.10.15 中村優太 - 初版
A02 2012.10.15 岡本 牛丸教員 レビューでの指摘箇所の修正、追加


目次





1.はじめに


本ドキュメントは、11/03に行われる高専祭デモに向けて、MIRS1205標準機を用いた戦略・プログラム設計・開発工程について記したドキュメントである。

2.基本戦略


確実なゴールを目指すため、時間を犠牲にしてでも保険を多重にかけ、安全策をとった堅実なプログラムの設計を目標とする。

3.標準機について


高専祭デモの攻略のために、標準機に搭載されている3機の超音波センサの位置を以下のように変更する。

標準機:前2機、左1機、右0機
変更後:前1機、左1機、右1機

※左右の超音波は、MIRS本体を通路の中心に置いたとき、壁までの距離が25cmになるように設置する。

4.スレッドについて


MIRS1205では、基本的に3つのスレッド(メインスレッド・モータ制御スレッド・計測スレッド)を用意して、動作させる。
それぞれのスレッドの詳細を以下に示す。
スレッド概要
メイン計測スレッドを監視し、モーター制御スレッドに指示を出す
計測各センサを値を読み取り、メインスレッドに渡す
モータ制御メインスレッドから出された指示に従い、モーターの動きを制御する

5.動作の流れ


プログラムのフローチャートを下図に示す。MIRS1205では、各機能をモジュール化して、必要に応じて呼び出す形を取る。各機能の動作の流れは機能定義で示す。


  • 通路走行
    1. 前方のタッチセンサと超音波センサによりT字路・曲がり角・行き止まりを検知する
    2. 曲がり角の場合は、その場で90°回転し、走行
    3. 直進の場合は、超音波センサやロータリーエンコーダなどを使用し、壁に接触しないように走行する。
    4. 壁に接触した場合、後退し超音波計測で周りの状況を計測して向きを変更する。

  • Direction Board
    1. 白線を認識する。
    2. 画像を正確に取得するために正対補正を行う。
    3. 画像を取得し、数字認識処理を行う。
    4. 正しく認識できた場合⇒5.に移行
      正しく認識できなかった場合⇒2.に戻る
    5. あらかじめ決めておいた優先度に従い、攻略する仕掛けを選択し通路動作に移行する。鍵・扉の優先度は最低にしておく。

  • ロータリー
    1. Direction Boardで識別後、ロータリーに侵入したことを超音波センサで判断
    2. ロータリーに侵入後その場で90°回転し、少しロータリー走行する。
    3. 超音波センサを用いて、出口を探しながら、ロータリー走行を続ける。
    4. 出口を発見したら90°回転し、ロータリーを出る。

  • 小部屋
    1. Direction Boardで識別後、小部屋に侵入したことを超音波センサで判断
    2. 左の壁伝いで、出口を探しながら走行する。
    3. 見つけたら出る or 前方のタッチセンサに反応があれば90°回転して再度探索する。

  • 鍵・扉
    1. Direction Boardで識別後、鍵の位置まで移動する。
    2. 壁にタックルし、扉を開ける
    3. 扉を通り、次の動作に移行する。


6.プログラムの詳細設計


6.1 基本動作関数

基本的動作の関数の動作を下記に示す。

  • 直進走行
    1. 機能概要: 要求された距離を真っ直ぐ走行する。(基本的に速度は固定とする)
    2. 性能要求: 1mの距離を、左右のずれを2p以内、前後のずれを2p以内に抑える
    3. 備考: 標準の関数を変更

  • 回転走行
    1. 機能概要: 要求された角度だけその場で回転する。(基本的に速度は固定とする)
    2. 性能要求: 90度、180度を±5度以内でその場で回転する。
    3. 備考: 標準の関数を変更

  • 周回走行
    1. 機能概要: 要求された半径・角度・方向に基づき、弧を描いて走行する。(基本的に速度は固定とする)
    2. 性能要求: ロータリー用に周回半径35pで180度回った時に、回転のずれを±5度以内、左右のずれ±2p以内に抑える。
    3. 備考: 標準の関数を変更

  • 超音波計測
    1. 機能概要: 目的の物体との距離を計測する。
    2. 性能要求: 20cmから150cmまでの距離を、10%未満の誤差に抑えて計測する
    3. 備考: 標準の関数を利用

  • 白線センサ検知
    1. 機能概要: 床面の白線を検知する
    2. 性能要求: 検出率を9割以上にする。
    3. 備考: 標準の関数を利用

  • 壁検知
    1. 機能概要: 壁を検知する(タッチセンサのON/OFFを検知する)
    2. 性能要求: 壁接触時の誤動作を5%未満の回数にする
    3. 備考: 標準の関数を利用

  • 数字認識
    1. 機能概要: DBの数字を認識する
    2. 性能要求: 白線からの距離で数字認識を行った場合に90%の精度で0〜9の数字を認識できるようにする。
    3. 備考: 標準の関数を変更




6.2 補正動作機能

下記に各種動作を補正する機能を示す。

  • 正対補正
    1. 機能概要: 正面の壁に正対することを補助する
    2. 性能要求: 正面の壁に対する機体正面方向の誤差を5度未満にする
    3. 利用する機能: 直進、回転、超音波計測
    4. 備考: 新規作成

  • 位置補正
    1. 機能概要: 左右の壁との距離をみて、通路の中心に移動することを補助する
    2. 性能要求: 左右の壁との距離の差を2cm未満にする
    3. 利用する機能: 直進、回転、超音波計測
    4. 備考: 新規作成




6.3 モジュール分割

下記に示す機能はモジュールとして分割する。

  • Direction Board
    1. 機能概要: 数字認識を行う
    2. 性能要求: 仕掛け攻略の成功率を90%以上とする
    3. 利用する機能: 直進、回転、数字認識、白線センサ検知、通路及び走行履歴の記憶、壁検知、正対補正

  • 通路走行
    1. 機能概要: 仕掛け以外の通路の走行を制御する
    2. 性能要求: 通路走行の成功率を95%以上とする
    3. 利用する機能: 直進、回転、周回、超音波計測、白線センサ検知、通路及び走行履歴の記憶、壁検知

  • ロータリー
    1. 機能概要: ロータリー内の走行を制御する
    2. 性能要求: 仕掛け攻略の成功率を90%以上とする
    3. 利用する機能: 直進、周回、超音波計測、通路及び走行履歴の記憶、壁検知

  • 小部屋
    1. 機能概要: 小部屋内の走行を制御する
    2. 性能要求: 仕掛け攻略の成功率を90%以上とする
    3. 利用する機能: 直進、回転、超音波計測、通路及び走行履歴の記憶、壁検知

  • 鍵・扉
    1. 機能概要: 鍵・扉の場所における制御を行う
    2. 性能要求: 仕掛け攻略の成功率を90%以上とする
    3. 利用する機能: 直進、回転、超音波計測、通路及び走行履歴の記憶、壁検知

各モジュールの機能関数を用いてあらわしたフローチャートを以下に示す。

・通路走行



・ロータリー



・小部屋



・鍵・扉





7.開発計画


開発予定を以下に示す。
メカ、エレキの担当者は終了次第ソフトウェアの開発を進める。





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