Ruten株式会社のオンライン学生ハッカソンにて作成したサービスです. スマホに装着したレーザーポインタで,遠隔地から実空間をポインティングすることができます.

Webデザイン / Androidアプリの開発 / アルゴリズム考案

 ハッカソンのテーマは「リモートワークが普及した時代に必要になるツール」でした. リモートワークが普及すると,社員への指示をビデオ通話でする場面が増えてくると考えます. その際,音声やジェスチャーだけで指示が十分に伝わるのであれば問題ありません. しかし例えば,以下のように部品から何かを組み立てる作業を遠隔で指示を受けながら行う場合, 指示する側が言葉を工夫しなければ, 指示を的確に伝えることはできません.

 このように,ビデオ通話を介した指示では遠隔地の特定の対象にフォーカスをあてることが難しい という問題があります.

 私たちのサービスは,ブラウザアプリ,Androidアプリ,スマホに装着するガジェットから構成されます. ガジェットにはレーザーポインタが装着されており,Arduinoとサーボモータによって レーザーポインタの角度を調整することができます.
 動作手順は次のとおりです.まず,ブラウザアプリとAndroidアプリをそれぞれ起動し, 両者の間でビデオ通話を行います.するとブラウザアプリには, スマホカメラの映像が映ります.この映像上でポインティングしたい箇所(例えば,白くて四角いオブジェクト) にカーソルを合わせてクリックします.すると,スマホに装着されたレーザーポインタが実際に そのオブジェクトをポインティングします.これにより,遠隔でも特定の対象にフォーカスした指示を 円滑に行うことが可能となります.

 指示を出す側のPCと受ける側のスマホ(Android)でカメラの映像と音声を相互に通信し, ビデオ通話を行っています.ビデオ通話機能の実装には,リファレンスが充実しており WebアプリとAndroidアプリで両用可能なSkyWayというAPIを使用しました. 指示を出す側と受ける側は,Skywayのシグナリングサーバを経由して映像と音声の送受信を 行っています. また.指示を出す側のPCは,映像と音声に加え,画面がクリックされた際には (スマホの映像中における)カーソルの座標を送信します.スマホ側では,受信されたカーソルの 座標からレーザーポインタの角度を計算し,Arduinoに送信します。そして、Arduinoでサーボモータの PWM制御を行い,レーザーポインタの角度を調整します.

オンライン学生ハッカソンにて準優勝(全9チーム)

オンライン学生ハッカソン イベントページ

Webアプリ ソースコード

デプロイ済Webアプリ

Androidアプリ ソースコード