PepperがHello Worldするまで

ペッパーがハローワールドするまでの一連の流れを記述していきます。
※pepperのエミュレータが動く前提で説明を行うのでまだの方は下記の公式サイトリンクから設定をお願いします</p>

Pepper SDK for Android — QiSDK

Hello Worldぺっぱーくん

1.はじめにプロジェクトの作成から行います。ここは通常と変わらずなんでも大丈夫です。



2.次にSDKですが、Marshmallowを選択して進めてください



3.プロジェクトはシンプルにEmpty Activityで作成します



4.Robot Applicationを入れる

作成を行ったら下記の画像にあるようにFile →New→LobotAplication..を選択してください。この作業はpepperのプロジェクトを作る際に必ず必要になる作業です。これをしないとpepperのライブラリが読めなくなってしまうのでプロジェクト作成後に行うことを習慣化してください。



5.最新のSDKを選択る

このようなポップアップが画面に表示されるので、okを選択します現在2018/8/13でAIP3となっていますが、ここは最新の物があればそれを選んでもらえればいいと思います。



6.MainActivityに移って継承するクラスを変更

AppCompatActivity → RobotActivity


7.変更を反映させる

継承してもそのままではimportされていないようなのでリフレッシュボタン?見たいのなのを押してimportできるようにします。Android初心者なのでまだよくわかっていませんが、困ったらリフレッシュボタン押してみるのがいいそうです。



8.インポートする

importができるようになったので、電球マークをクリックでインポートするかalt + enterのどちらかでインポートを行うとエラーが消えます



9.onCreateにロボット処理をスタートさせるコードを記述

次にQiSDK.registerを記述します。onCreate内でこいつを呼ぶことによって、ペッパーを操作する関数に飛ばしていろんな命令ができますここでAndroid Studioが自動生成してくれるので下記の画像のように進めましょう。二つ選択肢が出てくると思いますがCastではなくimplementの方を選んでください。



10.補完機能で記述する

下記画像のような確認画面が出てくると思うのでそのままOKを選択してください。

onRobotFocusGained()

基本的にはこのの中でペッパーに関する処理を行います。アニメーションをさせたりペッパーと会話をしたりするのはこの中です。

onRobotFocusLost()

これはロボットが対象を見失ってしまったり何か問題が発生してしまった場合に通ります。ペッパーが人間と対話をしている際などに人間が離れてし待った際に何か処理を行うときなどに使います。

onRobotFocusRefused

これはアプリが閉じられた際に行う処理です。ペッパーの処理で使ったものをここで最後に破棄をしておかないとメモリの無駄遣いをしてしまうのでregisterなどはここで破棄するようにします。
私もまだpepperプログラミングを始めたばかりなので、上記の3つ認識が100%正しいのかどうかはちょっと不明ですが、大きな間違いはないと思うので参考にしてみてください。

11.メモリの解放

QiSDK.registerを起動したらonDestroyでメモリの解放をしてあげる必要があります。メモリは大切に!



ここまで来たらあとはHallo Worldするだけです!

12.Say関数を実行

SayBuilderメソッドを使ってペッパーを喋らせて見ましょう。よく忘れてしまうのですが.run ()をしないと実行されないので注意してください。



コード全文

package com.example.pepper.hellopepper;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import com.aldebaran.qi.sdk.QiContext;
import com.aldebaran.qi.sdk.QiSDK;
import com.aldebaran.qi.sdk.RobotLifecycleCallbacks;
import com.aldebaran.qi.sdk.builder.SayBuilder;
import com.aldebaran.qi.sdk.design.activity.RobotActivity;
import com.aldebaran.qi.sdk.object.conversation.Say;

public class MainActivity extends RobotActivity implements RobotLifecycleCallbacks {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        QiSDK.register(this, this);
    }
    @Override
    protected void onDestroy(){
        super.onDestroy();
        QiSDK.unregister(this, this);
    }

    @Override
    public void onRobotFocusGained(QiContext qiContext) {
        Say say = SayBuilder.with(qiContext)
                .withText("Hello World")
                .build();
        say.run();
    }

    @Override
    public void onRobotFocusLost() {

    }

    @Override
    public void onRobotFocusRefused(String reason) {

    }
}