2. 作成したプログラムと評価
2-1. Webアプリケーション(iPad)
<概要>
iPadを操作することでロボットの移動を停止・再開させたり水を出したりすることができる。
ロボットの移動中は「停止」と書かれたボタンを表示し、それがタップされるとすべてのnavigation2のアクションをキャンセルすることで移動を停止する。
「停止」ボタンが押されると、「「停止しました コップを置いてください」というメッセージが表示され、OKを押すと「水を出す」と書かれたボタンが表示される。これをタップすると、ROS2の通信により水を出す命令が送られ水が出る。
水出しが完了すると、再度「水を出す」ボタンが表示される。
「水を出す」ボタンが表示されてから20秒間操作が行われないと5秒間のカウントダウンの画面が表示され、その後移動を再開する命令が送られる。
図1、図2にiPadで表示する画面を示す。
 |
|
fig1. 停止画面 |
 |
|
fig2. 水出し画面 |
<評価>
すべての動作を安定して行うことができた。
<改良・改善案>
実証実験で行なったアンケートで、ボタンの操作の手順がわかりにくかった、紙コップをすぐに取り出さないとロボットが勝手に移動してしまうのが不便だと感じた、という意見があった。そのため、「停止」「水を出す」というボタンを表示させるだけでなく、説明文も表示させることで操作の手順がわかりやすくなり使いやすくなると考えられる。
また、一定時間操作が行われないと自動でロボットが移動を再開する機能については、水を出し終わってから移動を再開するまでの時間が短かったため、「水を出す」ボタンが表示されてから移動を再開するまでの時間を延長したり、周りに人がいるかLiDARで検知し、人がいないことが確認できてから移動を再開するようにしたりすることで水を出し終わったあとに急いで紙コップを取り出さなくて良くなり便利になると考えられる。
<対象プログラム>
webサーバーのプログラム
通信用のプログラム
2-2. 水の管理・提供
<概要>
水の提供やポンプの回転、ペルチェ素子・サーミスタを用いた水の冷却を行う。
iPadでの操作により水を出す命令を受け取ったらサーボモーターを回転させ、水を出し始める。一定時間が経過したら再度サーボモーターを回転させ、水出しを停止する。
水を出した回数をカウントし、その回数に応じてポンプを回転させ提供したした水の量だけメインタンクからミニタンクに水を汲み上げる。
サーミスタでミニタンクの温度を監視し、一定温度を上回ったらペルチェ素子でタンクを冷却する。
<評価>
水を出す命令を受け取った時のサーボモーターの動作やポンプによる水の汲み上げは安定していた。
水の冷却については動作させたのが冬であり、もともと水が冷たかったため本当に水が冷却できているのか不明である。
<改良・改善案>
<対象プログラム>
ESP32のプログラム
2-3. Webアプリケーション(自律走行)
<概要>
ロボットの管理者はロボットが移動するスケジュールをWebアプリケーションで作成・管理できる。スケジュールでは、移動する場所と移動の開始・終了の時刻を設定できる。
また、ユーザー向けにロボットの現在位置や今後の移動スケジュールを公開する。ロボットの現在位置はマップ上に表示される。
ユーザー向けのwebページは学内LANに接続されていない端末でも表示できるようにした。
図3にスケジュールを作成・管理するwebアプリケーションの画面を示す。
 |
|
fig3. スケジュール作成画面 |
図4にスケジュールを公開するwebアプリケーションの画面を示す。
 |
|
fig4. スケジュール公開画面 |
<評価>
スケジュールを作成・管理については、指定した時間・場所を移動することができた。
現在位置の表示については、MIRS発表会のときに体育館のブースの絵の上をロボットの走行と連動して点が移動することが確認できたが、廊下を走行しているときに学校の地図の上を点が移動するかは確認していない。
<改良・改善案>
スケジュールを作成・管理するwebアプリケーションとスケジュールを公開するwebアプリケーションは連動しておらず、それぞれでスケジュールを入力しなければならない。その2つを連動させることでより便利になると考えられる。
<対象プログラム>
スケジュールの作成・管理用プログラム
スケジュールの公開用プログラム
2-4. 自律走行
<概要>
作成したスケジュール通りに校内をロボットが移動する。
作成されたスケジュールを読み込み、そのスケジュール通りに移動するようにNavigation2でに速度指令値が出力される。
Raspberry PiにLiDARが、ESP32に足回りのエンコーダーが接続されており、そのデータと学校のマップをもとにナビゲーションが行われる。
Navigation2はPCで実行され、Raspberry Piを経由してESP32に速度指令値が送られ、ESP32がモーターを回転させる。
使用した学校のマップを図5に示す。
 |
|
fig5. 学校のマップ |
<評価>
校内での自律走行は行うことができた。しかし、Navigation2をPCで動作させているため通信が切れてしまうと動作しなくなってしまうことから安定して長時間走行させることはできなかった。通信が切れ、ロボットが走行しなかったり走行中にロボットが止まらなくなったりしたことが何度もあった。
廊下での走行中、人を避けることはできた。
<改良・改善案>
通信が切れ、新たな速度指令値が送られないときに自動で停止するようにすることで安全性を高められるため、この機能は必ず実装するべきであった。
また、バッテリーの電圧を監視し、低下したら自動でMIRS部屋の前に戻ってくる機能を実装したかった。
<対象プログラム>
Navigation2の起動用プログラム
Raspberry Piのプログラム
Navigation2の目的地を指定するプログラムはスケジュールの作成・管理用プログラムと同じ。