名称 MIRS1905 ソフトウェア詳細設計書
番号 MIRS1905-SOFT-0001
版数 最終更新日 作成者 承認者 改訂記事
A04 2019/11/25 赤池 牛丸先生
A03 2019/11/12 赤池
A02 2019/11/8 佐塚
A01 2019/11/6 佐塚 初版

1.はじめに

本ドキュメントはMIRS1905のソフトウェアにおいての詳細設計書である。

2.機能概要

機能概要をtab.1に示す。
tab.1 機能概要
機能 目的 方法 記述言語
昇降機能 案内している駐車場が満車になり別の区画に車を案内しなければいけないとき表示板を切り替え、次に案内したい区画に促す モータを用いて昇降を行い、制御にはArduinoを用いる C言語
緊急停止機能 異常事態が発生したときに手動でボタンを押したら停止するようにする 電源ボードから緊急停止ボタン用の配線を行い、緊急時にモータを止めるようにする なし(アナログ回路)
車認識機能 カメラを用いて車を認識し何台来たかをカウントしていく。カウントした値はアプリと連携する カメラ、機械学習を用いてRaspberryPiで制御を行い、認識したデータをWi-Fi経由でアプリと連携させる Python
アプリ連携機能 カメラで認識した車の台数をカウントの他通知などを行う アプリケーション開発をする Java script
バッテリー管理機能 バッテリーの電圧が基準値に達しているかを確認する Arduinoを用いて計測を行い、バッテリーの電圧が基準値に達していない場合は通知を行う C言語
衝突防止機能 車との距離が一定の値より近づいたとき停止する 超音波センサを用いて相手との距離を測り、制御にはRaspberryPiを用いる C言語
ライントレース機能 車を案内するときや、移動するときに用いる フォトリフレクタを使用し、制御にはArduinoを用いる C言語

3.モジュール構成

RaspberryPi及びArduinoのモジュール構成図をfig1、fig2に、RaspberryPiの新規モジュール一覧をtab2、tab.3に、Arduinoの新規モジュール一覧をtab.4に示す。


fig.1 RaspberryPi モジュール構成図



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


tab.2 RaspberryPi 新規モジュール一覧(C言語)
モジュール名 機能 関数名 説明
pilot プログラム全体を制御する void main() 引数、戻り値は共に無し
uss 超音波センサの値を読み取る long uss_get(int) 引数は超音波センサの指定に使用
戻り値は測定値(cm)
超音波センサをオープンにする int uss_open() 引数は無し
戻り値は成功"0"か失敗"それ以外の値"
run 一台目の誘導を行う void run_load() 引数、戻り値は共に無し
所定位置への移動 void run_locate(int) 引数は移動する区画の指定に使用
戻り値は無し
request バッテリーの残量確認 int request_get_batt(double *volt) 引数voltは電圧(V)
戻り値は成功"0"か失敗"それ以外の値"
coop1 カウントデータをアプリに送る int coop_sent() 引数はカウント用データ(進入"-1"か退出"+1")
戻り値は成功"0"か失敗"それ以外の値"
coop2 Python⇔C言語間で通信する char *coop_python(int,*char) int引数は通信処理、*char引数はデータの格納に使用
戻り値は送信したデータ(+1か-1)
io 昇降機構用のLED制御 int io_led(int) 引数は点灯させるLEDレーンの指定に使用
戻り値は点灯中"1"か消灯中"0"

tab.3 RaspberryPi 新規モジュール一覧(Python)
モジュール名 機能 関数名
camera_rec カメラから取り込んだ映像に画像処理を実行し、動体検知を行う conv2d_bn
inceptionV3
preprocess_input
coop2 Python⇔C言語間で通信する coop_c
tab.4 Arduino 新規モジュール一覧
モジュール名 機能 関数名 説明
slave モードの追加 void slave() 引数、戻り値は共に無し
moter_board 昇降機構用モータの制御を行う void motor_board(int) 引数は上昇か下降かの指定に使用
戻り値は無し
line_t ライントレース走行の制御を行う void line_t(int) 引数は移動する区画の指定に使用
戻り値は無し
フォトリフレクタの値を読みとる int line_fot_get(int) 引数はフォトリフレクタの指定に使用
戻り値は成功"0"か失敗"それ以外の値"

4.フローチャート

C言語での動作のフローチャート以下のfig.3に、Pythonとアプリの動作フローチャートを以下のfig.4に示す。


fig.3 C言語 フローチャート



fig.4 Python アプリ フローチャート


5.スレッド構成

スレッド構成は以下の通りである。
  • メインスレッド
  • アプリスレッド
  • 案内板LEDスレッド

    6.テスト項目

    実施する機能テストについて、以下のtab.5に示す。
    tab.5 機能テスト 項目一覧
    優先度(簡易テストから) テスト名 テスト内容
    1 車認識テスト 取り込んだカメラ映像から、車の通過を認識できるか
    2 移動テスト1 用意したライン上を逸れずに走行できるか
    3 移動テスト2 移動テスト1に加え、指定した距離、ルートの移動ができるか
    4 アプリケーション連携テスト サーバーにカウントデータを送信し、サーバー側から確認できるか

    7.コーディングルール

    関数名については全て、"モジュール名_目的動作"の順にアルファベット小文字で表記する。
    また、各ファイルのディレクトリ内に、変更点を記したReadme(テキストファイル)を置く。

    8.各パートへのリンク

    エレクトロニクス詳細設計書
    メカニクス詳細設計書