BasicAwareness やオートノマスライフで子供を見つけやすくするちょっとしたトリック
BasicAwareness を使っているときや、オートノマスライフが起動している時、気づけばロボットが上の方を向いていて子供とかが視界に入ってくれないということがよくあります。
これは音や画像の変化を検出した時、そちらの方向を向くと同時に人物の顔を検出しやすいように頭をおおよそ成人の人と目線を合うぐらいの高さまで見上げるという動作をしているということによるもののようです。
例えば来客が子供が中心の時など、この見上げる動作はかえって不都合だったりします。このような状況において取れるトリックの一つはロボットを「ちょっと高いところにいる」と思わせるということです。
ALAutonomousLifeProxy.setRobotOffsetFromFloor() がこの目的で使えます。
例えばこんなスクリプトを持つPython ボックスを作成します。
class MyClass(GeneratedClass): def __init__(self): GeneratedClass.__init__(self) def onLoad(self): self.al = ALProxy("ALAutonomousLife") def onUnload(self): pass def onInput_onStart(self): self.al.setRobotOffsetFromFloor(0.8) self.onStopped() def onInput_onStop(self): self.onUnload() self.onStopped()
このボックスを呼び出して以降、オートノマスライフや BasicAwareness は動きや音を検出したときそっちの方向を向いた後少し下の方を向くようになるかと思います。0.8 のところをいろいろ変え、環境に応じて最適値を見つければいいのではと思います。
将来的には BasicAwareness の機能自体が上下全体を見渡すような動作をすべきではとは思います。それまでの暫定策ということで。