名称 | MIRS1805ソフトウェア開発報告書 |
---|---|
番号 | MIRS1805-SOFT-0002 |
版数 | 最終更新日 | 作成 | 承認 | 改訂記事 |
---|---|---|---|---|
A01 | 2019.2.7 | 佐野、杉山、渡邊 | 牛丸先生 | 初版 |
A02 | 2019.2.8 | 佐野、杉山、渡邊 | 牛丸先生 | 第二版 |
本ドキュメントはMIRS1805におけるソフトウェアの開発報告書について記述したものである。
11月時点での詳細設計では内容を詰め切れておらず、設計の内容が大きく変わったので新しい詳細設計書に沿った開発報告書になっている。
1.走行プログラム
担当:佐野・杉山
・mirs本体から50cmの距離に障害物があったら止まるようにしながら指定された座席や廊下と撮影する位置を行き来する。
・止まるようにするのは直進するときだけで、回転するときは障害物があっても止まらない。
・座席を指定するときはその座席に伴ったプログラムをSSHで実行することで移動し、それ以外の移動は指定された時間になったら実行される。
以上のような動作をするプログラムを作成し、完成させた。
< 完成度評価 >
指定された座席では机を正面に見えるように、撮影する場所では黒板を正面に見えるように移動するのはできたが、電池残量によって走行距離や回転角度に差が出てしまった。
走行の際の超音波センサでの検知はでき、障害物があったら止まるようにできた。
2.会話プログラム&音声認識プログラム
担当:渡邊
人の音声を認識し、辞書に登録された単語が発話された場合返事をするようなプログラムを作成した。
音声ファイルをスピーカー出力するプログラムを作成し、完成させた。
音声認識はPythonのSubprocessモジュールを利用してJuliusを実行することで実装した。
< 完成度評価 >
音声認識は、そもそも動作しなかったため完成しなかった。
原因は、サウンドデバイスの指定方法への理解が不足していたことだろう。
プログラムの実行前に使用する再生デバイス、録音デバイスを指定することで改善できると考えられる。
3.スケジュール編集プログラム
担当:渡邊
・授業変更前の年・月・日・教科と授業変更後の年・月・日・教科をユーザーに入力してもらい、授業変更内容を読み上げてからjsonファイルとして保存する。
・土日を選択した場合は再入力を促す文面を表示する。
以上のような動作をするプログラムを作成した。
jsonファイルはPythonのjsonモジュールを利用した。
また、読み上げはPythonのSubprocessモジュールを利用してOpenJTalkを実行することで実装した。
< 完成度評価 >
スケジュール編集は二点を除き、完成したといえるだろう。
まず一点は、保存できる編集内容が一つのみであることだ。
経験上、保存できる編集内容は最高十個を想定しなければ実用レベルでないといえる。
次にもう一点は、土日の場合再入力を促すのを撤廃し、そもそも土日である日は表示しないべきだったことだろう。
4.授業配信プログラム
担当:渡邊
cronを利用し、指定時間になった場合にhaishi.shを実行することで授業配信をYouTubeLiveで行うプログラムを作成し、完成させた。
授業配信にはffmpegを利用した。
< 完成度評価 >
授業配信は実行できたものの1080pで配信できず、これはRaspberryPiのスペックを考慮せずに1080pのカメラでの配信を試みようとしてしまったことに原因があるだろう。
RaspberryPi一台使用してる以上これは解決不可能であり、仕様製作の段階でRaspberryPiのスペックを考慮することで改善できると考えられる。
5.Arduinoプログラム
担当:杉山
標準プログラムであるmotor.inoにmotor_set関数を模したmotor_set_neckという新規関数を追加した。
< 完成度評価 >
標準プログラムを改良して首のモータに対応させることが出来た。
モータにエンコーダがなかったのでエンコーダを使わなかったが完成した。
使用したプログラムへのリンクを以下に示す。
プログラム
pythonで作成したプログラムはmenu4mirsに、c言語で作成したプログラムはArduinoに、Arduinoで作成したプログラムはArduino2にある。
機体や基盤などのトラブルもありプログラム統合が発表会ギリギリとなってしまったため動画の撮影編集時間が取れずに大変だった。