名称 MIRS2002 ソフトウェア詳細設計書
番号 MIRS2002-SOFT-0001
版数 最終更新日 作成者 承認者 改訂記事
A01 2020.11.12 坪井、鈴木 香川先生 初版

1.ドキュメント概要

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

2.機能概要

機能概要を表.1に示す。
表.1 機能概要
機能 詳細 方法 記述言語
画像認識 機械学習によってカメラの映像からボールを判別する 自作したカスケードファイルを用いてカメラから取得した画像の認識を行う Python
プロセス間通信 画像認識の結果を走行プログラムに送信する 牛丸先生が作成した通信プログラムの一部改変を行う Python,C言語
ボール回収 ボールの追従、回収を行う 画像認識で取得したボールの位置情報をもとにボールの追従、回収を行う C言語
衝突回避 ボールと干渉しない機体前方左右両端の位置に設置した超音波センサで常時前方の障害物との距離を測り衝突を防ぐ動作をする 一定時間障害物を検知し続けたら旋回を行う C言語
昇降機能 昇降用のモータを駆動させボールを引き上げる ボールがリフト内のスイッチに触れた際にリフトを引き上げボールを荷台に乗せたのちにリフト定位置へ下げる arduino言語


3.各モジュールの関係

青く示されているのが新規追加するモジュールである。
黄色と青で示されているのが一部変更する標準モジュールである。
各モジュールの一覧を表.2、表.3、表.4で示し、図.1、図.2でモジュール構成図を示す。


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

図.2 Arduino モジュール構成図
表.2 RaspberryPi 新規、変更モジュール一覧(C言語)
モジュール名 概要 関数名 備考
pilot 初期操作を行う void main() 引数、戻り値は共に無し
ball_count 回収したボールの個数をカウントする ball_count() カウントしたボールの数を戻り値として返す
run_ball 移動機能と緊急停止を備えたモジュール main() 引数、戻り値は共に無し
com_recv_first 通信の確立とpythonとの通信を行うモジュール com_recv_set(),com_recv_get() com_recv_set()でpython<-->c間通信の確立
com_recv_get()でpythonから送られてくる結果を取得

表.3 RaspberryPi 新規、変更モジュール一覧(Python)
モジュール名 概要 関数名 備考
camera_discrimination 画像認識を行う 認識した結果を場合分けし、文字型配列をrun_ball.cに送信

表.4 Arduino 新規、変更モジュール一覧
モジュール名 概要 関数名 備考
slave RaspberryPi との通信、走行制御を一定周期で行う void slave() 引数、戻り値は共に無し
elevator 昇降機のモータ制御を行う void elevator() 引数、戻り値は共に無し
collect_motor 回収用モータの制御を行う void collect_motor() 引数、戻り値は共に無し

4.フローチャート

Pythonの動作フローチャートを図.3に、C言語の動作フローチャートを図.4に示す。

図.3 Python フローチャート

図.4 C言語 フローチャート


5.購入予定物品

購入予定物品を表.5に示す。
表5.購入予定物品
物品名 購入サイト 型番 数量 単位 単価 価格 備考
Arduino Mega 2560 R3 Switch Science ARDUINO-A000067 1 5937 5937 Arduino Mega 2560 R3リンク