以前squeak上に作成したシステムで、AIBOとの通信がうまくいきませんでした(たいていうまくいくけど、たまにおかしい。特にUnixやMacで)。そこで次なる新システムに向けて実験を兼ねた改造を行っています。
昨日行ったのは、AIBOから定期的にUDPのブロードキャストパケットを送信し、squeak側で受けるというものです。これが結構、というよりかなり、うまく行くようになりました。
以前までは、squeak側から特定のAIBOに向けたUDPパケットを、AIBO側が受け取り情報をつけて送り返すというものでした。しかし、通信相手のAIBOがいない場合に固まったり、別のTCP通信でエラーが頻発するといった不具合がありました。
そこで、AIBO側で送信したブロードキャストパケットを、squeak側のAiboWatcherなるオブジェクトが一括して受け取り、適切なAiboSessionオブジェクトに振り分けるようにしました。ただそれだけなのに、以前のように固まったりTCP通信でエラーが発生することがなくなりました。(UnixやMacでも同様)
多分私がsqueakのUDP関連のメソッドの使い方を誤っていたのでしょうが、いままでの不安定さがうそのようになくなりました。といってもたいした使い方をしていないので、UDP送信直後に受信することで、何か不具合を発生させていたのかもしれません。
これがうまくいったので、Tetoriと通信するようにしました。TetoriはAIBOを使ってAIBOのモーションを作るAIBO用のソフトなのですが、このソフトを使っている際の関節値がリアルタイムに取得できるようになりました。これで、squeak上でのモーション作成がかなり楽になるはずです。
同様にAIBOの各種センサー情報も取り込めるようになるでしょう。こうしていけば、今年の目標である、AIBOとsqueakをもっと仲良しにすることへ大きく踏み出せると思います。