サイト内検索
Translation here

Unityでpepperを動かしてみよう! #アルデバラン秋葉原

お疲れ様です、野村です。
今日はUnityとPepperを組み合わせてなんかできないか、というなかなか面白い試みをされた勉強会があったのでそちらに顔を出してきました。

本日の議題

主催・協賛ご各位

アルデバラン・アトリエ秋葉原 - 東京都 千代田区 - 地域社会・政府 | Facebook

いいね!お願いします。
私は関係者ではありませんが、いち参加者として非常に良いと思いました。

当選しました!しかし…

今日はシンクラ一本で乗り込んだのですが、Unity動かねーじゃん詰んだ…ってなってるので、今日は最初っからブログにする事にしました。
というかこんな環境でまともな開発できるわけね―じゃん!ってハナシですが。
帰ったら速攻で実施できるような形にしたので参加させてください、オナシャス!って言ってたら当選しました。
っていうところだったんですが、そもそも環境がアレだったのに気付いたのが当日朝だったんです、マジセンセンシャル!

pepper's ハードウェア

聞いたのそのまま書きます。たぶんスライド公開されるのかな?

新調120.1cm
体重27.kg
底面積が42.5*47:ルンバよりちょっと広い?感じ
頭をポンポンしやすいぐらいの高さ。

センサーがいっぱいあって、メカトロニクス工学のノウハウなどなどに基づいて細かいところとかに対応している、という印象です。

ざっくり
Microphone X4
Tactile sensor for head X3
RGB camera X2
infrared sensor(3D)ーKinectほどすごくないけどモーションセンサー
Tactile sensor for hand X3
Gyro sensor X2
Laser sensor X2 ライントレーサーとかで使うもの。
Soner sensor X2 ガラス扉とか

Bumper sensor X3 接触とか検知
体はその場で旋回(底部回転)させられるので、思った以上に場所を取らない。

アーキテクチャ

ロボ
qi
socket.io

イメージ

qiラッパー

socket.ioラッパー

.NET socket.io(Unity)

Bakulibの使用(仕様)上の注意

ベースはsocket.ioを使う
ただし、機能完全ではないので必要であればqi側を呼び出すこともできる。
→並行処理ができるかどうか、という観点もあるがそもそもpepperのCPU自体がそう良くないので、あまりムチャはさせられない。

typoあります!

pepperController.cs
startOfTouchSensor


321.
  _subscriberHead = memory.Subscriber ("MiddleTectileTouched")


うろ覚えのネタ

確かアルデバランの方が作ったJSラッパーがある。そういうイメージで作られているみたい。
#4に参加すると何となくその辺分かります。

なお、今回登壇者の杉山さん(BAKU氏)のライブラリを使ってます。
Baku.LibqiDotNet.Services.dll(pepper標準に依存)。C.NET(3.5)ベース

出来ない事は作りましょう(この辺はさすが勉強会のノリ)

Unityで動かす

必要なやつ:
3.0_alpha.zip
Google Drive
Bakulogさん

だいたいBakulogさんとこみてると大丈夫だと思います。
ただ、ベースはAldebaran Documentation見てねってことでした。

ついでに(こっちは情報ないです)

作り方

ここではUnityやpepperの基本的な部分は省略します。
session = new QiSessionFactory()
     .CreateSocketIoSession();  //socket.io使う。基本はこっち
(or) .CreateQiSession();  //qi使う。これは聞いた方がいいかも

session.Connect("IP");  //セッションを接続するpepperのIPを指定する
var tts = AL....(これはライブラリベース).(session); //やりたい命令を書いてセッション(pepper)を渡す
tts.(たとえばsayblockでやるならseyプロパティ系)
tts.Say...

ちなみにモーション

ここのsessionは上記から引き継いでいますが、念のため再掲します。
session = new QiSessionFactory()
     .CreateSocketIoSession();
//今回はsocket.io

ALMotion.CreateService(session);  //モーションサービスにセッションを渡す
//~ここからやりたいことを書く

とてもシンプルです。

Bakulibのtips

socket.ioとqiの違いとして、socket.ioからqiを読んでいるが、完全ではない。
(大体はできるけどバイナリ等変態的な操作はちょっと…)

見た感じLibqi.QiObjectを呼ぶ=pepper側のネイティブの機能を使うようなケースは独自に定義してあげなければダメ*1なので、極端な話凝ったことをしない限り気にしなくていい。
というかそういう変態的な事はするなということ。

*1 : Bakuさんの実例で言うとサウンドをpepperから取得するときにバイナリベースで渡したりpepper内部の仕様でprocessRemoteメソッドをコールバックで呼んでいるなど、結構内部仕様に振り回されるっぽい。

Q&A

お菓子持ってこさせたい

握力が200gぐらい。者を持ち運びはできない。そういうのはドローンで、どうぞ(迫真)

モーションをリアルタイムで取得する

→シミュレーターとかによるので沼
出来るかどうかはソフト屋さん、ツール屋さんに任せます。

Unityでpepperを動かす

普通に動きます、というか画面ベースでコントローラのシミュレーションできるの激熱ですね!
獏さんのツール使えればUnityでデバッグする、というような操作をやってみたくなるんですが、コレグラフのプロジェクトと同期できるのかな?
多分そこは意図してないんだろうけど、pepper側?で持てればかなり開発効率が上がりそうです。

要望だしとこ(いうだけはタダ)

イベントの様子(画像いっぱいなので後で更新します)


LT(発表含む。重いので個別ページに)

続きを読む

OK キャンセル 確認 その他