CocoroboとTheta Sを連携させてみました。

どんなものを作ったのか。まずは動画をご覧ください。

皆様、Cocoroboはご存知ですか?
CocoroboはSHARPから出ている掃除機で部屋中を縦横無尽に走行し、自動的に綺麗にしてくれます。
また、シャープ開発のAIココロエンジンを搭載し、挨拶や会話をすることができます。

なぜ弊社がCocoroboを持っているかというと、Cocoroboの無料貸し出しキャンペーン 第二弾に応募して当選したからです。

今回利用したデバイスは以下の4つです。
devices

連携のために利用したワイヤレス通信は3種類です。
traffic

本ブログではCocoroboとNexus5部分のTIPSを重点的にお伝えできればと思っております。
cocorobo_nexus5

手順とTIPS

CocoroboRX200のAPIを利用する手順は下記COCOROBO API リファレンスに載ってます。
https://developer.cloudlabs.sharp.co.jp/clabsapi-web/document/api/cocorobo/
大まかに手順をお伝えすると

  1. SHARP Cloud Labs Developerでアカウント登録
  2. アカウントのマイページでAPI KEYの取得※Cocoroboの裏蓋に書かれているマックアドレスが必要です。
  3. Cocoroboのファームウェア変更→初期化→Wi-Fi接続→その他設定を行いAPI連携できるようにする。※初期化を忘れずに!また、Wi-Fi接続設定はUSBメモリを使ったマニュアル接続(USBメモリのRootディレクトリにWi-Fi情報を記載したtxtファイルを入れてCocoroboに挿す※ステルスWi-Fi環境では未検証)があるのでお試しください。
  4. お手持ちのスマホとCocoroboが同じWi-Fiにつながっている状態であれば後はAPIを叩くだけです。

 

Cocoroboと連携する方法は2通りある

一つはWebAPI
二つ目はスマートフォン向けAPIです。
前者は続【未完】シャープ製お掃除ロボット(cocorobo RX-V200)のAPIを叩くで詳細が書かれています。すばらしい。
弊社は後者のスマートフォン向けAPIを利用してみました。

仕組みは簡単で開発者用アプリをインストールし、そのアプリにaidl経由で命令を出すだけです。

  1. 開発者用アプリをインストール
  2. 開発者用アプリを起動し、Cocoroboとペアリングしておく
  3. 開発者用アプリとは別の自分で作っている開発中のアプリにaidlを追加する(COCOROBO API リファレンスに記載されているソースです)
  4. BindServiceするCOCOROBO API用クラスを作成する(COCOROBO API リファレンスに記載されているソースです)

ここでTipsですが、COCOROBO API用クラスをOS 5.0以上で実行しますと、
BindServiceするときに以下の問題が発生します。
java.lang.IllegalArgumentException: Service Intent must be explicit

OS5.0異常でBindServiceの引数に明示的インテントを指定しないと落ちるようです。
参考までに変更部分を上げておきます。

ソースコード変更前

	public CocoroboApi(Context ctx) {
		ctx.bindService(new Intent(IOpenApiCocoroboService.class.getName()), mServiceConnection, Context.BIND_AUTO_CREATE);
		this.ctx = ctx;
	}

ソースコード変更後

	public CocoroboApi(Context ctx) {
		Intent intent = new Intent(IOpenApiCocoroboService.class.getName());
		intent.setPackage("jp.co.sharp.openapi.cocorobo");
		ctx.bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
		this.ctx = ctx;
	}

次回に続きます。