2017年12月18日月曜日

ロボホンをタブレットで操作

タブレットとロボホンの連携についてお話します。
実際のコードなどの説明はしませんが、参考になればと思います。


ロボホンを借りることがあったので、少し遊んでみました。

踊ったり、歌ったり、逆立ちしたりもする芸達者なやつでしたが、
私がやってみたかったのはタブレットとの連携でした。

たまに、お店や案内所で見かけることもありますが、
ロボホンの横に置いてあるタブレットをタップすると、
ロボホンがその内容に合わせて説明をしてくれたりします。

ペッパーも同じことをしてくれますが、ペッパーよりもロボホンの方が断然かわいいです。
そして比較的安価(高いけど・・)。

最近はWi-Fiモデルも発売されて、さらにリーズナブルになったようです。

ロボホン Wi-Fiモデル
http://www.sharp.co.jp/corporate/news/171002-c.html


さて、本題のロボホンとの連携についてお話します。

実際に作ったアプリは、
タブレットのボタンをタップしたら、ロボホンが「こんにちは」としゃべるアプリです。

* SDKダウンロード

まず、ロボホンのアプリを開発するためにはロボホン用のSDKが必要です。 ロボホンのサイトから誰でも取得できますが、アカウントの作成が必要です。 https://robohon.com/ アカウントを作成した後、マイページにログインし、 メニューの「ロボホンアプリ開発」からSDKをダウンロードすることができます。 あとは、AndroidStudioでプロジェクトを作って、ライブラリを登録します。 https://robohon.com/sdk/app.php

* アプリを開発

タブレットとロボホン、それぞれにアプリを開発する必要があります。 タブレットのアプリの方は、「こんにちは」というボタンを一つつけました。 ロボホンのアプリの方はサンプルコードがあるので、 それを見ながら命令を受けたら「こんにちは」としゃべるようにします。

* タブレットとロボホンの接続(Bluetooth編)

とりあえずタブレットとBluetoothをペアリングしたら出来るだろうという考えで プログラムを構築してみました。 ペアリングして、ボタンをタップすると「こんにちは」と喋ってくれたので、 意外と簡単にできたなー・・と思っていましたが、しばらく触ってみるとそうでもありませんでした。 アプリがバックグラウンドになるたびに接続が切断してしまい、 アプリを再度起動すると再接続しますが、それにも時間がかかってしまい、 とても実用的とはいえないアプリでした。 自分が案内所などで見たタブレットとロボホンは、 とてもスムーズに連携できていたように見えたので、きっと他の方法があるはず!と思って 別の方法を考えました。

* タブレットとロボホンの接続(Beacon編)

同じくBluetoothの機能を使いますが、Beaconならいけるかもと思い実装してみました。 ここでは、AltBeaconというのを使いました。 https://github.com/AltBeacon これを使用することで、Bluetoothの接続は安定しました。 しかし、Beaconの送信側では受信側へ受信できたかどうかの判断が出来ないため、常に同じデータを送信しますし、 受信側も受信し続けてしまうため、この方法も使うことはできないと判断しました。

* タブレットとロボホンの接続(Webサーバ編)

最終的にうまくいったのはこの方法です。 Webサーバといっても、別にサーバを用意するわけではなく、 ロボホン自体をWebサーバにするという方法です。 Android(ロボホン)の中にサーバを立てるといった方法は、見当もつきませんでした。 Webサーバを立てるためには、NanoHTTPDというライブラリを使用します。 https://github.com/NanoHttpd/nanohttpd HTTPプロトコルを使用して送受信が出来るので、送信側も受信側も安定した動作が可能になりました。 Wi-Fiネットワークだけは準備する必要がありますが、これぐらいなら簡単に準備できます。

* まとめ

あとはタブレットの操作でカメラを撮ったり、プロジェクターを投影したりと いろんな操作が想定できます。 ロボホンはたくさんの可能性を持ってると思うので、 見かけることが多くなるとうれしいかなと思います。

0 件のコメント:

コメントを投稿

寂しいと思えるチーム作り

12月末で一つのプロジェクトが終わりました。 最後のデイリースクラムの時に、一年目のメンバーが「寂しいですね」と言ってくれました。何気ない一言でしたが、チームをまとめている私としてはとても嬉しい言葉でした。お世辞だったかもしれませんが、それでもうれしかったです。 自分としてはちゃ...