Python
Pepper
PepperDay 17

PepperのPython SDKでバーチャルロボットにさわる

More than 3 years have passed since last update.

今年はPepperくんとお仕事をする機会をいただきまして、なかなかおもしろい経験をさせていただきました。

Pepperくんはハードウェア的にも、ソフトウェア的にも面白いのですが、いかんせんまだ数が少ない。アルデバラン・アトリエ秋葉原にはPepperくんが数体いるのですが、実験したい人の数に比べると足りない感は否めないわけです。(あと近隣ではないとかでなかなか足を運べない方も多いのでないかと)

そこで、バーチャルロボットでできることはバーチャルロボットで極力やっておきたい、ということで今回はPython SDKをバーチャルロボットでさわってみたのでそのメモ。


Python SDK(NAOqi for Python)

Python SDKによるsay hello (Pepper TechFes技術セッション)で説明があるとおり、Pepperくんに対しては ALProxy クラスを介してPepperくんの9559ポートに接続することで、APIをリモートで操作することができる。

これをバーチャルロボットでもやりたいのだがどうすればよいか。

ここで、Pepper上の 9559 ポートでlistenしているのがNAOqiというサービスなわけだけれども、バーチャルロボットもきっとローカルで動くNAOqiなのだよねえと想像できる。さてどこでlistenしているのだろうか・・・


バーチャルロボットがlistenしているポート

結論から言うと、バーチャルロボットもPepper実機同様にNAOqiが動いていて、あるポートでlistenしていて、Choregrapheはこのポートを介してローカルNAOqiに接続して「バーチャルロボット」として見せているよう。

具体的にこのポートを知るには、 [編集]メニューの[設定]をクリックし、[バーチャルロボット]タブを開けばよい。 ここの [NAOqiの状態] というのがバーチャルロボットのサービスの情報を示している。以下の場合は 64695 ポートで動作している。

virtualrobot-port.png

この状態で、インストールしたPython SDKからlocalhostの 64695 ポートのNAOqiをさわると、Python SDKを経由してバーチャルロボットをいじることができた。たとえばこんな感じ。

C:\>python

Python 2.7.8 (default, Jun 30 2014, 16:03:49) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from naoqi import ALProxy
>>> motion = ALProxy("ALMotion", "localhost", 64695)
[I] 3448 qi.eventloop: Creating event loop while no qi::Application() is running
[I] 3448 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 3448 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:65302
>>> motion.moveTo(1.0, 0.0, 0.0)

上の例では、ALMotion.moveTo(X, Y, theta) に対して moveTo(1.0, 0.0, 0.0) を指定しているので、前に向かって1m動く。

動画としてはこんな感じ。

PepperのバーチャルロボットをPython SDKでいじる


他のやり方とか

この後ドキュメントを調べてみると、Choregrapheをインストールしたフォルダの bin/naoqi-bin.exe を実行する方法もあるっぽい。この場合は、ローカルの9559ポートでlistenするみたい。

まあ、Connect to virtual robot using Python scriptsでも同じようなことを言っている人がいるので、今回書いた方法もアリなんではないかと。

まあ、バーチャルロボットでできることは限られているんですけれども、Python SDKの動作もほどほど試すことができるのでちょっと面白いのではないかと思います。