顔の向き変更動作の不具合
2017年4月11日
4月19日改訂


 ロビのメインプログラムですが動画撮影する時にロビの顔の向きが不安定で正面をあまり向いてくれません。  最初は人感センサーの検出が不安定でこんなもんかと思っていましたがロビモーションシミュレーターで人感センサーに対応した時にメインプログラムの不具合に気が付きました。
 シミュレーターの動画を使って不具合の内容を説明します。
 なお顔の向きを変更する動作はアイドリング状態で行っているためシミュレーターのパラメーターのボイスプレイヤー連携をチェックしておく必要があります。

   

 右目の人感センサーが感知すると左目の感知の有無に関わらずロビが右を向いてしまいます。
 なおシミュレーターではこの現象が顕著に表れますが実際のロビでは両目が感知できる範囲にいても右目の人感センサーの感知が途中でなくなる事があるので正面を向くことがあります。

 なぜこうなるかをフローチャートで説明します。



 ロビのメインプログラムのアイドリングの時にこの処理は行われます。
 アイドリングとはロビが音声認識や電圧やタイムアウトの監視などを行っている時で目が点滅している状態です。

 右目検出からチェックしているため左目の検出の有無に関わらず右に向いてしまいます。
 両目検出の時は赤で示したパスになってしまうため右目の検出がある限りロビは右を向いたままになります。

 修正版のフローチャートを示します。



 右目を検出した時に左目の検出をチェックして検出された場合は正面を向かせるようにします。
 なおこのフローでロビの向きを変えていますが向きを表すステータスを変更するだけで実際にロビの向きを変更するのは別の所でやっています。



 実際にロビでテストした動画です。

   

 メインプログラムの修正版は以下のリンクからダウンロードする事ができます。

 sensor_fix.zip(4月19日改訂版)

 本修正は初販版/再販版/第三版のメインプログラムおよびリモート接続用メインプログラムでロビクルやロビのココロ2のメインプログラムには対応していません。
 また人感センサーが正確に動作しないため本修正を適用しても正確にロビの向きを制御できる訳ではありません。

 今回作った人感センターのテストプログラムは以下のリンクからダウンロードする事ができます。

 sensor_test.zip

 単に人感センサーの検知をロビの目のLEDで表しているだけで音声認識やリモート接続での終了は行っていません。  ロビの電源を切って終了してください。

 なおロビのプログラム変更やSDカードの書き換えは、ロビ本体への影響を及ぼす可能性があるのであくまでも自己責任という事でお願いします。



 両目で感知した時に正面を向かせていましたが、左右を向いている時に両目が感知するという事は顔が向いている方向に人がいるという事で現在の向きは変更する必要はないという事になります。
 両目で感知した時は何もしないで終了するよいにしました。



目次に戻る