Naoの開発環境(Python SDK編)

Naoの制御ソフトウェアは、Choregraphe、PythonおよびC++のSDKを用いて開発することができます。Nao上では、NAOqiというミドルウェアが動いていて、Naoに搭載されているカメラ、モータやマイクなどのデバイスと、PC上で動作するChoreographe、C++及びPython SDKとの間を仲介しています。Choregraphe、PythonおよびC++で書かれたソフトウェアは、PC上で動作しネットワークを介して、このNAOqiにアクセスします。
http://doc.aldebaran.com/1-14/_images/sofware-programming-overview-bis.png

Choregrapheは、ビジュアルなブロックを繋げることにより、Naoの一連の発話、音声認識、画像認識及び動作をプログラミングすることができる開発環境です。Choregrapheをインストールするために、まず、Choregrapheの最新バージョン(執筆時点では、2.1.2)をAldebaranのサイトからダウンロードできます。
choregraphe_helloworld1

今回は、Python SDKのインストールと簡単なプログラミングについて紹介します。
まず、Python NAOqi SDKの最新バージョンをAldebaranのサイトからダウンロードします。具体的には、https://community.aldebaran.com/en/resources/softwareから、Linux64bit版のセットアップ用プログラム(執筆時は、pynaoqi-python2.7-2.1.2.17-linux64.tar.gz)をダウンロードします。

次に、ダウンロードしたファイルを、例えば、ホームディレクトリの~/Softwareディレクトリにて解凍します。そして、~/.bashrcの環境変数PYTHONPATHに、解凍したフォルダのパス(~/Software/pynaoqi-python2.7-2.1.2.17-linux64)を設定します。

export PYTHONPATH=/usr/local/caffe/python/:usr/local/lib/python2.7/dist-packages/:~/Software/pynaoqi-python2.7-2.1.2.17-linux64:/$PYTHONPATH

変更した~/.bashrcをsourceコマンドを用いて読み込みます。

> source ~/.bashrc

次に、pythonをインタプリタを起動して、naoqiがインポートできるか否かを確認します。

> python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import naoqi

エラーがでなければ、これで無事インストール完了です。

次に、Python SDKを用いてNaoに「hello world」を発話させるスクリプトを実行してみます。
ホームディレクトリに、~/Works/Naoというディレクトリを作り、
以下のPythonスクリプトを、ファイルhello.pyに保存します。

from naoqi import ALProxy
tts = ALProxy("ALTextToSpeech", "nao.local", 9559)
tts.say("hello world")

本スクリプトでは、NAOqi上の発話モジュールALTextToSpeechにアクセスしています。なお、ALTextToSpeechは、日本語の場合はmicroAITalk、英語の場合は、ACAPELAまたはNuanceの音声合成エンジンを用いて、テキストを音声に変換し発話しています。

次に、Naoの胸のボタンを2秒ほど押し起動を開始します。Naoが「OGNAK GNOUK」と発話したら起動が完了です。
IMG_3886
次に、胸のボタンが緑色になるまで一回押すと、Naoが「Hello, I am Nao. My IP address is 192.168.xxx.xxx」と発話しますので、NaoがDHCPで取得したIPアドレスを確認します。もし、固定のIPアドレスを既に設定されている場合は、IPアドレスを確認する必要はありません。そして、次のようにpingを用いて、PCからNaoに無線LAN経由で接続出来ていることを確認します。以下はNaoのIPアドレスが192.168.11.8に設定されている場合です。

ping 192.168.11.8
PING 192.168.11.8 (192.168.11.8) 56(84) bytes of data.
64 bytes from 192.168.11.8: icmp_seq=1 ttl=64 time=7.57 ms
64 bytes from 192.168.11.8: icmp_seq=2 ttl=64 time=4.27 ms

もし上記のようにNaoにpingが通らない場合は、Naoが無線LANに接続できていない可能性があります。以下のAldebaranのサイトの無線LANへの接続手順を参考にして接続してください。
https://community.aldebaran-robotics.com/resources/tutorial/nao-first-steps/

そして、PC上で先ほど作成したpythonスクリプトhello.pyを実行し、Naoが「hello world」と発話することを確認します。

> python hello.py

次に、Python SDKを使ってNaoで撮影した画像をPC側に転送し保存するスクリプトを実行します。AldebaranのサイトからPythonスクリプトvision_getandsaveimage.pyをダウンロードします。
http://doc.aldebaran.com/1-14/_downloads/videoInput_getImage.py

vision_getandsaveimage.pyは、リモートのNAOqi上のビデオモジュールALVideoDeviceにアクセスし写真を撮影し、PC上のcamImage.pngファイルに保存します。vision_getandsaveimage.pyを実行します。

$ python vision_getsaveimage.py
acquisition delay 6.41382002831

camImage.pngというファイルに、Naoで撮影した画像が保存されています。

最後に、Naoの胸のボタンを、Naoが「Nuk Nuk」と発話するまで押して離し、Naoの電源を落とします。

このように、Python SDKを用いると簡単なスクリプトでNaoに発話や動作をさせることができます。

filed under: Nao