サブサンプション・エンジンを作る(その4)
花岡ちゃんのウィークエンド:サブサンプション・エンジン
今回はバンダイ流サブサンプション・エンジンのもう一つの特徴を見ていきましょう。それは「パネル」という概念です。
これまでの説明でお分かりと思いますが、単純なサブサンプション的実装では、ある一つの仕事をさせることしか出来ません。「障害物を避けながら移動する」「目の前の物体を押す」という二つのビヘィビアを持たせたい場合は、何らかの方法で、文字通りアタマを「切り替え」る必要があります。
バンダイではコレを「パネル」を使って実装しています。まず、空の「パネル」を作り、それにビヘィビアをプログラムします。最後に、そのパネルからの出口を「どのセンサが反応したら、どのパネルにジャンプするか」を表す「パネルジャンプ命令」で定義します。こんな感じです。
BN-1には拍手に反応するサウンドセンサがあるので、これは障害物を回避しながら移動するビヘィビアと、近くの物体を押すビヘィビアを、拍手で切り替えています。もちろん、一つのパネルに複数のパネルジャンプを用意して、反応したセンサごとに違うパネルに切り替えることもできます。
バンダイのサブサンプション・エンジンでは、このパネルを多数用意することで、ペットプログラムを実装していると考えられます。この方式のよい点は、構造が単純でプログラムしやすいことだと思います。実際、ペットプログラムのように「なでられると機嫌が良くなる」といった状態遷移を記述するのは、とても簡単です。一方、単純であるが故に、同じようなビヘィビアを様々な状態ごとに用意しなければならないという欠点もあります。例えば、機嫌の良いときに移動するビヘィビアと、機嫌が悪いときに移動するビヘィビアは、「移動する」部分はほとんど同じで、歩き方とか目玉のグラフィックが違うだけ、というものになりがちです。
バンダイでもこの不都合には気づいていたようで、「パネル参照」という概念で、既存のパネルの内容を取り込み、さらに優先度の高い反射を追加することが出来るようになっています。例えば「壁沿いに歩く」というパネルを作っておき、そのようなビヘィビアが必要な際は、それを実行時に「参照」することで、同じようなパネルを作る無駄を省けるようになっています。しかし、複数のパネルを参照すること、つまり、複数の既存のビヘィビアを集めて新しいビヘィビアを作ることはできません。
ここまでで、サブサンプション・アーキテクチャとバンダイ流サブサンプション・エンジンの下調べはおしまいです。次回からは、これを元に花岡ちゃん流のサブサンプション・エンジンをデザインしたいと思います。
« サブサンプション・エンジンを作る(その3) | トップページ | サブサンプション・エンジンを作る(その5) »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサVL53L0Xを複数使うには(2022.05.01)
- 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(おしまい)(2022.04.14)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その3)(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その2)(2022.04.12)
コメント