はじめに
続きです。とりあえず、Pepper 実機へ接続する確認をまだしていなかったので試してみました。
今までは興味から C++ で試していましたが、今回は手軽な Python にしてみました。
Pepper 実機で実行
実行4 (失敗)
自分の PC から API で Pepper に接続して実行します。
hello.py
# !/usr/bin/python
from naoqi import ALProxy
tts = ALProxy("ALTextToSpeech", "192.168.3.58", 9559)
tts.say("Hello")
$ ./hello.py
[INFO ] Starting ALNetwork
[INFO ] NAOqi is listening on 127.0.0.1:54010
Traceback (most recent call last):
File "./hello.py", line 5, in <module>
tts = ALProxy("ALTextToSpeech", "192.168.3.58", 9559)
File "/path/to/pynaoqi-python-2.7-naoqi-1.14-mac64/naoqi.py", line 282, in __init__
inaoqi.proxy.__init__(self, args[0], args[1], args[2])
File "/path/to/pynaoqi-python-2.7-naoqi-1.14-mac64/inaoqi.py", line 276, in __init__
this = _inaoqi.new_proxy(*args)
RuntimeError: ALNetwork::getModuleByName
failed to get module ALTextToSpeech http://192.168.3.58:9559
エラーでした。
Pepper 側のログにはこんなのが出ていたようなので、接続はしたけど「failed to get module ALTextToSpeech」なのでしょう。
Pepper102 [0] /var/log/naoqi $ tail -f tail-naoqi.log
[W] 1419836877.127194 3839 qimessaging.transportsocket: Incorrect magic from 192.168.3.4, disconnecting (expected 1118690882, got 1414745936).
実行5 (成功)
自分の PC から SSH で Pepper に接続し、Pepper 内で API を実行します。
$ ssh nao@192.168.3.58
Password:
Pepper102 [0] ~ $ python
Python 2.7.3 (default, Jun 13 2014, 15:08:05)
[GCC 4.5.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import naoqi
>>> from naoqi import ALProxy
まずは localhost 指定で実行してみます。
>>> tts = ALProxy("ALTextToSpeech", "localhost", 9559)
[I] 7615 qi.eventloop: Creating event loop while no qi::Application() is running
[I] 7615 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 7615 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:42881
[I] 7615 qimessaging.transportserver: TransportServer will listen on: tcp://198.18.0.1:42881
[I] 7615 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.3.58:42881
>>> tts.say("Hello")
Pepper が「Hello」と言いました。
続けて IP アドレス指定で実行してみます。
>>> tts = ALProxy("ALTextToSpeech", "192.168.3.58", 9559)
[I] 7994 qimessaging.session: Session listener created on tcp://0.0.0.0:0
[I] 7994 qimessaging.transportserver: TransportServer will listen on: tcp://127.0.0.1:43065
[I] 7994 qimessaging.transportserver: TransportServer will listen on: tcp://198.18.0.1:43065
[I] 7994 qimessaging.transportserver: TransportServer will listen on: tcp://192.168.3.58:43065
>>> tts.say("Hello")
Pepper が「Hello」と言いました。
感想
- 実行4 の失敗の理由がわかる方、ぜひ教えてください。