行動制御理論
いくつかの確実なパターンがあることがわかりました。
オウムを見ると、「ミズシマ、イッショニニッポンヘカエロー」と決してミズシマではないオウムに語りかけ、ドロップのカンカンを見ると、「おひとつどうぞ」と節子になって、私にくれようとし、皮手袋をはめたとたん、口で手袋をはずしながら「あなたのせいよ」と手の甲を恨めしげに見せます。その後は決まって「はめてちょうだい」。
ある特定の刺激に対して、いつも同じ反応を返す、妻のこのような不可解な言動は、行動制御理論に基づいてプログラムされたものだと考えると、なるほど納得がいきます。
新しく発足した、LegoのMindstormsを使ったロボットサークルは、目標をETロボコンに置きながらも、今年はエントリーに間に合わなかったため、現在は各メンバーが好きなものを色々組み立てて、調査している段階です。
私は、Mindstormsをはじめとする制限された環境に特化したJavaにあたる、LejosのAPIについて調査しています。
Lejosには、行動制御APIという、ロボットの行動制御理論に則ったフレームワークに近いAPIが用意されていることがわかりました。
行動制御理論とは、昆虫の行動から着想を得たアーキテクチャのパターンの一種で、
記憶を持たずに、センサーで受け取った刺激をトリガーとしてモードを切り替え、シンプルな行動をいくつも組み合わせることで複雑な行動を達成するとのこと。
この行動制御理論を実践したAPIは、調停クラスであるArbitratorオブジェクトに、Behaviorインターフェイスを実装した行動クラスの配列を渡すことで、優先順位の高いものから各行動を起動、調停してくれるものです。
Behaviorインターフェイスには、action(),supress(),takeControl()の3つのメソッドがあり、それぞれ行動、停止、開始を表しています。これらのインターフェイスを実装したオブジェクトを配列に入れてArbitatorに渡すと、配列の前の要素を優先しながら順に実行してくれます。
なるほど、確かに単純ですが、組み合わせにより実に色々なことができそうです。
このようなシンプルでかつ効果の高いアーキテクチャは、是非自分がシステムを設計する際にも取り入れて生きたいものです。