l MIRS1503 ソフトウェア詳細設計書 MIRS1503 管理台帳へ戻る
名称 MIRS1503 ソフトウェア詳細設計書
番号 MIRS1503-SOFT-0001
版数 最終更新日 作成 承認 改訂記事
A01 2015.12.08 遠藤真哉 大場春佳 菊地祐太 初版
A02 2015.12.10 遠藤真哉 大場春佳 菊地祐太 第2版
一部改訂(改訂箇所はMIRS1503 ソフトウェア詳細設計書レビュー議事録を参照)
A03 2015.12.11 遠藤真哉 大場春佳 菊地祐太 第3版
一部改訂(改訂箇所はMIRS1503 ソフトウェア詳細設計書再レビュー議事録を参照)
A04 2015.12.11 遠藤真哉 大場春佳 菊地祐太 牛丸先生 第4版
フローチャートを一部変更。ioは変更しないため、それに伴う変更。

ドキュメント内目次

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

1.目的

本ドキュメントはMIRS1503開発予定のオリジナルMIRSにおけるソフトウエアの詳細設計についてのドキュメントであり、今後のモジュール作成の柱となるものである。

2.モジュール構成

2.1. モジュール構成図


Fig.1:モジュール構成

2.2. モジュール一覧

Table1:モジュール一覧
モジュール名 機能 概要 依存関係 責任者 流用・作成
mirs1503 機能統合 以下のモジュールの制御を行う device,sequence,patrol,tracking 大場 作成
sequence タイムアタック 現場急行と数字認識を行う number,run_ctrl,direction,io,server 遠藤(真) 作成
patrol 競技場巡回 巡回と怪盗機の捕獲を行う run_ctrl,direction,io 菊地 作成
tracking 怪盗追跡確保 巡回と怪盗機の捕獲を行う io,vel_ctrl 菊地 作成
direction 正体補正 正体補正を行う run_ctrl,uss 流用
run_ctrl 走行制御 直進・回転を行う vel_ctrl,distance 流用
vel_ctrl 速度制御 モータの速度制御を行う motor,encoder 流用
device デバイス管理 デバイスファイルをopen/closeする 無し 流用
server データ送受信 サーバとのデータの送受信を行う 無し 大場 作成
number 数字認識 数字認識を行う 無し 流用
io タッチセンサ管理 タッチセンサの管理を行う 無し 流用
uss 超音波制御 超音波センサの管理を行う 無し 流用
motor モータ制御 モータを動かす 無し 流用
encoder エンコーダ制御 エンコーダ値を管理する 無し 流用
distance 距離計 距離データを取得する encoder 流用

2.3. モジュール詳細

Table2:モジュール詳細
モジュール名 説明(役割、動作概要、変更内容など) 関数 引き数 返り値
mirs1503 モジュールの全体の統合を行うモジュール。 int main(void)
int device_open(const char *string)
int device_close(const char *string)
const char *string 指定デバイスファイルのディレクトリ 関数が正常に終了した場合は0を、問題がある場合は-1を返す。
sequence スタート地点から展示室入り口までの走行を行うモジュール。
走行時に、run_ctrlは直線走行・回転動作に、ioはタッチセンサの信号を読み取り壁に当たった際のコースへの復帰動作に用いる。復帰関数angleについては、MIRS1503 標準機プレ競技会用システム開発計画書の7.8を参照する。展示室入り口到着後に、directionはダイレクションボードに対しての正体補正に、numberはダイレクションボードからの数字認識に用いる。
mirs1503モジュールに呼び出されて実行される。
int sequence(void) 無し 関数が正常に終了した場合は0を、問題がある場合は-1を返す。
patrol 展示室内で怪盗を見つけるまで巡回を行うモジュール。
run_ctrlは直線走行・回転動作、directionは角を2回曲がるごとに行う壁に対しての正体補正に用いる。また、ioはタッチセンサの信号を読み取り壁に当たった際のコースへの復帰動作を行うため、怪盗の赤外線信号を受信しtrackingモジュールへ移行するために用いる。
mirs1503モジュールに呼び出されて実行される。
int patrol(void) 無し 関数が正常に終了した場合は0を、問題がある場合は-1を返す。
tracking 巡回中に怪盗を発見した際に追跡を行うモジュール。
ioは怪盗機の赤外線信号を受信し方向を推測するために、vel_ctrlは機体の速度制御に用いる。
mirs1503モジュールに呼び出されて実行される。
int tracking(void) 無し 関数が正常に終了した場合は0を、問題がある場合は-1を返す。

2.4. Makeファイル

新規作成するが、詳細については省略する。

2.5. デバイスドライバ

標準機に搭載されているMG3S デバイスドライバを流用し、変更は行わない。

3.フローチャート

フローチャートを以下に示す。

Fig.2:mirs1503モジュール



Fig.3:sequenceモジュール



Fig.4:patrolモジュール



Fig.5:trackingモジュール

4.スレッド構成

MIRS1503でのスレッド構成をFig6、走行制御のスレッドをFig7に示す。

Fig.6:mirs1503スレッド



Fig.7:走行制御のスレッド

5.テスト項目

・走行テスト
 走行制御(run_ctrl,vel_ctrl)、PWMモジュール、モータモジュールの動作を確認する。
 直線、回転制御が安定して行えた場合を合格とする。
 既存のプログラムを利用して実施する。

・赤外線
 赤外線情報を受け取ることができているか確認する。
 既存のtest_ioを利用して実施する。

・単体テスト
 統合する前に単体機能の試験を行う。
 単体の機能が正確に確認できた場合を合格とする。

・機能テスト
 sequence、patrol、trackingモジュールはそれぞれの機能が多いので、モジュールごとに機能試験を行う。
 各モジュールの機能が正確に確認できた場合を合格とする。

6.コーディングルール

・プログラムについて
 必要に応じて見やすくなるよう、インデントしておく。
 可読性をあげるために適切にコメントをつける。

・プログラムの更新
 プログラムを更新する場合は更新前のファイルを保存しておく。
 プログラムのはじめに、作成者、更新日、更新内容をコメントしておく。

・統合手順
 プログラム統合の前に、単体テスト・機能テストを行う。

・ファイル分割基準
 モジュールごとにファイルを分割し、ヘッダファイルは必要に応じて作成する。

・関数名・変数名の付け方
 共有変数の使用は必要最小限にする
 関数名は新規作成するものに限り、内容のわかる単語を用いる。
 ループや比較などに用いる変数以外は、モジュール名の頭文字を変数名の頭文字にする。(patrolならばp**)