Pepper やNaoで使用されているNaoqi OSのメモです。

NAOqi Interaction engines - 概要 | API | 入門


What it does

ALBasicAwarenessはロボットに人との接続を確立して維持させる簡単な方法です。

ALBasicAwarenessALAutonomousLifeが孤立しているか対話状態にあるときにデフォルトで有効になる自立型能力です。
詳細については : Autonomous Abilities.

How it works


ALBasicAwarenessモジュールは周囲を認識して環境からくるSitmulationを反応できるようになります。

ロボットは刺激を探すことはありません。しかし、(関連したポジションを持つ)1つを取得すると刺激の元を見てそこから人間を調べ、刺激を処理します。
  • もし真なら、人間を追跡します,
  • それ以外なら、その前の仕事に戻ります。



他の状態から一つの状態への遷移は次のイベントです。
  • ALBasicAwareness/StimulusDetected()
  • ALBasicAwareness/HumanTracked()
  • ALBasicAwareness/HumanLost()

Processing stimulus - In depth

いくつかのタイプの刺激を使用して人の存在を検出することができます。

これらのタイプの刺激は個別に有効または無効にすることができます。
詳細について : Types of stimulus.

いくつかの刺激には、同時に活性化される時、どちらが優先するかを決定する優先順位がある。



タイプの刺激が処理に影響を与えることを示します。

Combining Tracking and Waiting

デフォルトでは2つの状態が組み合わされます。ロボットは人間を追跡し、同時に新しい刺激を待つことがあります。
1つの刺激が発生すると、追跡を中断しこのあたらいい刺激を処理する。

詳細について : Engagement Modes.

Settings

Types of stimulus

ALBasicAwarenessProxy::setStimulusDetectionEnabledでは、次の刺激を有効、または無効にすることができます。
Stimulus type ...Is triggered by ...Is based on ...Priority
“People“人間がカメラによって検出されたALPeoplePerception1
“Touch“頭、腕、バンパーのいずれかが触られたALTouch2
“TabletTouch“タブレットがタッチされたALTabletService3
“Sound“音が知覚されたALSoundLocalization4
“Movement“動きが知覚されたALMovementDetection5
“NavigationMotion“ロボットベースの前の動きNavigation/MotionDetected()6

ALBasicAwarenessProxy::triggerStimulusを使用して刺激を手動でトリガーすることができます。

Tracking Modes

ALBasicAwarenessProxy::setTrackingModeは次のオプションを提供します :
ModeThe tracking uses ...
“Head“
“BodyRotation“頭と体を回転させて
“WholeBody“全身を使うが体は回転しない
“MoveContextually“頭部の動きを追跡し、自発的に小さな動き、例えば歩行者への接近、後退、回転などを行う

Engagement Modes

より広い範囲の動作を可能にするためにALBasicAwarenessProxy::setEngagementModeは3つのエンゲージメントモードの中から選択できます。ロボットがどのように"focused"しているかを指定できます。
“Unengaged“
(Default mode)
ロボットが使用者とかみ合っている時、彼は任意の刺激によって注意を逸らし、他の人と接することができる
“FullyEngaged“ロボットが人と接するとすぐに刺激の聞き取りをやめ同じ人と接し続ける. 接した人が離れた場合、刺激をもう一度聞き取り別の人とエンゲージすることができる
“SemiEngaged“ロボットが人と接している時、刺激を聴き続け、刺激を受けるとその方向を見るがすぐにエンゲージしていた人のところへ戻る.その人がいなくなると、再び刺激を聞いて他の人とエンゲージする

Pausing and Resuming

ALBasicAwarenessは一時停止することができます。つまり、再開されるまで動きを停止することができます。

再開するとALBasicAwarenessが一時停止する前に誰かを追跡した場合、最後に追跡した人物を取得してから追跡しようとします。

これらは一時停止をトリガーできます:

Automatically
アクティビティでヘッドモーターを何らかの方法で使用する場合(アニメーションを起動するときや、ALMotionProxy :: angleInterpolationWithSpeedなどのヘッドジョイントを移動する関数を実行するときなど)。 ALBasicAwarenessは、優先度が低いとみなされ、一時停止されます。ヘッドモーターが解放されると、自動的に再開されます。

Manually
アクティビティがALBasicAwarenessProxy :: pauseAwarenessとALBasicAwarenessProxy :: resumeAwarenessを使用する場合、アプリケーションがロボットの頭を固定する必要がある場合(写真を撮るときなど)、手動で一時停止することはALBasicAwarenessを一時停止するよりも興味深い.
📝メモ
もしALBasicAwarenessが一時停止中に無効位になっている場合、一時停止モードは自動的に終了します.

Performances and Limitations

ALBasicAwarenessは "メタモジュール"です。他のモジュールを使用して余分な機能を追加します。そのモジュールのリストは次の通りです :

=====

  • checking that the stimulus actually comes from a human is done with ALPeoplePerception,
  • sound detection is done with ALSoundLocalization,
  • movement detection is done with ALMovementDetection,
  • people detection is done with ALPeoplePerception,
  • touch detection is done with ALTouch,
  • head movements uses ALTracker.
Thus, parallel calls to these modules from another program or Choregraphe box when ALBasicAwareness is running should be done carefully.

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu

NAOqi - Developer guide

Creating an application?

Programming for a living robot?

Other tutorials?

Choregraphe Suite?

どなたでも編集できます