名称 MIRS2202ソフトウェア開発報告書
番号 MIRS2202-SOFT-0002

版数 最終更新日 作成 承認 改訂記事
A01 2023.02.17 山田凌央,浅見颯太,角田啓昌 香川真人 初版

目次

1. ドキュメント概要
2. LINE→スプレッドシート
  2-1. スプレッドシートへの出力
  2-2. LINE操作
  2-3. スプレッドシート
3. モジュール→Raspberry Pi
  3-1. ライントレース走行制御
  3-2. 経路設定
  3-3. 通信プログラム Raspberry Pi-Arduino
  3-4. 体温測定
4. Raspberry Pi→スプレッドシート
5. 開発スケジュール
6. 各パートへのリンク



1. ドキュメント概要

本ドキュメントはMIRS2202のソフトウェアの開発報告書である。

2. LINE→スプレッドシート

fig.1 システム概要

LINEを用いた情報のやり取りを図に示す。fig.1のように一度スプレッドシートへすべてのデータを送り、制御する。

2.1. スプレッドシートへの出力

LINE.gs
LINEからスプレッドシートへの送信のために使用したプログラムを添付する。NASUBI 公式アカウントに送信されたテキストはシート(15,2)へ先頭に"$"のついたテキストは(15,3)へ出力される。入力された日時は(15,1)へ出力される。

2.2. LINE操作

LINEの操作画面を以下に示す。
LINE for businessのリッチメニュー機能を用いて、診療科ボタンが押された際は対応した番号が出発ボタンが押された場合は"$3"が入力される。呼び出しを押した際は管理者に直接電話がかかる。
デモ時には利用者は受付から案内への切り替えのみしか行わないと想定しボタンでのモード切替は3のみとした。ほかのモードへの切り替えは管理者が手動で行う。

fig.2 LINE操作画面


2.3. スプレッドシート

LINEとRaspberry Piの情報入出力はreceiveシートを介して実行される。fig.3に示す。

fig.3 receiveシート

収集された情報はカルテシートへまとめられ、管理者から見えるようになっている。

fig.4 カルテシート



3. モジュール→Raspberry Pi

3.1. ライントレース走行制御

機体前方に設置したカメラを用いてライントレース走行を行う。
カメラから得た映像を解析する手法をとったため、一般的なフォトリフレクタを使う方式より複雑になった。しかしその広い視野を活かして交差点を認識してからの走行、転回など多彩な機能を搭載でき、またラインへの復帰が容易となったため、高速走行が可能で急なカーブにも対応するなど、高いパフォーマンスを発揮できた。
対象プログラム:linetrace.cpp l_judge.cpp

3.2. 経路設定

本機体は、原則としてライントレースを用いて走行するが、最大4方向の一般的な交差点を用意し、そこを直進、右折、左折することで、目的地まで到達するように設計されている。これを実現するために、機体の現在地と目的地から経路を設定し、通行する各交差点でどちらに向かうか算出するのが本プログラムである。
経路設定プログラムは非常に複雑で、作業が難航したが、よほど複雑な地形でない限り経路設定ができるようになった。また、経路を取得するために用意する地図に拡大したドット絵を用いることにより、視覚的にわかりやすく、扱いやすいようにできた。
対象プログラム:recept.cpp

3.3. 通信プログラム Raspberry Pi-Arduino

今回接続するモジュールをArduinoで制御するため、複数のArduinoとの接続が可能になるように標準機のプログラムを改良した。
複数のArduinoとの接続は、想定よりも問題が発生したが、プログラム自体は正常に動作した。
対象プログラム:arduino.c raspi.ino slave.ino

3.4. 体温測定

体温測定モジュールを用いて体温測定を行い、その結果をスプレッドシートへ送信する。
モジュールに付属したLEDが点灯した際に、体温測定が可能で、測定完了すると消灯するように、設計を変更した。これにより、体温測定の成否をわかりやすくし、精度の高い測定が行えるようになった。スプレッドシートとの連携は4に記す。
対象プログラム:tmp.c main1.ino tmp_kansei.ino

4. Raspberry Pi→スプレッドシート

LINEから入力された情報をGoogleスプレッドシートに保存し、その情報をMIRSに取り込み、またMIRSからスプレッドシートへ情報を送信できるようにした。

手順:
1.スプレッドシートからMIRS(テキストファイル)へ
2.テキストファイルと各プログラム間
スプレッドシートとの連携が必要な各プログラム(main.c navi.c recept.c standby.c tmp.c)では、1つのテキストファイルに対して、それぞれランダムアクセスを用いて情報をやり取りした。しかし、少しのミスでそのテキストファイルが崩れ、使えなくなる問題があった。
3.MIRS(テキストファイル)からスプレッドシートへ

対象プログラム:txt_gspread.py nfc_reader.py main.c navi.c recept.c standby.c tmp.c

5. 開発スケジュール

 予定していた開発スケジュールをfig.5に示す。

fig.5 予定していたスケジュール1

fig.6 予定していたスケジュール2


 機体に用いたキャスターによる外乱が大きかったこと、外装の作成に手間取ったことにより、ライントレース走行制御の調整が間に合わなかった。また、モジュールの完成が遅れ、統合時に複数のArduinoの管理がひるようだったために、全体での統合が遅れることとなった。


6. 別パートへのリンク

MIRS2202 開発完了報告書
MIRS2202 開発完了報告書(メカニクス)
MIRS2202 開発完了報告書(エレクトロニクス)




MIRS2202ドキュメント管理台帳へ