LinuxでNAO PythonSDKの環境構築


NAOを用いた開発を行いたかったため，Choregrapheを使用しての開発環境を整えていたが，やはり物足りないため，PythonSDKを用いての開発を行います．

基本的には，この[NAO Documentation](http://doc.aldebaran.com/1-14/index.html)の手順に従えばできるらしいが，ドキュメントだけではかなり詰まった箇所がいくつかあったため，自分の確認用の意味も込めてまとめておきます．

#使用した環境

Ubuntu18.04
python2.7


##必要なSDKのダウンロード

まず，必要なツール一式を揃えます．
SDKを用いての開発に必要なものは以下になります．

- Choregraphe 
NAOやPepperを動かすための基本ツール．厳密に言うと必要ではないが，仮想環境での実行等を行えると便利なためインストールしておくことをオススメします．

- PythonSDK 

- C++SDK
今回はPythonSDKでの開発だが，PythonSDKのセットアップ時に出てくるエラーの対処にC++SDKの一部を使用する可能性がある(後述)．該当のエラーが出て必要になった時にダウンロードでも大丈夫です．

以上のものは全て[ここ](https://community.ald.softbankrobotics.com/en/resources/software/language/en-gb)のResourcesからダウンロードできます．(アカウント作成の必要有り．)

また，ダウロードしたtar.gzファイルはそれぞれ解凍して，任意のフォルダにまとめておきます．
自分はhome直下にSoftwareフォルダを作成しまとめておきました．

```
$ tar -zvxf pynaoqi-python2.7-2.1.4.13-linux64.tar.gz
$ tar -zvxf naoqi-sdk-2.1.4.13-linux64.tar.gz
$ mkdir ~/Software
$ mv pynaoqi-python2.7-2.1.4.13-linux64 /home/user_name/Software
$ mv naoqi-sdk-2.1.4.13-linux64 /home/user_name/Software
```

※user_nameは適宜変更してください．

##Choregrapheのインストール

ダウンロードしてきたChoregrapheのrunファイルの実行権限を変更し，実行します．

```
cd ~/Downloads
chmod a+x choregraphe-suite-2.5.5.5-linux64-setup.run
./choregraphe-suite-2.5.5.5-linux64-setup.run
```

基本的には，手順に従えばインストールが完了します．
ライセンスキーはNAOに付属のものを入力します．持っていない場合は評価版でのインストールになります．

インストールが完了したら，終了ボタンを押すとChoregrapheが起動します．
これでインストール完了です。

- 起動しない場合
自分が使用しているUuntu18.04では，ただインストールしただけではChoregrapheが起動しなかった．(Ubuntu16.04でも同様の症状があるらしい．）
GUIをダブルクリックしても反応無しで、コマンドから起動しようとすると以下のようなエラーが出て起動できません。

```
/opt/Aldebaran Robotics/Choregraphe Suite 2.1/bin/choregraphe-bin: /opt/Aldebaran Robotics/Choregraphe Suite 2.1/bin/../lib/../lib/../lib/libz.so.1: version `ZLIB_1.2.9' not found (required by /usr/lib/x86_64-linux-gnu/libpng16.so.16)
```

どうやら，Choregraphe内に含まれているzlibを，OSのzlibへのリンクに変更すると大丈夫らしいです．

```
cd /opt/Aldebaran Robotics/Choregraphe\ Suite\ 2.1/lib/
sudo mv libz.so.1 libz.so.1.old
sudo ln -s /lib/x86_64-linux-gnu/libz.so.1
```

これで，GUIからもコマンドからも起動できるようになります．



##PythonSDKのセットアップ

事前にpythonライブラリであるqibuildをインストールしておきます．

```
$ pip install qibuild
```


次に，~/.直下にある.bashrcファイルにPathを追加します．

まず，.bashrcファイルの編集画面を開きます．ここではvimを使っていますが，他のエディタでも問題ないです．

```
$ vim ~/.bashrc
```

開いたらどこでも良いので以下を追加する．

```
# PYTHONPATH
export PYTHONPATH=${PYTHONPATH}:/home/user_name/Software/pynaoqi-python2.7-2.1.4.13-linux64
export LD_LIBRARY_PATH="/home/user_name/Software/pynaoqi-python2.7-2.1.4.13-linux64:$LD_LIBRARY_PATH"
```

編集後，

```
$ source ~/.bashrc
```

これでPathが通りました．
動作するか確認を行います．

```
python
>> import naoqi
```

エラーが出なければセットアップ完了です．


##エラーへの対処

基本的には，上記の手順通りに設定を行うとPythonSDKが使えるようになるのですが，自分のだとそれだけだとうまくいかなかったので，出て来たエラーとその対処法の紹介です．

- 1つ目

```
>>> import naoqi
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
    import qi
  File "/path/to/pynaoqi-python2.7-2.1.4.13-linux64/qi/__init__.py", line 72, in <module>
    from _qi import Application as _Application
ImportError: libqipython.so: cannot open shared object file: No such file or directory
```

import naoqiをした時に出て来たエラー．
読んでみると，libqipython.soをqi/\_\_init\_\_.pyを見つけられないというエラーのようです．
このエラーは，共有ライブラリのPathを通すと解決することができます．
~/.bashrcファイルに以下の文を追記しましょう．

```
export LD_LIBRARY_PATH="/home/user_name/Software/pynaoqi-python2.7-2.1.4.13-linux64:$LD_LIBRARY_PATH"
```

完了したら，

```
source ~/.bashrc
```

以上で解決できます．

- 2つ目
ImportError: libboost_python.1.55.0.so: cannot open shared object file: No such file or directory 

自分は，1つ目のエラーが解決した後にこのエラーが出て来ました．
これはよくわかりませんが，どうやらこの問題は、libboost-1.55.0の共有ライブラリをpynaoqi/以下に入れれば解決できるそうです．
これらはC++SDKに入っているので，C++SDKをダウンロードして展開し，以下を実行すると解決できます．

```
cp -a path/to/naoqicpp/lib/*.so*.1.55.0 /path/to/pynaoqi
```


また追加でエラー等発見し次第，適宜更新していきます．