名称 MIRS1804 ソフトウェア詳細設計書
番号 MIRS1804-SOFT-0001

版数 最終更新日 作成 承認 改訂記事
A01 2018.11.16 米持春貴 中村美月 初版

ドキュメント内目次

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

はじめに

本ドキュメントはMIRS1804 GYM員Projectのソフトウェア詳細設計書についてのドキュメントである。

モジュール構成

モジュール構成図

arduinoとRaspberryPiのモジュール構成図をFig1,Fig2に示す。
太線で囲まれたモジュールは新規作成するものである。
Fig.1 ソフト
Fig.1 RaspberryPiモジュール構成図
Fig.1 ソフト
Fig.2 Arduinoモジュール構成図

RaspberryPiモジュール詳細

RaspberryPiのプログラムの主要モジュールの詳細を各モジュールごとTable.1に示す。
言語はCを用いる。
既存のプログラムを使うものに関しては追加・変更する部分のみ示す。
Table.1 RaspberryPiモジュール一覧表
モジュール名 機能 関数名 引数 戻り値
main プログラム全体を制御する main_run() なし なし
display ディスプレイへ情報を出力する display_out() バッテリー残量(double)、スイッチの状態(1or0) なし
run 走行モジュールを初期化する
走行を制御する
run_reset()
run()
なし
走行ルートの種類(int)
なし
battery バッテリーを管理する battery_check() なし バッテリー残量(double)
switch スイッチからの入力を管理する switch_get() なし スイッチの状態(1or0)
position MIRSの自己位置を記録・管理する position_get() なし MIRSの座標(double)
corn コーン設置用のモータの回転・停止を制御する corn_set() 回転or停止(1or0) なし
line 石灰設置用のモータの回転・停止を制御する line_set() 回転or停止(1or0) なし
gps GPSから位置情報を取得する gps_get() なし 座標(double)
request バッテリーAの電圧を取得する
バッテリーBの電圧を取得する
request_batt_a()
request_batt_b()
なし バッテリー電圧(double)

Arduinoモジュール詳細

Arduinoのプログラムの主要モジュールの詳細を各モジュールごとTable.2に示す。
言語はArduinoIDEを用いる。
既存のプログラムを使うものに関しては追加・変更する部分のみ示す。
Table.2 Arduinoモジュール一覧表
モジュール名 機能 関数名 引数 戻り値
run_ctrl 左右のタイヤを個別に制御できるように変更
円弧軌道を走行するプログラムを追加
run_ctrl_set()
run_ctrl_get()
run_ctrl_execute()
左右それぞれの速度と距離(double)
変更なし
変更なし
変更なし
左右それぞれの速度と距離(double)
変更なし
io 複数のバッテリーの電圧が取得できるように変更 io_get_batt() 変更なし バッテリーAとバッテリーBの電圧(double)
encoder コーン設置用モータのエンコーダを読む関数を追加 encoder_get_corn() なし エンコーダの値(double)

ディスプレイ表示プログラム詳細

モジュール構成

ディスプレイ表示プログラムのモジュール構成を以下に示す。
言語:Python(ver. 3.7.0)
GUIライブラリ:wxPython(ver. 4.0.3)
Table.3 ディスプレイ表示プログラムモジュール一覧表
クラス名 モジュール名 引数 戻り値(型) 概要
StartFrame __init__ parent,id なし 画面の準備
ShowSelect event なし 選択画面への遷移
SetStartFrame なし なし 起動画面の表示
SelectFrame __init__ parent,id なし 画面の準備
ShowReady event なし 確認画面への遷移
SetSelectFrame なし なし 選択画面の表示
Figure なし なし 図面の変更
ReadyFrame __init__ parent,id なし 画面の準備
ShowRun event なし 走行中画面への遷移
Exit event なし 選択画面に戻る
SetReadyFrame なし なし 確認画面の表示
Cursor なし なし カーソル位置の変更
RunFrame __init__ parent,id なし 画面の準備
ShowFinish event なし 終了画面への遷移
SetRunFrame なし なし 走行中画面の表示
FinishFrame __init__ parent,id なし 画面の準備
ShowExit event なし アプリ終了画面への遷移
SetFinishFrame なし なし 終了画面の表示
ExitFrame __init__ parent,id なし 画面の準備
Exit なし なし アプリの終了
SetExitFrame なし なし アプリ終了画面の表示
Status SetStatus なし status(String) 日付、電池残量の表示
GetDate なし date(String) 日時の取得
GetBattery なし Battery(int) 模型用バッテリ残量の取得
Emergency __init__ parent,id なし 画面の準備
SetEmergency なし なし 緊急停止画面の表示

インターフェイスデザイン

画面はディスプレイ下部に取り付けるスイッチで操作し、タッチパネルは使わない。
スイッチの信号、走行終了時の信号はRasPiから受け取る。
画面には選択経路のほかに、現在の時間とバッテリーの残量を表示する。
画面遷移図を以下に示す。
Fig.3 ソフト
Fig.3 画面遷移図
各画面のデザインを以下に示す。
Fig.4 ソフト
Fig.4 起動画面
Fig.5 ソフト
Fig.5 図面選択画面
Fig.6 ソフト
Fig.6 確認画面
Fig.7 ソフト
Fig.7 走行中画面
Fig.8 ソフト
Fig.8 緊急停止画面
Fig.9 ソフト
Fig.9 緊急停止画面
Fig.10 ソフト
Fig.10 完了画面

フローチャート

走行のフローチャートとディスプレイアプリケーションのフローチャートを以下に示す。
Fig.11 ソフト
Fig.11 走行フローチャート
Fig.12 ソフト
Fig.12 アプリケーションフローチャート

スレッド構成

スレッド構成を以下に示す。

RaspberryPi
・run
 走行制御を行う。
・display
 ディスプレイの表示を行う。

テスト項目

テスト項目の内容を以下に示す。

機能ごとのテスト

統合テスト

コーディングルール

・関数、変数について
関数は全て小文字の短い名前で書き、2単語以上の場合は単語の区切りにアンダーバー「_」を入れる。
変数は全て小文字の短い名前で書き、2単語以上の場合は2単語目以降の単語の頭文字を大文字にする。

・バージョン管理について
新しい機能を追加した際にそのバージョンのバックアップを取り、バージョンの数字を上げていく。
バージョンを上げた際には、足した機能をテキストファイルにまとめる。


MIRS DATABASE