MIRS1703 管理台帳へ戻る
名称 MIRS1703ソフトウェア詳細設計書
番号 MIRS1703-DSGN-0002b

最終更新日:2018.2.7

版数 最終更新日 作成 承認 改訂記事
B01 2017.12.22 片岡駿介、峯慎平   初版

ドキュメント内目次


1. はじめに
2. モジュール仕様
3. 主要動作ブロックのフロー
4. スレッド構成
5. コーディングルール
6. 試験仕様書

1. はじめに 

本ドキュメントはMIRS1703のソフトウェア詳細設計書である。

2. モジュール仕様  

(1)全体構成
 モジュールの全体構成はソフトウェア基本設計より変更を加えた。
 以下にモジュール構成図を示す。

モジュール図
Fig. 1 raspberry piモジュール構成図

モジュール図
Fig. 2 Arduinoモジュール構成図

(2)モジュール詳細
各モジュールの詳細を以下に示す。
また、Arduinoの既存モジュールは流用する。 RaspberryPiのプログラムはPythonで新たに作成した。
モジュール名 関数名 引数 戻り値 機能 言語
index.html display なし なし 注文フォーム用WEBページの表示 HTML
Orderform.js disp
countup
SelectedValueAndText
なし
なし
オブジェクト

なし
現在の注文内容を表示
注文番号のカウントアップ
ラジオボックスの選択した値を読み取る
javascript
CGI script.py フォームデータ なし フォームデータの受け取りと処理 Python
avoid.py init
detection
なし
なし
なし
なし
超音波のオープン、初期化
障害物の検知→走行の停止、音の再生
Python
request.py motor モータへの指令値 なし arduinoに指令を送る python
music.py sound 1(鳴らす) or 0 なし 録音した音を流す Python
uss.py uss_open_l
uss_open_r
uss_get_l
uss_get_r
なし 0(成功) or それ以外(失敗)
0(成功) or それ以外(失敗)
測定値[cm] (不正な値を得た場合-1)
測定値[cm] (不正な値を得た場合-1)
左の超音波センサのオープン
右の超音波センサのオープン
左の超音波センサの測定値取得
右の超音波センサの測定値取得
Python
arduino.py serial_write
文字列 なし
引数で受け取った文字列を、Arduinoへシリアル通信で送信 Python
linetrace.ino linetrace()
getLine()
doublecheck()
なし なし PID制御によるライントレース
ラインセンサの値の取得
ライン境界面での2重チェック
Arduino
raspi.ino serial_pi
raspi_read
なし
シリアル通信で受け取った文字列
なし
なし
RaspberryPiとのシリアル通信
受け取った文字列を動作に変換
Arduino
put.ino put() なし なし 押し出し機構の制御 Arduino


3. 主要動作ブロックのフロー   

主要動作ブロックは以下のとおりである。
・注文ブロック
・障害物回避ブロック
・ライントレースブロック
・配膳ブロック

各動作ブロックのフローチャートを以下に示す。

ライントレース

ライントレース_フローチャート
Fig. 3 ライントレース_フローチャート
 この動作ブロックではPID制御によるライントレースを行う。
また、4つのラインセンサによってラインパターンを識別し、分岐点ではRaspberryPiから受け取った注文データ(卓番号、分岐点番号)をもとに進行方向の判断を行う。
テーブル位置を示すマーカーに到達した後は旋回して正対補正を行ってテーブルに近づき、配膳プログラム(put.ino)を呼び出す。配膳終了後は旋回してライン上に復帰し、
行きとは反対方向にライントレースを行って帰還し、待機状態に移行する。

障害物回避ブロック

障害物回避_フローチャート
Fig. 4 障害物回避フローチャート
※このブロックはavoidモジュールに属す。
 この動作ブロックでは直進走行中に超音波センサから受け取ったデータにより、障害物回避を行う。
直進しているとき、機体前方1[m]以内に障害物を認識すると除々に減速し停止する。
停止した後は音声により注意を促し、障害物が1[m]以内になくなれば、走行を再開する。

4. スレッド構成    

以下のモジュールをスレッド化する。
raspberry pi
・cgi
・main


5. コーディングルール    

・モジュール名は全て小文字の短い名前にする
・関数名は全て小文字で記述し、複数の単語を使う場合は単語の区切りに"_"を使う
・変数名は基本小文字で記述し、二単語以上のときは二単語目以降の文字の頭文字を大文字にする
・可読性をあげるため、必要なコメントを入れる

6. 試験仕様書

(1)機能試験
 この試験では、モジュール単位で正常に動作するか試験する。
 機能試験の内容を以下に示す。

機能試験内容一覧
モジュール名 試験内容
linetrace.ino センサ値を正しく取得できるか確認
パターンに応じた値が出力できるか確認
センサ値により望んだ方向に旋回できるか確認
uss.py 左右の超音波センサがオープンできるか確認
正しく超音波センサ値を取得できるか確認
sound.py 音を再生できるか確認
arduino.py arduinoと通信できるか確認
put 押し出しできるか確認
タッチセンサの反応確認

(2)結合試験
 この試験では、複数のモジュールを組み合わせ、動作ブロック単位で正常に動作するか試験する。
 結合試験の内容を以下に示す。

結合試験内容一覧
動作ブロック名 試験内容
注文ブロック 指定した注文を送信できるかいる確認
障害物回避 前方に障害物があるとき停止できるか確認。
停止後、音声による警告を行うか確認。
障害物がなくなると走行を再開するか確認。
ライントレースブロック 線を辿れるか確認
停止線で停止できるか確認
配膳ブロック マーカーを検知し、適切な位置に停止できるか確認
押し出し動作を行い、ものが適切に押し出せるか確認
押し出し動作の後、ラインに復帰できるか確認

MIRS1703 管理台帳へ戻る
上矢印