色々めぐりあわせがあってPepperくんをさわる機会が増えてきました。
Pepperくんでプログラムを動作させるには、Choregrapheというビジュアルプログラミング環境を用いてアプリケーションを作成、Pepperくんにデプロイして実行する方法のほか、NAOqi for Pythonなどを用いて、コンピュータからリモートでPepperくんを制御する方法もあります。
Choregrapheを使った方法は非常に直感的でよいのですが、APIを直接呼び出すなど、試行錯誤的なフェーズでは、 インタプリタ的に関数を逐次実行できて、かつ画像などビジュアル環境で確認できるNAOqi for Python環境 があれば重宝するはず・・・ということでIPython NotebookでNAOqi for Python環境を構築してみたのでそのメモ。
必要なもの
- NAOqi for Python ... Pepper Tech Fes 2014で配布されたもの(pynaoqi-python2.7-2.0.5.3-linux64.tar.gz)
- Docker環境 ... ここではローカルに構築したVagrant + boot2docker環境を使う(boot2dockerでIPython Notebook環境構築参照)
- NAOqi for Pythonは、PepperくんのTCP 9559ポートを使って接続するので、Pepperくんにネットワーク的にたどり着けるところに環境を構築する必要あり
環境構築
NAOqi for PythonはPython 2.7で動作するので、Python 2.7.6が入っているIPython Notebookイメージ https://registry.hub.docker.com/u/unfairbanks/docker-ipython-notebook/ をベースにイメージをビルドしてみることにします。
用意するファイル
以下のファイルをDocker環境上の適当なディレクトリに準備します。
-
Dockerfile
以下の内容をDockerfile
として保存しておく。NAOqiドキュメントではPILを使った例を紹介しているので、Pillowも pip install する。DockerfileFROM unfairbanks/docker-ipython-notebook MAINTAINER yacchin1205 <http://twitter.com/yacchin1205/> RUN apt-get update RUN apt-get install -y libjpeg-dev zlib1g-dev RUN pip install Pillow RUN mkdir /pynaoqi ADD ./pynaoqi-python2.7-2.0.5.3-linux64.tar.gz /pynaoqi/ ADD ./run.sh /
-
pynaoqi-python2.7-2.0.5.3-linux64.tar.gz
Pepper Tech Fes 2014で配布されたUSBメモリ内にあるファイルをコピーしておく。 -
run.sh
PYTHONPATH
にNAOqi for Pythonを展開したディレクトリを含めるようなrun.sh
を用意しておく。run.sh#! /bin/bash export PYTHONPATH=$PYTHONPATH:/pynaoqi/pynaoqi-python2.7-2.0.5.3-linux64 ipython notebook --no-browser --ip=0.0.0.0 --port=8080 --notebook-dir=/tmp/notebook
ビルド
以下のコマンドでビルドできる。
docker@boot2docker:/vagrant/pepper/ipython-pythonsdk$ docker build -t test_dev/docker-ipython-notebook-pynaoqi .
ビルド成功すると、test_dev/docker-ipython-notebook-pynaoqi
というイメージができる。
なお、boot2docker環境でbuild中にarchive.ubuntu.comが解決できないとかエラーが出たので、 https://github.com/boot2docker/boot2docker-cli/issues/102 を参考に resolv.conf
を修正して対応。
使ってみる
コンテナの実行
作成したイメージは以下のコマンドで実行できる。
docker@boot2docker:/vagrant/pepper/ipython-pythonsdk$ docker run -d -p 8080:8080 -v /vagrant/notebook:/tmp/notebook test_dev/docker-ipython-notebook-pynaoqi
ここでは、 /vagrant/notebook
(Windowsホストの C:\test\boot2docker-vboxsf\notebook
) をコンテナ内で /tmp/notebook
ディレクトリとして見えるようにしている。
起動したIPython Notebook上で遊ぶ
実行後、 http://Docker環境:8080
にブラウザでアクセスすると IPython Notebookを開くことができる。
このIPython Notebook環境にはNAOqi for Pythonがインストールされた状態になっているので、
from naoqi import ALProxy
IP = "PepperのIPアドレス"
PORT = 9559
motion = ALProxy("ALMotion", IP, PORT)
motion.angleInterpolation(["HeadYaw", "HeadPitch"], [-0.2, -0.2], [1, 1], False)
とかやって首を動かしたり、
Notebook環境なので、こんな感じでPepperのカメラ画像の処理など、実際に得られた画像を確認しながらスクリプトを検討したりも可能。
頭のカメラで画像をとったり、デプスカメラの画像をとったり。ネタがあったら貼っていきます。