MIRS1602 管理台帳へ戻る
名称 MIRS1602 ソフトウェア詳細設計書
番号 MIRS1602-SOFT-0001

最終更新日:2016.5.11

版数 最終更新日 作成 承認 改訂記事
A01 2016.12.05 臼井 達也 初版
A02 2016.12.12 臼井 達也 事前チェックでの指摘された箇所の修正を行った。 第二版
A03 2016.12.16 山内 菜摘 第三版
A04 2017.02.03 山内 菜摘 開発中に発生した仕様の変更点を追加 第四版

目次

  1. はじめに
  2. モジュール構成
  3. フローチャート
  4. スレッド構成
  5. テスト項目
  6. コーディングルール

1.はじめに

本ドキュメントは、MIRS1602が開発をするMIRSのソフトウェア詳細設計についてのドキュメントである。
記載内容は、目次の通りである。

2.モジュール構成

2.1モジュール構成図


MIRS1602 システム基本設計書でも示したものに変更を加えたモジュール構成図を下のFig.1に示す。

Fig.1 モジュール構成図

2.2モジュール構成表


このプログラムの全てのモジュールの概要はMIRS1602 システム基本設計書の4.3.ソフトウェア構成を参照のこと。
モジュール一覧を以下に示す。既存のものを使用となっているモジュールは、MIRSMG3G 標準プログラムのモジュールを使用する。
全体のモジュール一覧
モジュール名 機能 開発要素 担当者
pilot MIRSの動作全体を制御する。 mirsak_*モジュール全てを統括する。 -
mirsak_* 動作シーケンスを管理する。 動作に応じたモジュールを新規に作成する。 下表参照
io ON/OFF IOデバイスのデータを読む 既存のものを使用する。 -
i2c I2Cデバイスとの通信を行う。 新規に作成する。 山内
compass 電子コンパスで機体の向きを取得する。 新規に作成する。 山内
number 数字認識を行う。 既存のものを使用する。
run_ctrl 直進・回転・カーブ走行を行う。 既存のものを流用しモーターの変更に伴い、パラメータの調整を再度設定しなおす。 臼井
vel_ctrl モータの速度制御を行う。 既存のものを使用する。 -
red 赤外線センサを管理する。 新規に作成する。 伊東
distance 走行距離を管理する。 既存のものを使用する。 -
uss 超音波計測を行う。 既存のものを使用する。 -
encoder エンコーダ値を管理する。 既存のものを使用する。 -
motor モータを動かす。 既存のものを使用する。 -
comm サーバーと通信を行う。 既存のものを使用する。 -

開発を進めていたが、基盤の都合上電子コンパスとi2c通信が使用不可となったため、使用するモジュールを以下のように変更した。
全体のモジュール一覧
モジュール名 機能 開発要素 担当者
pilot MIRSの動作全体を制御する。 mirsak_*モジュール全てを統括する。 -
mirsak_* 動作シーケンスを管理する。 動作に応じたモジュールを新規に作成する。 下表参照
io ON/OFF IOデバイスのデータを読む 既存のものを使用する。 -
number 数字認識を行う。 既存のものを使用する。
run_ctrl 直進・回転・カーブ走行を行う。 既存のものを流用しモーターの変更に伴い、パラメータの調整を再度設定しなおす。 臼井
vel_ctrl モータの速度制御を行う。 既存のものを使用する。 -
red 赤外線センサを管理する。 新規に作成する。 伊東
distance 走行距離を管理する。 既存のものを使用する。 -
uss 超音波計測を行う。 既存のものを使用する。 -
encoder エンコーダ値を管理する。 既存のものを使用する。 -
motor モータを動かす。 既存のものを使用する。 -
comm サーバーと通信を行う。 既存のものを使用する。 -
mirsak_*の一覧
モジュール名 機能 概要 改良する点 担当者
mirsak_express 現場急行 直進走行とカーブ走行を用いて、数字ボードがあるところまで走行する。 シーケンス内容の変更 臼井
mirsak_patrol 巡回、怪盗機確保 展示室内を周回運動し、怪盗機を探す。 シーケンス内容の変更 臼井
mirsak_chase 怪盗機確保 怪盗機の追跡・確保を行う。
追跡から巡回動作に復帰する。
赤外線データから、走法(直進・回転)と走行量(距離・角度)を決定する関数を追加する 伊東
mirsak_returner 巡回動作への復帰動作 怪盗機の追跡失敗後、復帰動作を行う。 電子コンパスで方角を取得し復帰動作を行う 山内

開発を進めていたが、基盤の都合上電子コンパスが使用不可となったため、mirsak_returnerの機能を変更した。
モジュール名 機能 概要 改良する点 担当者
mirsak_returner 巡回動作への復帰動作 怪盗機の追跡失敗後、復帰動作を行う。 超音波センサで距離を取得し復帰動作を行う 山内

2.3モジュール詳細

新規に作成するモジュール詳細を以下に示す。
既存のモジュールの詳細についてはMG3S 標準プログラム 関数レファレンスを参照する。
また、compass、i2cのモジュールは、MIRS1301 電子コンパスライブラリ詳細設計書MIRS1301 I2C通信ライブラリ詳細設計書を参考に作成する予定のため、関数名などはそれに準じている。
モジュール詳細
モジュール名 機能、役割など 関数 引数 返り値
pilot モジュール全体の統合を行う。 int main() 無し 0
mirsak_express スタート地点から展示室入り口までの走行を行うモジュール。
現場急行後、ダイレクションボードに対して超音波センサを用いて正対補正を行い数字認識を行う。
void mirsak_express() 無し 無し
mirsak_patrol 電子コンパスを用いて方角を取得し、超音波センサを用いて壁沿いを巡回する。 void mirsak_patrol() 無し 無し
mirsak_chase 赤外線センサからの情報をもとに怪盗機を認識、超音波センサで怪盗機との距離を測定し追跡・確保を行う。 void mirsak_chase() 無し 無し
mirsak_returner 電子コンパスを用いて方角を取得して、復帰動作を行う。 void mirsak_returner() 無し 無し
red 赤外線センサの値を元に怪盗機の認識をする。 int red_get() int red[] 取得成功時…"0"
取得失敗時…"1"
compass コンパスとの通信を開始する。 Compass* compassOpen() I2CBus* bus,uint8_t address(I2Cバス,アドレス) 正常時 コンパスポインタ
異常時 NULL (errnoで判断)
compass コンパスとの通信を終了する。 void compassClose() Compass* compass(コンパスポインタ) 無し
i2c I2Cマスターボードとの通信を開始する。 I2CBus* i2cBusOpen() char* fileName(I2Cマスターボードのデバイスファイル) 正常時 I2Cバスポインタ
異常時 エラーが発生した場合はNULL (errnoで判断)
i2c I2Cマスターボードとの通信を終了する。 void i2cBusClose() I2CBus* bus(通信終了するI2Cバスポインタ) 無し
i2c I2Cデバイスとの通信を開始する。 I2CDevice* i2cDeviceOpen() I2CBus* bus, uint8_t address(デバイスが接続されているバス, デバイスのアドレス) 正常時 I2Cデバイスポインタ
異常時 NULL (errnoで判断)
i2c I2Cデバイスとの通信を終了する。 void i2cDeviceClose() I2CDevice* device(通信終了するI2Cデバイスポインタ) 無し

競技会に向けて開発を進めていたが、基盤の都合上compassとi2cモジュールが使用不可となったため、競技会本番では以下のようなモジュールを使用するよう変更になった。
モジュール詳細
モジュール名 機能、役割など 関数 引数 返り値
pilot モジュール全体の統合を行う。 int main() 無し 0
mirsak_express スタート地点から展示室入り口までの走行を行うモジュール。
現場急行後、ダイレクションボードに対して超音波センサを用いて正対補正を行い数字認識を行う。
void mirsak_express() 無し 無し
mirsak_patrol 電子コンパスを用いて方角を取得し、超音波センサを用いて壁沿いを巡回する。 void mirsak_patrol() 無し 無し
mirsak_chase 赤外線センサからの情報をもとに怪盗機を認識、超音波センサで怪盗機との距離を測定し追跡・確保を行う。 void mirsak_chase() 無し 無し
mirsak_returner 電子コンパスを用いて方角を取得して、復帰動作を行う。 void mirsak_returner() 無し 無し
red 赤外線センサの値を元に怪盗機の認識をする。 int red_get() int red[] 取得成功時…"0"
取得失敗時…"1"

3.フローチャート

スタートから現場急行までのフローチャートは、 プレ競技会用システム提案書を参照して、
以下に巡回動作から怪盗機の追跡・確保動作のフローチャート及び怪盗機の確保失敗時の復帰動作のフローチャートを示す。

Fig.2 巡回、追跡動作のフローチャート
巡回動作はFig.3のような経路を走行する。

Fig.3 巡回動作の経路

4.スレッド構成

mirs1602のスレッド構成をFig.4に示す。

Fig.4 スレッド構成図
次に走行制御のスレッド構成をFig.5に示す。

Fig.5 走行制御スレッド構成図



5.テスト項目

今回のプログラムの試験は、下のTable2に従い実施する。
Table2 テスト内容一覧
モジュール名 テスト内容 備考
司令塔(pilot) 統合試験の際に正常に動作をするかを確認する。
現場急行(mirsak_express) 現場急行を仕様通りに行えるか確認する。
巡回(mirsak_patrol) 巡回を仕様通りに行えるか確認する。
確保(mirsak_catch) 怪盗機確保を仕様通りに行えるか確認する。
数字認識(number) 数字認識を行えるかテストプログラムで確認する。
赤外線計測(red) 受信を確認するプログラムを作成して、確認を行う。
超音波計測(uss) こちらのプログラムを使用して測定が行われるかの確認を行う。
通信(comm) server_info_send_test.cを使用してテストを行う。

6.コーディングルール

MIRS1602のコーディングルールは以下の通りとする。

プログラムについて プログラムの更新について ファイル分割について 関数名、変数名について

7.モジュールの改良・追加について

プログラムの開発段階において、状況の応じて新たなモジュールの追加やモジュールの内容を変更することが考えられる。
現時点では、怪盗機の追跡にWebカメラを使用するためのモジュールの追加が考えられる。
MIRS1602ドキュメント管理台帳