Pepper技術ブログ:はじめてのPepperアプリ開発(その2)

Pepper技術ブログ:はじめてのPepperアプリ開発(その2)

Pepper技術ブログ:はじめてのPepperアプリ開発(その2)

こんにちは!
日本システムデザイン Pepper担当のスエヨシです。
前回から、Pepper アプリ開発の基本的な手順について説明しています。今回はその2回目、Pepperくんが一言挨拶するだけの簡単なアプリを作ってみます。


◆Pepper アプリの構造

アプリを作り始める前に、Pepper アプリのプロジェクト構造について軽く説明しておきます。

chrg_project_structure
Choregraphe のプロジェクトファイル

Choregraphe で作られるアプリのプロジェクトファイルは、マニフェストファイルと複数のビヘイビアから構成されています(上記スクリーンショット左上の「プロジェクトファイル」ビューを参照)。「ビヘイビア」は一連の動作の流れ(振る舞い)を定義する「大きい部品」であり、「マニフェスト」にはアプリ全体に関する設定類と、各ビヘイビアについての起動条件をはじめとする各種設定が定義されています。
ビヘイビアを「大きい部品」と表現しましたが、このビヘイビア自体は「ボックス」と呼ばれる小さな部品を組み合わせて作られるようになっています。

chrg_box

ボックス

「ボックス」は、「話す」「聞く」「移動」等の基本的な動作が定義された最小の部品単位となっています。ボックスの左側の出っ張りが「入力」、右側の出っ張りが「出力」となっており、各ボックスの入力側(onStart 等)に対して直前のボックスの出力から線を繋ぐことでボックスの処理が開始され(*1)、出力側(onStopped 等)から後続の処理へ線を繋ぐことでボックスの処理が終了し(*2)、後続の処理が実行される、という流れで動作します。

このようにしてボックスを配置及び接続していくことでビヘイビアを作成し、作成したビヘイビアをマニフェストでまとめて制御することで、一つのアプリが成り立つようになっています。

(*1) onStop は当該ボックスで実行中の処理を停止させる場合に使用しますが、これについては本シリーズ第4回の記事で説明しています。
(*2) onStopped は全てのボックスに共通して定義されている終了の出力ですが、ボックスによっては onStopped 以外に出力が定義されているものもあり、終了+αの用途で使われます。一例として、本シリーズ第3回の記事で説明している SpeechReco ボックスには出力が3つ定義されており、処理結果に応じて出力先を分岐しつつ、正常処理の場合のみ処理結果を後続へ引き渡すような出力となっています。


◆ボックスを置いてみる

それでは、実際にやってみましょう。
アプリプロジェクトについては、Choregraphe を起動した時点で新規プロジェクトが作成されているのでこれを使います。またビヘイビアについても同様に、前述の新規プロジェクト内に作成されたものが表示されているので、そのまま使っていきましょう。
今回はPepperくんに「おはようございます」と言ってもらうだけですので、まずは Say ボックスを置きましょう。Say ボックスは Pepper を発話させる動作が定義されたボックスで、ボックスライブラリ内の Speech → Creation 配下にあります。

chrg_box_dragndrop
ボックスライブラリの Say ボックスをドラッグして、エディタ上(ビヘイビア root)にドロップ

Say ボックスを置いたら、ビヘイビア root 左上の onStart から Say ボックスの onStart へマウスでドラッグして線を繋ぎます。これでアプリ起動後にまず Say ボックスに到達して処理が開始されるようになります。次に Say ボックスの onStopped からビヘイビア root 右上の onStopped へ、先程と同様に線を繋ぎます。これで Say ボックス終了後アプリも終了するようになります(*3)

chrg_box_connect
設置したボックスとビヘイビア root の入出力を接続

ここまででとりあえずはアプリの形が出来上がりました。

(*3) ビヘイビア root の onStopped へ線を繋がないと、全てのボックスの処理が終了してもアプリが終了しなくなりますので、基本的に最後に処理するボックスからの接続は忘れないようにしてください。


◆ボックスの中身

さて、前段で Say ボックスの設置が完了しましたが、この時点では Say ボックスでしゃべる内容はデフォルトの「こんにちは」が設定されています。そこで、Say ボックスの内容を一部変更します。

エディタ上の Say ボックスをダブルクリックすると、エディタ部に Say ボックスの中身が表示されます(*4)。Say ボックスは LocalizedText ボックスと SayText ボックスの2つから構成されていて、それぞれ LocalizedText ボックスは設定されたテキストデータを現在の Pepper の言語設定に合わせて出力するボックスで、SayText は入力パラメータで渡された内容(今回の場合は LocalizedText からの出力内容)を発話するボックスとなっています。
つまり Say ボックスで話す内容を変更するためには、Say ボックス内の LocalizedText の値を変更すればいい、ということになります。

LocalizedText の言語設定で「Japanese」を選択し、テキストエリアに「おはようございます」を入力します。

chrg_localized_text
LocalizedText の編集。

ちなみにエディタ上部(ツールバー下部)の表示を見ると、現在エディタで表示している内容の階層が把握でき、また上位階層への移動も行えます。

(*4) Say ボックスの場合、複数のボックスから構成されるボックスである為、上記のようにエディタにボックス構成が表示されましたが、単独で処理が完結しているボックスの場合はダブルクリックするとスクリプトエディタが開いて Python で書かれたソースコードが表示されます。Python の経験がある場合は、このソースコードを直接編集することも可能です。


◆動かしてみよう

ここまでできれば、今回の目標は達成です。
早速動かしてみましょう。

まずは前回の記事で解説した手順に従って Pepper に接続します。

接続できたら、ツールバー上の接続アイコン(アンテナのアイコン)の隣、緑色の再生アイコンをクリックしてください。作成したアプリプロジェクトのデータが一時的なパッケージとして Pepper にアップロードされ、自動的に実行されるはずです。

chrg_debug_start
再生アイコンで動作確認を開始

↓ 実際に動かしてみました。



以上で、Pepperくんに挨拶してもらう目標が達成できました。
次回は、今回作ったアプリにもう少し機能を増やしてみます。


弊社ではPepperのアプリケーション開発を行っています。
詳しくはこちらをご参照ください。