名称 | MIRS2102ソフトウェア詳細設計書 |
---|---|
番号 | MIRS2102-SOFT-0001 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2021.11.12 | 小河智摩,田中萌葉 | 初版 | |
A02 | 2022.1.14 | 熊切雄之助,田中萌葉 | 香川真人 | 第2版 |
本ドキュメントはMIRS2102のソフトウェアの詳細設計書である。
基本機能を表1に示す。
表1 機能概要
機能 | 目的 | 詳細 | 記述言語 |
---|---|---|---|
衝突回避 | 障害物との衝突を回避するため | 超音波センサで前方の障害物との距離を測り衝突を回避する | C |
画像認識 | 区画設定用マーカーを検知するため | 既存のカスケードファイルを用いてカメラの映像からマーカーを認識する | Python |
除草機能 | 除草機能を実現するため | 除草用モータの回転方向を周期的に切り替え除草剤を撒く | Arduino |
播種機能 | 播種機能を実現するため | 播種用モータの回転方向を周期的に切り替え種を撒く | Arduino |
webアプリとの連携機能 | ユーザーにFUTABAの動作を制御させるため | webアプリからの入力を受け取り、それに沿った動作をする | JavaScript,HTML,CSS |
各機能実現のためのモジュール構成を以下に示す。
Arduinoのモジュール構成図を図1に示す。また、これらのモジュールの詳細を表2に示す。
黄色で示されているものが既存モジュールで、一部変更するモジュールには斜線を引いてある。
図1 Arduinoモジュール構成図
表2 Arduino 新規、変更モジュール一覧
モジュール名 | 概要 |
---|---|
Slave | 各種の処理の実行を行う |
weeding | 除草用モータの制御を行う |
planting | 播種用モータの制御を行う |
RaspberrPiにはメイン処理用のC言語プログラムと画像認識用のPythonプログラムを実装する。
C言語プログラムのモジュール構成図を図2に示す。また、図2のモジュールの概要を表3に示す。
図2 C言語モジュール構成図
表3 C言語新規、変更モジュール
モジュール名 | 概要 |
---|---|
Pilot | 初期操作およびプログラム全体の制御を行う |
request | Arduinoへの命令を行う |
arduino | Arduinoとのシリアル通信を行う |
Pythonプログラムのモジュール構成図を図3に示す。また、図3のモジュールの概要を表4に示す。
図3 Pythonモジュール構成図
表4 Python新規モジュール
モジュール名 | 概要 |
---|---|
camera_reco | OpenCVを利用した画像認識によりマーカーの検知を行う |
fire | webアプリとの通信を行うために、Firebaseにデータの送受信を行う |
動作フローチャートを図4に示す。図中の指定距離1および指定距離2は以下のように定義する。
・MIRSと障害物との距離が指定距離2より近い場合、方向転換を行う。
・MIRSと障害物との距離が指定距離1より近い場合、回避行動を行う。
また、指定方向はループカウンタの変数iと対応して決定される。対応関係を表4に示す。
表5 指定方向とカウンタ変数の対応
i | 1 | 2 | 3 | 4 |
---|---|---|---|---|
指定方向 | 左 | 右 | 右 | 左 |
図4 フローチャート
webアプリケーションを使用し、ユーザーがFUTABAを操作する。
機能概要を以下の表6に示す。
表6 アプリケーションの機能概要
機能 | 目的 | 詳細 |
---|---|---|
ログイン機能 | ログインした人だけが播種、除草機能を使用できるようにするため | firebaseを用いてパスワードを設定し、ログイン画面にてパスワードを打つとログインができる |
播種、除草機能 | アプリケーションから播種、除草の指令を出すため | firebaseを用いて、アプリケーションの種まき、除草ボタンを押すとfutabaが動く |
適切なpH表示機能 | 選択した野菜の適正pHを表示するため | htmlのselectを用いて野菜を選択し、その選択した野菜をjavascriptで判定。それぞれの野菜に応じてpHを表示する |
栽培時期の表示機能 | 選択した野菜の栽培時期を文字で簡単にユーザーに伝えるため | 野菜を選択した日時を取得し、それと野菜の栽培時期を用いて表示する |
図5 ログイン画面
図6 ログイン後の画面
図7 野菜選択後の画面