名称 | MIRS2102ソフトウェア開発報告書 |
---|---|
番号 | MIRS2102-SOFT-0002 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2022.2.4 | 小河智摩,熊切雄之助,田中萌葉 | 初版 | |
A02 | 2022.2.4 | 小河智摩,熊切雄之助,田中萌葉 | 香川真人 | 第2版 |
FUTABAのメインプログラムである。pilot.cを実行し、変数などのセットアップが終わるとpy-c.txtというファイルを読み込み、評価をする。txtファイルは、webアプリからの情報を0,1,2のいずれかで記録してある。txtファイルに1が入っていた場合、switch文で播種用の動作に移行する。2が入っていた場合、除草用の動作に移行する。
播種、除草の動作で異なる点は、播種、除草用のモーターのどちらを回すかという点である。以下から走行の説明をする。
まずsystem関数を使用して画像認識プログラムを実行する。問題なくマーカーを読み取ることができたら直進が開始される。超音波センサで距離を測定しながら走行し、前方に障害物が存在する場合停止する。また、播種、除草用のモーターを走行中に回転させ、種及び除草剤の散布を行う。問題なくマーカーに近づくと超音波センサで指定した距離で停止する。
元々は直進が終わったのち、回転動作を行う予定だったが、ハード面の問題でうまく動作することができなかった。また、txtファイルを読む際に誤って動作が開始してしまうことが起こったため、当日はアプリからの入力ではなく、メインプログラムを開始したpcから直接操作するようにした。
ソースコードは2.1.と一緒に入っている。
除草/播種機構に使用したモータを回転させるプログラムを作成した。メインプログラムからの指示に応じて回転させるモータを指定することで、モードの切り替えを行った。また、メインプログラムから機体の方向転換、停止が指示された場合、除草/播種用モータを停止させる機能を実装した。数cmおきに除草剤及び種を散布する予定だったが、機構や走行中の振動が原因で実現には至らなかった。
OpenCVを用いてマーカーの検知を行った。マーカーの後ろに光源、もしくは光を反射するものがあると検知できなかったが、それ以外の状況においては問題なく検知できた。マーカーはwebカメラから3m離れた場所まで検知することが可能であったが、およそ1m以内にマーカーが設置された場合正しく認識できないといった問題があった。
webアプリからfirebaseに送られた情報を読み込み、txtファイルに書き出すというプログラムである。
プログラムを実行したらfirebaseなどのセットアップをし、firebaseが更新されるまで待つ。更新されたらその値をtxtファイルに出力する。
このプログラム自体は一切問題なく動作した。だが、もともとこのコードはpilot.cから呼び出していたが、closeするのに多くの時間がかかってしまうという問題点があるため、最終的には別々の端末を開いてpilot.cとfire.pyを同時に起動するようにした。
今回webアプリを製作するにあたり、使用した言語はHTML,CSS,JavaScriptである。
まずURLをクリックしてアクセスすると、ホーム画面へ遷移する。右上のログインボタンをクリックし、ログインページに移動すると、パスワードを入力することができる。ログイン機能にはfirebaseのRealtimeDatabaseを使用しており、設定したパスワードと入力されたパスワードを比較し、あっていたらwebアプリの画面へと遷移する。間違っていたら画面の上からエラー文が降りてくる。
webアプリの画面に遷移すると種まき、除草ボタンがあり、下に野菜を選択するselectタグがある。種まきボタンを押すとfirebaseに「1」を送信、除草ボタンなら「2」を送信する。野菜を選択するとそれぞれの野菜にあったpH値を表示し、選択した日にちを取得する。その取得した日にちによって今の時期に適しているかを表示する。
アプリ自体はうまく動作したが、元々考えていたプッシュ通知を実装することができなかった。
自分たちが目指していた、どこからでも操作をするということは実装することが出来たが、当初考えていた雑草認識は実装することができなかった。また、走行することが不安定であり、回転動作は床が滑る場所でないと一切できなかった。
しかし、実装する予定だった機能はほぼ全て実装することができたため、満足のいく結果となった。全体の開発を終えて、新たに学ぶことができたため、よい経験となった。これからにこの経験を生かしていきたい。