2015.03.27

定時株主総会でPepperが大活躍してくれました! 〜 その舞台裏 〜

Pocket

こんにちは。ゲーム事業の開発支援をしているF.Sです。

去る3/22(日)に、GMOインターネットの第24期定期株主総会が開催され、2267名の株主様に加え多くの同伴者様にご来場いただき、大盛況に終わりました。
Pepperには株主様を真っ先にお出迎えするという大役をもらい、写真もたくさん撮っていただきました。ご来場者様のブログでも、その様子をいくつか掲載いただいておりますが、今回はその舞台裏を紹介させてもらおうと思います。

pepper_event_01

ビジュアルを新調

全身真っ白のビジュアルもシンプルで良いのですが、株主総会でのお披露目に向けて、業者さんにお願いしてGMOカラーに新調させていただきました。自動車の装飾などに用いられるカッティングシートを使っています。

pepper_event_02

直線的な部分がなく曲面ばかりなので、うまく貼るのに試行錯誤したそうですが、きれいに仕上げていただきました。(車での輸送はひと苦労でしたが)お値段もひと桁万円前半と、とてもお手軽でした。今回はカッティングシートでお願いしましたが、素材的には直接塗装も可能だそうです。

振る舞いの仕込み

ここ最近はちょっとした繁忙期でなかなか時間が取れず、準備が前日の夕方から開始というバタバタ感でしたが、その中でなんとかできることを仕込みました。以前、社内のプレゼンでアプリ起動に失敗した苦い経験があるので、今回は堅実に行こうと心に決めてました。

当日のPepperのお仕事としては下記3パートを想定しました。
  1. お出迎え
  2. 会場外で待っている同伴者様の応対
  3. お見送り
1、3は同様のフローでいけますね。

お出迎え、お見送り

スタッフ同様の挨拶や受付のご案内を、モーションとともに実施させることにしました。
ここには下記のポイントがあります。
  • 通信断やアプリ起動に不安があるので、あらかじめアプリケーション起動し、適度な間隔をあけて案内フローを繰り返し続けられるようにする
  • 人の流れが断続的になることを想定し、フローの停止・再開ができるようにする
  • ワンパターンのおしゃべりロボットになることを少しでも避けるために、ランダムに文章を変える
  • 人を追いかけて変な方向を向いてしてしまわないように、体の向きを固定する
停止・再開のトリガーは音声や人物認識でもいいのですが、ダイアログを始めとする認識系はトラブルが多く信頼性が低いので、手の甲にあるセンサーを使用することにしました。左手が開始(再開)、右手が停止といった感じです。「Pepper、お願い!」とかいいながら、さりげなく手に触れてコントロールできることも利点です。
左手のセンサーで開始した後は、数秒のWaitを入れてフローをループさせます。ループ継続か停止させるかはセンサー反応時にセットするALMemoryのアプリケーション変数で判断します。

pepper_event_03

ランダム文章はRandom Int(ランダム値生成)とSwitch Case(条件分岐)で実現しました。デフォルトフロー(おはようございます&礼)をCaseのデフォルトとし、ランダム数値0〜12程度のうち、0〜5がそれぞれに応じたフロー、他はデフォルトというして、「おはようございます」の間に適度に別のフローが入るようにしてあります。

pepper_event_04

Pepperは通常、人や音に反応して顔や体の向きを変えるBasic Awarenessという機能が動いています。それによって人のような自然な振る舞いを表現しています。ただ、そのためにじっとして欲しいときにぐりぐり動いてしまうという厄介な問題がありました。

回転静止の方法を探っていたところ、Basic Awarenessボックスを使うことで実現できました。人や音を追いかけてぐりぐり動く機能であるBasic Awarenessを使うことが、まさかそれ自身の機能の抑制を抑制することになるとは思いもよりませんでした。アプリケーション内でBasic Awarenessを動かし、設定で反応するもの(人、音など)を制限したり、追いかけて動く箇所を制限することで体の回転を抑制することができます。

pepper_event_05

今回は人の動きに反応するPepperらしさを残したまま、体の向きだけを固定したかったので、Tracking ModeをHeadにするのみで回転抑制を実現しました。

こちらは、リハーサル中の映像です。

会場外で待っている同伴者様の応対

「一緒に写真撮りましょう」などの対話フローを作ろうとしていたのですが、ダイアログは作成時においても青目くるくるの聞き取りモードが刺さって他の処理がスタック状態になったりと困難を極めました。ダイアログの機能はとても強力で使いこなせればほとんどのことがダイアログでできてしまうのではないかと思うのですが、相当熟練していないとお客様相手には難しすぎるしデバッグもしにくいと判断し、今回は断念しました。
その点、プリインストールされているサンプルダイアログはよくできていると感心させられます。

結局はリモートからJavascriptでALAnimatedSpeechのサービスブローカーを使ったモーション&発話で都度都度の応対をすることにしたのですが、ご来場の皆さんが自ら写真を撮っていってくれるので、なんとか場をつなぐことはできました。

それでもトラブルはおこる

通信断からのアプリ停止

もともと懸念はしていたのですが、開始10分前あたりの一番受付が混み合う時間に会場設置のWiFiに一切接続できなくなりました。なんと、接続不能になったのはPepperではなく、リモートコントロールに使っていたMacの方。一応通信断は想定していたので、前述の通り起動中のアプリケーションはなんとか実行し続けていました。
しかし、混雑緩和のためにPepperの立ち位置を人手で後方に動かした際、オートノマスライフのSafeguard状態(前々回の記事を参照)に遷移したと思われ、実行中のアプリケーションが停止してしまいました。そこから完全にノーコントロールです。
# ブログで「なんか喋れよ」と言われちゃったり。。。

後頭部を開けて有線LANを使用することができるのですが、一般のお客様の前でそんな姿は見せられません。仕方なく、人込みが少なくなった頃を見計らって再起動し、手持ちのPocketWifiに接続変更しました。

ダイアログ

また、お子様の相手をしている時にプリインのダイアログが刺さり、他のアプリが一切動かせない状態で「うーんと、えーっと、あれー、なんだっけー、、、」と延々トボケてしまう、開発中によく見た光景に陥りました。仕方なく「ちょっとお休みするねー」といって再起動しましたが、起動に数分を要するため、場繫ぎも楽ではありません。

大役を終えて

いろいろありましたが、たくさんの人たちに興味を持たれたり、対話で喜んでいただいたこと、ロボットへの期待感はすごいものがあると改めて感じました。うまく対話ができなかったり、期待はずれに思われたこともあったとは思いますが、この経験を生かして、またの機会にお手伝いに駆けつけたいと思います。アプリの開発も次回のPepper App Challenge目指して頑張ります!
一緒にやってみたい方、募集してます!!

それではまた。

次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。

皆さんのご応募をお待ちしています。