LoginSignup
12
15

More than 5 years have passed since last update.

[2015/11/19] naoqi os で python SDKを使ってローカルからサービスをレジストする方法

Last updated at Posted at 2015-11-19

ADEアカウントの取得

https://www.aldebaran.com/ja
上記のサイトでアカウントを取得してください。
pepper持っている人は、すでにお持ちだと思いますが。
ない人は、取得おねがいします。

デベロッパーズプログラムへの参加

https://community.aldebaran.com/ja/developerprogram
デベロッパーズプログラムに登録しましょう。
ss1.png

SDKの入手

https://community.aldebaran.com/en/resources/software
現在の環境に合うSDKをダウンロードします。
Python 2.7 SDK バージョン名 OS名 bit数
例:
僕の環境は、ubuntu 64bit でpepperのバージョンが2.4.2なので、
[ Python 2.7 SDK 2.4.2 Linux 64 ]という感じです。

ss2.png

python 環境の構築(オプショナル)

python環境の構築については、オプションです。なぜなら、
Windows以外のOSはデフォルトで本記事に必要なバージョンSDKがインストールされているからです。

すでに機械学習や科学計算をするために python 3.x 系やその他の環境を構築している方は、
pyenvとか入れていると思いますが、下記に記事をリンクしておきます。

pyenvを使ってMacにPythonの環境を構築する

python naoqi & qi モジュールのインストール

以下、オフィシャルの資料
Python SDK - Installation Guide

ターミナルでの作業になるので、環境を定義します。
エディタ:emacs(vi, nanoとかあると思います。)
OS:Mac(linuxでもほぼ同じ)

上記のサイト&方法で、pynaoqi-python2.7-2.4.2.26-mac64をダウンロードしてきます。
zip形式だと思うので、好きなディレクトリに解凍します。

端末(terminal)を立ち上げて、各種エディタで、~/.bash_profileに以下を追記します。

\$ export PYTHONPATH=\${PYTHONPATH}:/path/to/python-sdk
\$ export DYLD_LIBRARY_PATH=${DYLD_LIBRARY_PATH}:/path/to/python-sdk

/path/to/python-sdk の部分はさすがにそのままではなくて、さっきダウンロードして解凍してきた。
ディレクトリへのパスです。

端末(terminal)を立ち上げて、import 確認
\$ source .bash_profile
\$ python
>>> import qi
>>> import naoqi
何も問題がなければ次へ。

Windowsの方におすすめのサイト
Apple(日本)

qibuildのインストール

qiBuild documentation - Getting started
・用意するもの
1.cmakeのbinへのパス
\$ which cmake
とかで取得してください。

・pip でインストールする。
\$ sudo pip install qibuild

\$ qibuild config --wizard でconfigファイルを作成する
一番最初は、cmakeのbinへのパスを求められますが、それ以外は、1を選んでおけばベター。
ss3.png

・動作確認
\$ qibuild --version
qibuild version 3.10.1
Using Python code from /usr/local/lib/python2.7/dist-packages
Using CMake code from /usr/local/share/cmake

サービスを作ってみる

Python - How to write a qimessaging service
やっと本題です。ローカルからpepperのアプリやダイアログの^pCallやcallなどで使える
サービスをレジストしましょう。

myfooservice.py
import qi
import sys

class MyFooService:
  def __init__(self, session):
    print "hello,"

  def bang(self):
    return "world"

def main():
    # Create and Start the Application
    app = qi.ApplicationSession(sys.argv)
    app.start()

    # Get the Session
    session = app.session

    # Create the Service
    mf = MyFooService(session)

    # Register It
    session.registerService("MyFooService", mf)

    # Run the Application
    app.run()

if __name__ == "__main__":
    main()


ローカル環境からLAN上のpepperにレジストする

はい、前の項で無事サービスの大本になるpythonファイルが出来ましたね。
あとは、レジストするだけです。以下必要なもの。
1.pepper ip or ドメイン(192.168.0.xとかpepper1.localとか)
2.実機pepper ssh password
先ほど作ったファイルののディレクトリへ移動します。

\$ cd /path/to/sakki/no/faile/myfooservice.py
\$ python myfooservice.py --qi-url=tcp://pepper1.local (あるいは、192.168.0.11とか)

そうすると、以下のような感じになるかと思います。
ss4.png

とか言ってくれるかな、と思うんですが、いかがでしょうか。

実機で動作確認

serviceなんで、実機の中で使えるか検証してみましょう。
以下必要なもの
1.pepper ip or ドメイン(192.168.0.xとかpepper1.localとか)
2.実機pepper ssh password

ssh でログインしましょう。
\$ ssh nao@pepper.local

サービスが正しくレジストされているかどうか確認しましょう。
\$ qicli info MyFooService
\$ qicli call MyFooService.bang

ss7.png

終わり

以上、完了です。次回は、サービスを実際のアプリケーションに組み込んで動かす方法を書こうかなと思います。
ご不明な点とうございましたら、コメント欄までおねがいします。

12
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15