ロボットにapache2を入れようと

naoには、nginxというウェッブサーバーが入っている。それはそれでいい。しかし、c++で作った実行ファイルをcgiにしたいのだが、nginxにはcgiを直接動かす機能がないので、fastcgiなどを追加しなきゃいけないらしい。それもまた入っているようなのだが、pythonしか動かないような設定になっているように見える。nginxやfastcgiに不慣れなので、不確かなのだが。
これ以上、いじると、元のロボットページなどに影響が出るかもしれないので、別にウェッブサーバーを動かそうと思う。ポートを、80じゃなくて、8080あたりにしておけば、nginxとバッティングしないだろう。
apache2は長年使い慣れている。ちょっと重たいが、まあ、それほどディスクを食うわけではない。
ただ、前にも書いたように、ロボットには、g++などの開発ツールは入っていないので、opennaoというvirtual-naoを使う必要がある。ここで開発すれば、まあ、naoに持ち込めると踏んでいる。そこで、opennaoでapache2をコンパイルするところまではやった。
あとは、ロボットに持ち込んで、動かすだけだが、今日はこれ以上それをやっている余裕はないので、やめておく。明日は時間が取れると思う。

iBotをロボットに埋め込む

naoには、ウェッブサーバーが常に稼働しているので、そのサーバーの元でibotを動かし、PCやスマホからそのibotにアクセスすればロボットをこれまでのようにコントロールできるようにする。
そうすればサーバーとしてのPCも不要になり、システム操作が単純化する。PCからもアクセスできるが、基本、スマホからのアクセスを前提とすれば良い。そのためにiBotを最初から作り直そうと思っている。

ibotサイトを作り直す

ibotの無駄なところを削げ落とし、mobileにも対応したものにしたい。今のシステムを変えようとしたがうまくいかない。最初から作り直したほうがいい。時間かかるが仕方がない。

jsからモジュールへの数字引数の引き渡し

いやびっくりした。
だいたい、javascriptは変数の型についていい加減でいいからと、
ibotから音量設定値をロボットのibotモジュール関数に引数として渡すようにしたら、変数変換に失敗したとエラーが出て困った。結局、javascript側から送り出す時に数値であるparseInt関数で変換した値を渡さなければならなかった。今までほとんど気にせずにやってこれたのが、たまたまだったらしい。動きの値などは、フロート数で与えていたので、実質的にparseFloatで変換していた。こらから気をつけよう。
前から気になっていた、音量設定をウェッブから、従ってスマホでもPCからでも、ibotサイトから変更と確認ができるようになった。

ibotシステムをMacでローカルに動かす

ibotシステムは、ローカルサーバーで運用することを基本にするように変更された。そこで、Macでibotを動かすための基本的な手順を記録しておこう。(インターネット上で簡単に取れる情報は※印にして記載しない)
(1)※Macのapache2のwebサーバーを起動するようにする。phpも動かす※
(2)※apache2でphpのMysqliが使えるようにしなければならないが、php.iniを変更する必要がある。
(3)※mysqlのユーザーIDとパスワードが記載されたファイルをwebでアクセスできない場所に置く。この場所は、ns_mysql.phpに記載されているものにしなければならない。セキュリティは弱いが、もともとローカルでしか動かさないので、問題はない。
(4)ibotシステムを展開してapache2のドキュメントフォルダーにする。※基本的に/Library/WebServer/Documents がルートフォルダーにする。
(5)※Macで/homeディレクトリを有効にする。 /home/ibot/user, /home/ibot/com,/home/ibot/confを作成する。
(6)/home/ibotを作成し、基本、apache2を動かしているユーザー:グループからのrwxを可能にする。_www:_wwwだったと思う。
ただ、ユーザー管理に使っているmysqlデーターベースが本当に必要かどうか迷っている。ローカルネットワークの誰でも使えるようにしてもいい。ユーザーのトピックファイルなどのデータは、すべてウェッブクライアントのlocalStorageに保存しておけば良い。そうすれば、Macのapache2だけ立ち上げれば、誰でも簡単にibotを使えるようになる。
もっと、ibotを普及させることができるようになるだろう。

ロボットを舞台に立たせてみた

先日、松竹芸能の関東ゲラゲラBRONZEライブの出場をかけたネタ見せがあり、ロボットネタをやってみた。
この間、ロボットのコマンドモードを充実させて、コマンドをプログラム化したファイルを与えれば、こちらが対話的に指示を出すとそのプログラムを起動するようにしている。通常の対話とこのプログラムモードを駆使して、ネタ尺2分間で、ロボットとの面白さを表現するネタを作った。
会場の外で、ロボットのibotシステムを起動し、topicファイルを組み込み、休みモードにする。休みモードにすると、座って、音を出さないようにしているので、例の警報音が出ても他に迷惑をかけないようにする。
自分の番の時、初めて舞台の登場させ、立たせ、袖で「ここにいるんだよ」というと、ネタが開始するという段取り。基本、いうことを機会ないロボットに翻弄される教授という設定で、笑いを取る。動きと会話のやり取りが基本だ。途中から、しょうがないからということで、隣に立たせて漫才風になる。
なんと、ほぼ4倍の競争のところを、ネタ見せ合格になりました!!来月12月6日の関東ゲラゲラBRONZEに出場します。
http://www.kadoza.jp/shinjuku/schedule/2016/12/06.php
その後、NAOのサウンドファイル演奏機能をコマンド的に呼び出されるようにライブラリ(libwsibot.so)を改訂して、リズムネタを挟めるようにしました!!これで、必ず笑いを取れる、鉄板ネタができるはずです。
実に、高度なプログラミングだと、自分を褒めています。

バックアップモバイルサーバー

基本、MacBookのVirtualBox上のUbunts 14.04(32bit:Macは64ビットだが、ロボットのモジュールは32ビットでコンパイルしなければならないので)にロボット関係の必要な要素を全てぶち込んであるのだが、昨日、コネクタが怪しいことがわかった。新しいMacBookなのでコネクターが1個しかなく、そこに特別なプラグを差して電源やUSBさらにはビデオコネクタが出るという仕組みになっているが、その本体の1個のコネクタが怪しいのだ。
本来の予定ではロボットを含むローカルネットワークのルータをそのUSBから電源をとって動かしていたが、突然切れる場合があるので、ルーターはUSBモバイル電源から直接とることにした。インターネットには繋がっていなくてもいい。
しかしこうなると、電源が充電できなくなるかもしれない。そうすると、ロボットを動かす手段が、前のスマホからになり、面倒だ。そこで、一つ前のMacBookも持っているので、これに完全バックアップをすることにした。Ubuntu32ビットを入れて、その上にウェッブサーバー、ftpサーバーやらMysql、php5、naoqiやら何やら、全部放り込んで、ほぼ同じことができるようになった。これで少し安心だ。
一昨日買った、USBのルーターはなかなか優秀だ。
img_0480
当面の課題をやったら、今のMacBookを一週間ほど修理に出したい。

ibotコマンドモードを強化

基本、今までのものをいじらずに行こうと思っているのだが、現行バージョンも使えるようにしながら、WSIbotモジュール(ibotの基本モジュール)を少し改版した。
ibotシステムの基本コンセプトは、ロボットをどのように動かすかも含めて全てがロボットとの会話で行われるという、ロボットとしてすごく当たり前のことをしようというのである。最低dialogのトピックファイルは使うことにしている。
一連のコマンドを会話的に与えて、それを保存し、必要な編集もする、それもまた会話的に。
ただ、ある定型的な動きと会話をさせるときには、トピックファイルに書く以外に、部分的な動きと会話をコマンドの列で与えられた方がいいので、それを書きやすくした。
もっともっとこの方向で強化し、人がロボットを手に入れたら、ただ会話しながら、ロボットを自由にコントロールできるようにしたい。

ファイル転送ライブラリの書き換え

以前作ったシステムで、変更は最小限にしたいのだが、サーバーのローカル化をすると、サーバーがグローバルIPを持たないし、ルーターも変えるとIPが変わってしまうので、どうしてもファイル転送モジュールを変更しなければならなかった。
モジュールは、C++で書いているので、頭をC++モードに切り替え、プログラムを変更し、qibuild周りのことを思い出し、リーモートライブラリとしてnaoqiのシミュレータに組み込んだり、それをpython のnaoqiのSDKで組み込んだり、色々やってみた。このサイトに書いた過去の記事が、めちゃめちゃ役に立つ。
久しぶりに、アルデバランの開発者サイトに入って今の状況を見てみたが、ライブラリ周りは変わっていないような感じだ。こちらは、古いものをそのまま使っているので、関係ないのだが、落ち着いたら、最新版(があるなら)にしようと思う。
もうここまできたら、ライブラリは、ロボットに組み込むしかないので、大学に行こうと思う。ただ、今日は、芸人として中野でお笑いのライブに出演(ロボットは使わない)するので、ネタの準備をしてから出かけよう。
午後に業者の方が来て、壊れた一つのロボットのバッテリーを無料で貸していただけるということなので、そちらも楽しみにしている。