ロボットのログ

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

顔の認識

一昨日、環境クイズに使ったQiChatスクリプトの挨拶部分に、顔認識を組み込むことにした。要するに、顔を名前とともに、覚えさせ、顔を見せるとその名前を呼び起こして、答えるというものである。
choregrapheboxis
図の、(1)が、挨拶に関わるDialogのボックスである。(2)は、覚えた顔をすべて忘れるという機能のボックス、(3)は、顔を覚えるための機能を持ったボックス、(4)は、顔をデータベースの中からひろって、認識するボックスである。ボックスは、常に左が入力で、右が出力なのだが、この場合、出力のすべてをDialogボックスに戻している。
以上に関わる、QiChatスクリプトは次のようなものだ。
--------------------------
concept:(hello) [こんにちわ はじめまして]
concept:(humans) [わしだ さかうえ はやし のなか ふじもと]
concept:(forgetFaces) [顔を全部忘れなさい 顔を忘れなさい]
concept:(rememberMe) [私を覚えていますか 私のことを覚えていますか 僕を覚えていますか 僕のことを覚えていますか]
# 顔を覚えているかどうかを確かめる
u:(~rememberMe) ちょっと待ってください。^activate(recognizedAnswer) $faceRecog = 1
# 記憶している顔データをすべて削除する
u:(~forgetFaces) わかりました。 $forgetAllFaces = 1
u:(~hello) ~hello 、お会いできてうれしいです。、僕の名前はわっしー、君の名前は? 名前は、なになにです、ってこたえてね。
u:(名前は _~humans です) $1 さんですね。よろしく、お願いします。$name = $1 顔を覚えますので、5秒間、私をみてください。 $learnFace = $name
# 入力のrecognizedFace変数が変化すると、eventが発生して、これを言うことになるはずだが
u:(e:recognizedFace) %recognizedAnswer $recognizedFace さんですね。ちゃんと、覚えていますよ。^deactivate(recognizedAnswer)
# 顔は認識できたが、8秒以上かけても、データベースの顔に一致しない。
u:(e:detectedNotRecog) 申し訳ありません、あなたの顔を覚えていません。
# 顔記憶に関する処理
u:(e:successToLearn) 覚えることができました。
u:(e:failToLearn) 覚えることができませんでした。
u:(e:successToDelete) すべて忘れました。
u:(e:failToDelete) 忘れることができませんでした。
---------------------------------
ポイントは、Dialogボックスの外でしゃべらせないことだ。もう一度戻して、Dialogボックスの中で、しゃべらせる。そうしないと、外でしゃべった自分の言葉を、人の言葉と錯覚して、聞き取れないときの応答としているeventを発生させてしまうからだ。
スクリプトは、ちゃんと、予想通りの動きをしているのだが、顔の認識が悪いようで、別な人物の名前を答えてしまう。はて、困った。

QiChatコンパイルエラーの原因

エラーの原因が少し分かってきた。QiChatファイルは、実行時にコンパイル(翻訳)されるが、それは、NAO本体の/home/nao/.local/share/dialogフォルダの、
BNFhomenaolocalsharePackageManagerappslastUploadedChoregrapheBehaviorbehavior_1Japanese.bnf
BNFhomenaolocalsharePackageManagerappslastUploadedChoregrapheBehaviorbehavior_1Japanese.lcf
の二つの長たらしいファイルに記録される。コンパイルしているうちに、これが消えたり、壊れたり、違うものになったりするためのようだ。さてどうするかはまだわからない・・・・。

ロボットの到着

今日の午後ロボットNAOが到着するという連絡があった。大学に出る用事はなかったが、出かけることにした。
到着したNAOは可愛い。ワッシーと言う名前を付けた。
nao2
だが、最初から次のような問題が生じた。
(1)日本語をしゃべらない。
(2)nao本体のosバージョンをアップしなければならない
(3)コレグラフのシリアル番号がわからない
早速問い合わせて、解決できそうである。

対話について

NAOは、すでに発注してあって、最新型が今月末か来月始めに納入されると予想しています。一方、これまでに、開発SDKやシミュレーターに相当慣れてきたので、一番大事な会話部分の、質問されたことに基づいて、知識を言葉にするプロセスを形にしたいと考えています。
さしあたり、質問の構文を解析するシステムをpythonで作成して、ウェッブに立ち上げています。以下のサイトを見てください。
http://robo.genv.sophia.ac.jp/qasystem/qasystem.html
適当な質問文を入力してみてください。品詞解析と、キーワードへの分解をします。(MeCabというシステムを使っています)
Pythonにしたのは、NAOがそのSDKを提供しているので、組み込みやすいためです。さしあたって、地球温暖化に関する知識データから回答させるようにしたいと、いま準備しています。