昨日うまく行かなかった二つの問題が一部解決した。
(1)外側で起動されたAPIからのイベントメッセージをDIALOGの中で受け取ることで、これは、
AL::ALProxy memory(broker,"ALMemory");
memory.callVoid("declareEvent","didSitdown");
memory.callVoid("declareEvent","didStandup");
if(poseType == "Sit"){
memory.callVoid("raiseEvent","didSitdown",1);
}else if(poseType == "Stand"){
memory.callVoid("raiseEvent","didStandup",1);
}
この様にイベントをコールすればよい。すなわち、declareEventしてから、raseEventをやるのである。
(2)二つの目問題は、「座れ」に対してすわるのだが、甚だしくぎこちない、座ろうとして止めたりまたやったり、ビクッとしたり、見ていられない。なかなか原因が分からなかったが、色々やった末に、brokerが原因かもしれないと思うようになった。動きの調整がとれていないのだ。そこで、あらたにポーズをとるための専用brokerを作成して、使ってみることにした。brokerの作成のためには、IPとport番号が必要なのだが、それは、親のbrokerからとってくることにした。brokerは次のように作る。
broker = AL::ALBroker::createBroker(
"poseBroker", "0.0.0.0", 54000,
pbroker->getIP(), // 親brokerからのIPをセットする
pbroker->getPort(), // 親brokerのPortをセットする
0 // デフォールト
);
という感じだ。
これで、改善した気もするが、確信はないがいつまでも関わっていられない。Aldebaranのフォーラムに、問題を投稿して、当面保留か。
どなたかわかる方がいたら教えていただきたい。