ヤマビルの行動を理解するために、ヤマビル・モデルなるものを考える
タイトル画像は、「新緑の山のイメージ」(再び)です。
ハードウエア概要
さて、いきなりだが、ヤマビル・モデルを考えてみたい。
マイコンに以下のセンサーを装備する
二酸化炭素センサー
熱センサー
湿度センサー
光センサー
振動センサー*
振動には反応しなかったという証言もある。しかし実験は眉唾なものなので、ここでは振動センサーを搭載する。
センサーは、ある回転半径を持って円周上を移動するメカに取り付ける。ヤマビルが首?を持ち上げて先端をぐるぐる回す動作を模倣する。
移動のメカニズムまでは考えない。
臭いにも反応するという説もあるが、具体的になんの臭い成分に反応するかを見ていないので、真偽のほどがわからない。よって、ここでは考えない。
ソフトウエア概要
各センサーの値を総合的に評価して、ヤマビルの行動が決まるものとする。どのように評価するかは、データが無いので、なんらかの関数の出力を評価するものとする。
外部センサー以外にも、吸血したいというモチベーションも考える必要があるだろう。
例えば、大雑把なロジックを次のように考える。
もしも
センサーの評価結果 > 吸血したい気持ち
ならば前進。
もしも
センサーの評価結果 < 吸血したい気持ち
ならば停止。
センサーの値はメモリーされる。しかしメモリーにはリークがある。蓄えたデータは時間とともに目減りしていくものとする。これは、刺激を受けた後、時間とともに刺激が弱くなっていくことをモデル化しようとするものである。
動作の概要
さて、センサーがターゲットを検出したとする。
まず、センサーの評価値をメモリーに蓄えておく。
センサーをぐるぐる回転してセンサーの評価値が最大になる方向を探す。
センサーの評価値が最大の方向で、閾値を超える場合には、その方向に前進する。
逆に、閾値を超えない場合は、そこにとどまる。
もしも、一旦評価値が閾値を超えた後に減少することがあったら、方向が違う可能性があるので、そこで停止。先っぽをぐるぐる回して値が最大になる方角を見つける。
評価値が閾値を超えている間、値が最大になる方角に進む。
若干、構想に不備があると感じるが、とりあえずこんな感じかな
センサーの評価値が、メモリーに蓄えた値を上回ったら、新しい値をメモリーに蓄える。
ターゲットに張り付いたら吸血、終わったら離脱。
ここで、ターゲットを見失ってしまうケースについて考える。
センサーの評価値が低下する。先っぽをぐるぐる回しても、さらに低下する一方だ。
しかし、まだ先ほどのターゲットが残したセンサーの評価値があるので、すぐには諦めない。
そして、さらにメモリーに蓄えた値が低下。最終的に、ターゲットが戻ることもなく、偶然新しいターゲットが近くを通ることもなく、メモリーの値が閾値を下回ってしまう。
ここでも閾値というのは、吸血モチベーションに相当するもので、センサーの評価値がこれを上回ったらターゲット探索および前進を行う。
今のように下回ったら、ターゲットへの執着をなくす。
ターゲットへの執着をなくしてしまったヤマビルは、退避行動に移る。
もしも
乾燥や強い光を検知
ならば退避。
センサーの評価値を元に、安心安全な方角へ移動していく。
例えば、湿った落ち葉の下に潜り込む。安心安全レベルが十分な値になったら、停止。
センサーの評価値が変化するのを待つ。
ターゲットが近づいて、センサーの評価値が上昇したら、再び行動を開始する。
以上のとおり、ヤマビル・モデルを考えた。
ヤマビルは何も考えていない
ヤマビルがターゲットを目指して前進しているとき、時々立ち止まって進む方向を確認するのだが、その首を伸ばした姿は、遠くを見ようとする人間の仕草に似ていると思う。さらに、伸ばした首の先をぐるぐると回すときは、まるで、どちらに進もうかと悩んでいるようである。
しかし、彼らは何も考えていない。自分は、そう考えたい。
なぜか。
それは、人間になぞらえて考えることが彼らの行動を正しく理解することを邪魔するだろうからだ。
彼らは何も考えていないのだ。刺激に対して反射しているだけと考える。
そう考えると、なぜそのような行動をするのかが説明できるような気がするのだ。
t.koba
この記事が気に入ったらサポートをしてみませんか?