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

版数 最終更新日 作成者 承認者 改訂記事
A01 2018.11.12 礒合優汰 高橋凌 初版
A02 2018.02.11 礒合優汰 高橋凌 牛丸先生 第2版

ドキュメント内目次


1. はじめに

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

2. モジュール構成


Raspberry Pi及びArduinoのモジュール構成図をFig1,Fig2に,新規モジュール一覧をTable1,Table2に示す.


Fig.1 モジュール構成図
Fig.1 Raspberry Piモジュール構成図


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


Table.1 Raspberry Piモジュール一覧
モジュール名 新規・変更機能 新規・変更関数名 引数 引数の用途 戻り値 戻り値の用途
pilot プログラム全体を制御する pilot() なし なし なし なし
uss 超音波センサの値を取得する
超音波センサをオープンする
uss_get()
uss_init()
int
なし
超音波センサーの位置を指定する
なし
int
int
超音波センサの値を返す
エラー処理
request 発射用モータの制御を行う
ブザーの制御を行う
テープLEDの制御を行う
パトランプの制御を行う
加速度センサーの値を取得する
request_set_shot()
request_set_io()
request_set_led()
request_set_pato()
request_get_sensor()
なし
io_state_t
int
io_state_t
int*
なし
ON/OFFの切り替え
なし
ON/OFFの切り替え
ポインタとして値の取得に用いる
なし
なし
なし
なし
なし
なし
なし
なし
なし
なし
run 警備状態の走行を行う
走行モジュールの初期化を行う
警戒状態の走行を行う
障害物をよける動作を行う
不審者のいる方向を向く動作を行う
run_security()
run_init()
run_warning()
run_avoid()
run_human()
なし
なし
なし
int
int
なし
なし
なし
障害物のある方向(周囲6分割)を渡す
不審者のいる方向(周囲6分割)を渡す
なし
なし
なし
なし
なし
なし
なし
なし
なし
なし
human* 人感センサの値を取得する human_get() int* ポインタとして値の取得に用いる なし なし
camera_ir* 赤外線カメラによる動画の撮影を開始する
赤外線カメラによる動画の撮影を終了する
赤外線カメラによるキャプチャを行う
camera_ir_on()
camera_ir_off()
camera_ir_capture()
なし
なし
なし
なし
なし
なし
int
int
int
エラー処理
エラー処理
エラー処理
photograph* USBカメラによる撮影を行う photograph() なし なし なし なし
slack* メッセージを送信する
画像を送信する
slack_txt()
slack_img()
int
なし
送信するメッセージを選択する
なし
int
int
エラー処理
エラー処理
*新規モジュール

Table.2 Arduinoモジュール一覧
モジュール名 新規・変更機能 新規・変更関数名 引数 引数の用途 戻り値 戻り値の用途
slave モードの追加 slave() なし なし なし なし
motor モータを制御する motor_shot() int pwm値を指定する なし なし
led_tape* LEDテープを点灯させる led_tape() int LEDテープの点灯パターンを指定する なし なし
sound* ブザーを鳴らす sound() int ブザーのONとOFFを指定する なし なし
gyro* 加速度センサの値を取得する gyro() int* ポインタとして値の取得に用いる なし なし
*新規モジュール

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

主要動作ブロックのフローチャートを以下のFig3に示す.



Fig.3 ブロックごとの行動フローチャート
Fig.3 ブロックごとの行動フローチャート


メインループの内容を以下に示す.


4. スレッド構成

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

  • メインスレッド
  • センサスレッド

5. コーディングルール

5.1. 関数・変数

関数は全て小文字で書き,最初にモジュール名を書く.2単語以上の時は_(アンダーバー)でつなぐ.
変数名は小文字で書き,2単語以上の時は2単語目の頭の文字を大文字にする.


5.2. バージョン管理

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

6. テスト項目

6.1. 機能ごとのテスト

  • 走行機能テスト : 廊下の中央を直進走行し,曲がるポイントで曲がることができるかテストする
  • 不審者検知機能テスト : 不審者を検知できるかテストする
  • カラーボール発射機能テスト : カラーボールを発射できるかテストする
  • 動画閲覧機能テスト : Motion-mmalで,赤外線カメラで撮影したライブカメラ映像をブラウザで閲覧できるかテストする
  • 画像送信テスト : slackを用いて画像ファイルを送信できるかテストする
  • 連絡機能テスト : slackを用いてテキストメッセージを送信できるかテストする
  • バッテリーチェック機能テスト : バッテリー残量を確認できるかテストする
  • 転倒感知機能テスト : 機体の転倒を感知できるかテストする
  • 警戒機能テスト : ブザーとLEDテープで警戒状態を表せるかテストする


6.2. 統合テスト

  • 校内巡回テスト : 実際に巡回コースを巡回させ,不審者の発見から連絡,カラーボール発射までの一連の動作ができるかテストする


7. 各パートへのリンク

各パートのドキュメントへのリンクを以下に示す.





MIRS DATABASE

TOP