塩尻」のレポートで、前回の続きになります。今回は二日目の話です。一日目でペッパー君に何とか松岡修造っぽく喋らせるようになりました。一日目は開発時間がたっぷりありましたが、二日目は時間があまりないのでした。ロボットであるペッパー君は、他の開発チームと違って、自宅で動作を試したり確認することができません。小型ロボットなら家に持ち帰ることができるのでしょうけど、ペッパー君はかなり体重が重いのです。バッテリーが10時間ほど持つそうなので、バッテリーの重さによるところが大きいのでしょう。何にしても二日目の朝9時半頃から来て開発となりました。発表は午後4時なので、昼食時間を考慮しても開発できる時間はだいたい6時間になります。6時間まるまる使えるかというと、残念ながら駄目なのです。これはペッパー君のハードウェア的な問題なのですが、熱でダウンしてしまうことが多いのです。「僕、疲れたよ」というセリフを吐き、ひゅ〜んとうなだれてしまったら30分は使えません。他の一チームもペッパー君を使うということなので、午後3時には全ての開発が終わっていないといけません。残された開発時間はリハーサルも含めて4時間ほどです。私の所属するチームは技術力がないので(ロボット開発は全員素人だし)、その分、プレゼンやアイデアでカバーする必要があります。リハーサルをやってみて、修正するとなると、すべての音声とモーションは遅くとも午後2時には完成していなければなりません。ペッパー君が二台ではなく四台あれば、ギリギリまで開発しても大丈夫だったのですが。ペッパー君に接続できなかったりなど、いくつかトラブルがありました。ペッパー君は(多分)DHCPで自分自身のローカルIPアドレスを持っています。前面のタッチパネルの奥にある胸のボタンを軽く押すと、自分の名前とIPアドレスを言ってくれます。ペッパー君を認識しない場合は、直接IPアドレスを入力することになります。ペッパー君は誰かが使うと、他の人からの制御は受け付けません。リクエストがあると画面にダイアログが出て、接続を切るか拒否するか選択することになります。今回はペッパー君が二台だったので、こういうシーンはあまりなかったのですが、一台だったら開発は間に合わなかったと思います。ちなみにエラーなどの問題が発生すると、以下のようにボックスが赤く表示されます。思ったほどエラーになることはありませんでしたが、やはり期待通りに処理させるには、様々なノウハウが必要だと実感しました。https://twitter.com/openspc/status/787566517038649344午前中にはだいたいのモーションができあがっていました。松岡修造っぽいと言えば修造っぽいかなあ。思ったほど高速に動かせないのと、様々な制限があって、プレゼンを工夫しないといけませんでした。https://twitter.com/openspc/status/787492237294698497https://twitter.com/openspc/status/787492720449159168・モーション関係のページ、ライブラリhttp://qiita.com/Atelier-Akihabara/items/adbcbf5de1c04767ca93http://pepper-atelier-akihabara.jp/archives/280まず、室内を走るということで「音声認識で開始」するようにしました。ペッパー君のセンサーはいろいろありますが、実際にトリガーとして使えるのは左バンパー、右バンパー、後部バンパー、頭部(三か所ある)です(手にもセンサーがあります)。室内を四周するのですが、どこかで倒れ込み、倒れ込んだところを修造ペッパーが励まします。問題は倒れ込んだかどうかを、どう判断するかです。結論から言えば、倒れ込み判定は無理みたいです。そこで、倒れ込むと同時にペッパー君の左バンパーを手で押すことにしました。ところが、近くで倒れ込むと安全装置が機能して、ペッパー君の腕が動きません。ペッパー君は家庭用として作られているため、プログラムで腕を動かしても近くに人がいると当たらないようになっています(ちなみにペッパー君本体にも当たらないようになっています)。必要不可欠な配慮ですが、これは困りました。仕方ないので、距離センサーの範囲の変更を試みました。マッシュアップアワードでは、メーカー等から開発のアドバイスをもらえるのが最大の利点です。この範囲を変更する方法を教えてもらったのですが、Python言語ということで、結局時間切れで挫折しました。実は誰もちゃんとPythonを使ったことがないというオチで......。狭いところを通れるようにhttp://tkawata.hatenablog.com/entry/2015/04/19/233535ペッパー君には顔認識機能があって、自動的に追従させることができます。試しにやってみると、1.5m以内は問題なく追従できます。2.5mあたりまでも大丈夫です。ところが、この範囲を超えると見失ってしまいます。逆光の場合に見失うのは、初日の開発テストで分かっていたのですが、2.5mを超えると見失ってしまうというのはノーチェックでした。顔認識ができれば、ペッパー君が走者を目で追うということができてよかったのですが。次に音声によるスタート処理に移りましたが、なんとうまく音声を認識してくれません。ペッパー君は音声認識のレベルを設定できるのですが、デフォルトの30%でも認識してくれないことがあります。10%にまで下げると、無関係な言葉でも反応してしまいます。100%だと正確な発音以外受け付けてくれません(やってみたけど無理)。そこでペッパー君がどのくらい正しく認識したかを、表示する方法を教えてもらいました。Choregrapheの表示メニューからダイアログを選択すると、認識した言葉やペッパー君自体がしゃべった言葉が表示されます。四人のうち誰を一番認識するかを試して、走者を決めました。私の言葉は滑舌が悪いのか最低でした......。いうことで走者が決定したので再度リハーサル。何とか見られる程度にまでなりました。幸いにして、まだ午後2時。見るとペッパー君が一台余ってます。このペッパー君にプレゼンもやってもらうことにしました。喋りながら、身振り手振りで説明させるわけです。モーションと喋る時間を合わせるのですが、腕の動きはじめの秒数を調節しなければいけません。0.25秒など細かい指定をしても難しいとのことでした。やってみると0.5秒程度なら、あまりずれることなく合わせることができました。ちなみに、個体差(モーターの差)が結構あるとのことで、同じプログラムを他のペッパー君で走らせても、期待通りにならないそうです。無事に開発も終わり、発表となりました。ここで、思わぬアクシデント。ペッパー君は、充電のために後部バンパー付近に充電口があります。この充電口が開いていると、移動しないようになっているのです。この充電口の蓋を閉じておかなかったので、松岡修造っぽく応援しながら移動するという動作を実演できませんでした。何にしても、二日間に渡ったペッパー君の開発は予想以上に面白く、またロボットならではのノウハウが必要というのも実感しました。いうことで、ペッパー君は棺桶......じゃなくて、箱に入って佐川急便でどこかへ運ばれていきました。openspc@alpha.ocn.ne.jphttp://www.openspc2.org/ペッパー君の開発は面白いので、機会があればぜひ体験してもらいたいなあと思います。これを一家に一台となると......どうなんでしょうね。居留守番としては結構使えるかと思いますが。app(アプリケーション)のクラッシュ頻度の高さはどうにかならないかなあと。再起動に5分以上かかるのも、開発時の難点と言えば難点でした。この著者の記事一覧へこのサイトについてこのサイトは平日毎日発行しているメールマガジン「日刊デジタルクリエイターズ」のバックナンバーを収録しているサイトです。1998年4月の第1号からすべて収録されています。著者別の掲載リストもあり(ページ末尾)、気になる著者のバックナンバーを読むことができます。基本的にメールマガジンの発行後、このサイトが更新されるので、最新情報を確実に読みたい場合は、メールマガジンを購読して頂くことがお薦めです。「日刊デジタルクリエイターズ」のメールマガジンは、デジタルメディアで活躍する現役クリエイターたちのコラムで構成されている本格派のメールマガジンです。実用的な内容から、インスピレーションを刺激する内容まで多彩なコラムをお届けします。メールマガジンスタンドの「まぐまぐ」「melma!」にメールアドレスを登録するだけです。ご購読は以下のボタンから。Disqus広告グラシン工房では半透明の極薄紙「グラシン紙」の封筒など、ラッピングアイテムを販売中!オリジナル柄の印刷やOEMでの製造も承っております。Amazonを使用しています。記事)川合和史@コロ。