クラウド上でロボットを管理

次の戦略は、ロボットの対話などのコンテンツ、ロボットの管理そのものをサーバー上で行うこと。そのためには、ロボットのモジュールとしてネットワーク通信を行うものを装着しなければならない。

「C++からALRobotPostureの呼び出し」を追加

手間取ったが、なんとか「C++からALRobotPostureの呼び出し」を実行できるようになった。ここに解説
この組み込んだ新しいクラスのなかから、ALMemoryの変数に値を与え、トピックファイルの中で定義されているイベント処理命令に反応させ、ロボットに言葉を発しさせるのが次の手順である。

「C++で変数変化のイベントをとらえAPIを起動」を加えた

表題のページを、ここに置いた。
残っている課題は、外のAPIの結論を再び、QiChatのトッピックファイルの中でとらえて、ダイアログの言葉に戻ることだ。QiChatで拾う方法は、Choregrapheの場合と同じですでにやり方はわかっている。問題は、その変数を変化させる方法だ。勝手に、C++の変数を変化させてもだめなことはわかっている。大事なことは、ALMmoryの変数にしてそれを変化させることだ。これからそれを、調べてみよう。

解説「C++からALDialogを使う」を加える

「C++からALDialogを使う」をNAOの技術に関するページに加えた。こちらへ。
これで、C++からQiChatを使えるようになったはずである。したがって、当面の目標に到達するために最後に必要なのは、QiChatのなかで、変数の値を経こうしたときに、そのイベントをとらえ、他のAPIを起動させることである。そうすれば、Choregrapheでできることで、私が使わなければならないと思っているもののかなりのものを、C++から使えることになる。

C++で、会話を認識させ語らせる

Choregrapheを使わずに、C++モジュールを作成し、人の言葉を認識させ、それにもとづいて言葉をしゃべらせる。

ここでは、「話しなさい」という人の言葉に対して、「了解しました。話をしましょう。」と返事をさせるようにプログラムを改訂した(元は、exampleに入っているものを利用した)。言語設定などのおよその手続きが理解できた。
つぎは、ALDialogで、qichatのトピックファイルをロードし、会話をコントロールさせることだが、できるだろうか。

C++モジュール作成とPythonからの呼び出し

C++モジュール作成とPythonからの呼び出しについて、こちらで解説した。
これをやりながら実感としてわかったことは、naoqiで登場するremote moduleという概念の意味である。naoqiにはremoto moduleとlocal moduleという二つのモジュール類型がある。(こちらを参照
よくわからなかったが、結局、われわれが普通に感じるモジュールは、ローカルモジュールに相当する。ライブラリは、普通そのメインのプログラムが動くコンピュータの中に入っている。そういうものがローカルモジュールである。これに対してリモートモジュールとは、当該コンピュータ(ここでは、ロボット)の中にあるのではなく、外からそれとネットワークを経由してつながっているコンピュータの中にあるモジュールで、そのコンピュータで起動して、ロボットが利用することになるものである。
リモートモジュールを、こちらであるように実際動かしてみるとその意味がくっきりと分かる。

ロボットのログ

ロボット本体のログはさまざまなものから見ることができるが最も重要なのは次の方法である。sshでロボット本体のOS (基本的にLinux)にログインし、
tail -f /var/volatile/var/log/naoqi/tail-naoqi.log
とすれば、逐次にログがとれる。ログのある場所が普通とちょっと違う。
他に、Choregrapheをつないでいるときは、ログウィンドウに表示される。
ただし、Choregrapheのログは要約的で、Choregrapheのことしか拾ってこないが、上記の/var/logにあるログは徹底的に詳細である。詳細すぎると言っても良い。