名称 | MIRS2004ソフトウェア開発報告書 |
---|---|
番号 | MIRS2004-SOFT-0003 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2021.02.03 | 佐藤恭理、中村伸哉 | 香川先生 | 初版 |
本ドキュメントはMIRS2004 救球プロジェクトのソフトウェア開発完了報告書である。
作成したソースコードを各リンクにて示す。
走行制御はtest_requestの直進、旋回を用いた。直進速度や回転速度は本体がある程度違和感なく動き、かつ外装がはがれないように調整している。直進距離、回転距離については基本固定にしているが、発見時の動作は画像認識プログラムからの引数を用いている。
コンベア制御Arduinoに走行制御のものを参考にして追加し、RaspberryPiについても同様に追加している。尤も、用いたモータにはエンコーダがなく、正確な回転速度制御の必要もないため、より簡略化されている。RaspberryPi側については回転か停止かの制御のみで、回転速度についてはArduino側で適度な速度に調整して、そこで固定している。
プログラム自体よりも、メカやエレキと統合するのに苦労した。早めに統合しておけば良かったと思った。
完成したアプリケーションの動作を動画にて示す。 Xcodeを用いてiOSアプリケーションをSwiftUIで実装した。当初予定していたプロトタイプと比較すると、設定画面を削ぎ落としている。回収する球種を選択して機体を走らせるまでの最低限の機能は早い段階で実装できたためよかったと思う。 また、UIに関して、配色やフォントをはじめ、プロジェクトのテーマに沿うようなの設計ができた。また一部UIにNeumorphismを採用した点に関して、ユーザーに柔らかさや暖かさを届けるデザインとして良い選択ではったと感じているが、Neumorphism自体がUXの観点から直感的な操作が可能なものではないため考える余地がある。 使い方などの解説がなかったため、UXの観点から考えると少し使いづらいため、今後アップデートさせるのであれば機体とアプリケーションだけ渡された人が完璧に使いこなせる状態を目指したい。 開発において、環境変数の受け渡しに苦戦した。その際にApple Developer Forumにて他のデベロッパーの方と言語を超えてディスカッションができたのはいい経験になったと感じている。
発表当日の通信環境などの問題からBluetoothの使用が難しいと考えたためGoogleが提供しているサービスの「Firebase Realtime Database」を用いた。要求される機能が似ているため前年度のMIRS1904でのコードを参考に実装した。MIRSとサーバー間の通信にはNode.jsを用いており、アプリケーションからのデータベースの変更が行われた際に任意の実行ファイルが実行できるようになっているため本体の動作との統合もスムーズに行えたことは良い点として挙げられる。
Tkinterを用いて表情を変更するようにした。PythonとC言語で通信を行い、C言語のメインプログラムで値を送り、Pythonでその値で定めた表情を表示する。液晶表示部のプログラムにある待ち時間は、短くすると異常な動作をしたり動かなくなったりすることもあるため、調整した。
初期の頃はsystem関数で呼び出していたが、デバッグがかなり面倒でプログラムを実行する度にリブートしなければならなかった。
また、注意点として本プログラムはVNC ViewerなどでRaspberryPiのデスクトップが確認できる状態でしか実行できず、アプリケーションによる実行も不可能である。時間があれば、別の方法を試してこの問題を解決したかった。
Opencvとpythonを用いて画像認識を行った。教室での画像認識の精度が悪かったため、正解画像を教室で300枚ほど撮って追加した方がより精度が増していた。
raspberrypiのGPUの性能がそこまで良くないため、もう少し性能の良いGPUを使って動かしたいと思った。