iBotNaoのインストール

初期設定が終わっているNAOにiBotNaoをインストールする手続きを記録しておこう。
(1)iBotのライブラリをロボットに転送し、/home/nao/ibot/modulesに置く。するとこうなる、

-rw------- 1 nao nao 3462978 Dec 19  2014 libwscontrol.so
-rw------- 1 nao nao 1729627 Nov  9 17:45 libwsftmod.so
-rw------- 1 nao nao 8366855 Jan 26 14:11 libwsibot.so
-rw------- 1 nao nao 3345949 Jan 26 14:12 libwssystem.so
-rw------- 1 nao nao 3589621 Jan 26 14:12 libwstelepathy.so

(2)上記のライブラリを起動時に読み込ませるために、/home/nao/naoqi/preferencesにあるautoload.iniを編集する。

# autoload.ini
#
# Use this file to list the cross-compiled modules that you wish to load.
# You must specify the full path to the module, python module or program.
[user]
#the/full/path/to/your/liblibraryname.so  # load liblibraryname.so
#<ibot>
/home/nao/ibot/modules/libwsibot.so
/home/nao/ibot/modules/libwsftmod.so
/home/nao/ibot/modules/libwscontrol.so
/home/nao/ibot/modules/libwssystem.so
/home/nao/ibot/modules/libwstelepathy.so
#</ibot>

#the/full/path/to/your/python_module.py   # load python_module.py
[program]
#the/full/path/to/your/program            # load program

<ibot>と</ibot>の間に囲まれた部分を書き加えた。

(3)ここで一旦、ロボットを再起動させる。以後も重要な点なのだが、ライブラリをいじると、ロボットが自動的に再起動する場合があり、その瞬間脱力状態になり、何もしないと転倒する可能性がある。ので、きちんと管理した状態で、ライブラリを読み込ませたほうが良い。

(4)/home/nao/ibot/wwwにibotNaoのウェッブサイト関連ファイルを転送する。index.html、javascriptファイル、cssファイルなどがこの下に置かれる。

(5)rootになって、ロボットのウェッブサイトのホームドキュメントのページから次のようにシンボリックリンクを貼る。

ln -s /home/nao/ibot/www /var/www/robotsgate/ibot

(6)この時点で、以下のようにアドレスを入れれば、スマホやPCのブラウザから、iBotNaoにアクセスできるようになる。ただし、ロボットとの間で、ネットワークが繋がっていなければならない。
http://(ロボットのipaddress)/ibot
通常のロボットのウェッブページの直下の/ibotをさせば良いのだ。

(7)これで、iBotNaoのほとんどのことができるようになる。さしあたって、ステータスのページで、ロボットを休めの態勢にしたほうが良い。NAOの場合、立っているだけで、モーターに力が入れているので、熱くなりすぎ理ことがないわけではないから。トラブルが起こった時に倒れにくくする意味でも、必要のない時は常に「休め」の態勢にする。

以下は、オプションだ。ファイル転送を別のソフト(例えば、filezillaなど)でやりたい場合に必要になる。ただし、スマホからは以下の方法でもファイル転送できない。

(8)iBotNao状で、PCやスマホから、必要なファイルを転送できるようにする。FTPでもできるのだが、iBotNaoから使えるようにしたほうが圧倒的に便利。

(9)fastcgiライブラリをロボットに転送し、rootになって/usr/local/lib以下に置く。(ライブラリは、NAOように作られたもの)そして、リンクを次のように貼る。

-rw-r--r-- 1 root root  59464 Jan 26 14:52 libfcgi++.a
-rwxr-xr-x 1 root root    854 Jan 26 14:52 libfcgi++.la
lrwxrwxrwx 1 root root     18 Jan 26 14:53 libfcgi++.so -> libfcgi++.so.0.0.0
lrwxrwxrwx 1 root root     18 Jan 26 14:53 libfcgi++.so.0 -> libfcgi++.so.0.0.0
-rwxr-xr-x 1 root root  50674 Jan 26 14:52 libfcgi++.so.0.0.0
-rw-r--r-- 1 root root 123618 Jan 26 14:52 libfcgi.a
-rwxr-xr-x 1 root root    814 Jan 26 14:52 libfcgi.la
lrwxrwxrwx 1 root root     16 Jan 26 14:54 libfcgi.so -> libfcgi.so.0.0.0
lrwxrwxrwx 1 root root     16 Jan 26 14:54 libfcgi.so.0 -> libfcgi.so.0.0.0
-rwxr-xr-x 1 root root 110400 Jan 26 14:52 libfcgi.so.0.0.0

(10)ldconfigを実行し、ライブラリをシステムに認識させる。ldconfig -vで確認できる。

(11)spawn-fcgiとibotcgi.cgiに実行可能属性をつけて/home/nao/ibot/fcgi以下に置く。

(12)rootになって起動ファイルibotcgi.startを/etc/local.d/以下に、実行可能属性をセットして置く。ibotcgi.startの中身は、

#!/bin/sh
/home/nao/ibot/fcgi/spawn-fcgi -p 8000 -n /home/nao/ibot/fcgi/ibotcgi.cgi &

となっている。ログも吐くようにできるが、していない。

(13)rootになって、/etc/nginx/nginx.confのhttpタグの最後に、

########ここから######
location ~ \.cgi {
include fastcgi_params;
fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
fastcgi_pass   127.0.0.1:8000;
}
########ここまで######

を加える。

(14)nginxを再起動する。nginx -s reload だったと思う。ロボットを再起動させても良い。これで、ファイル転送もiBotNao状で可能になる。