先日のGoogle I/O 2016にて、Pepper SDK for Android Studioが発表されました。

今回はこちらを利用して、Pepperを制御してみたいと思います。

Pepper SDK for Android Studioの導入

Preferences > Plugins > Browse RepositriesからPepper SDKをインストールすることができます。

SDKのインストールが終わると、Robot SDK Managerが追加されます。 Robot SDK ManagerからAVDとToolsをインストールします。

PepperでHello, World

Pepperを召喚する

新規にプロジェクトを作成します。 この際Min SDKは22、Android5.1を指定してください。

次にFile > New > Robot Applicationを選択します。 するとbuild.gradleAndroidManifest.xmlがロボットアプリ向けに変換されます。

これでPepperアプリのための準備が整いました。

今回は残念ながら筆者の周りに手頃なPepperがいないので、バーチャルロボットで動作確認をおこないます。

RunをするとAndroidのシュミレータに加えてrobot_viewerが起動します。

Pepper

Hello, Worldと言ってもらう

今回はPepperの胸部にあるAndroid端末上にButtonを設置し、押下時にPepperが喋るようにします。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="io.github.younippon.pepper_android.MainActivity">

    <android.support.v7.widget.AppCompatButton
        android:id="@+id/button_hello"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello, world!"/>
</RelativeLayout>

MainActivity.java

package io.github.younippon.pepper_android;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

import com.aldebaran.qi.sdk.object.interaction.Say;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button buttonHello = (Button)findViewById(R.id.button_hello);
        buttonHello.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                sayHello();
            }
        });
    }

    private void sayHello() {
        Say say = new Say(this);
        say.run("Hello, World!");
    }
}

Say.run(String)で指定の文字列を喋らせることができます。

実行してみます。

Pepper

Pepperがしゃべってくれました!(シュミレーターなので吹き出しですが…)

その他いろいろな動作をさせてみる

せっかくなので、いろいろな動作を試してみます。

一部音声・センサ・LED等の制御はシュミレータでは利用できないので注意が必要です。

前方に進む

GoTo.run(Frame)で移動や回転を制御することができます。

private void goStraight() {
    Quaternion r = new Quaternion(0, 0, 0, 1);
    Vector3 t = new Vector3(1, 0, 0);
    Transform tf = new Transform(r, t);
    Frame robotFrame = Actuation.get(this).robotFrame();
    Frame robotAtStart = robotFrame.makeDetachedFrame(System.currentTimeMillis());
    Frame targetFrame = robotAtStart.makeStaticChildFrame(tf);

    new GoTo(this).run(targetFrame);
}

ゴリラのモノマネをする

SDKにはサンプルとしてデフォルトで様々な動作が同梱されています。

res内にrawディレクトリを作成し、 rawディレクトリを右クリックnew>Import animation...を選択します。

するとanimation_browzerが表示されるので、そこからAnimationを選択します。

今回はAction > Animals > gorilla_b001を選択しました。

Animate.run(Animation)でアニメーションを制御することができます。

private void mimicGorilla() {
    Animation animation = Animation.fromResources(this, R.raw.gorilla_b001);
    Animate animate = new Animate(this);
    animate.run(animation);
}

Pepper

ゴリラの十八番、マウンティングです。

まとめ

  • Pepper SDK for Android Studioが発表され、AndroidでPepperアプリの開発が可能になった。

  • 手元にPepperがなくともシュミレータ上で動作の確認ができる。

  • いろいろなアニメーション動作を制御できる。

まだβ版ということで不具合が多いので、今後に期待です!