LoginSignup
0
0

More than 1 year has passed since last update.

Pepper SDK入門(33) LookAtで見えないもの以外を見つめる

Last updated at Posted at 2021-10-08

はじめに

LookAtは特定の物や人を見たり、頭部とホイールでそれをトラッキングしたりするのに用いられます。魑魅魍魎や未確認生物の類は見えないはずですが、逢魔時とか丑三つ時とかに試してみるといいかもしれません👻👽
下はLookAtアクションをPepperに実行してもらう場合のサンプルコードです↓

//LookAtのためのターゲットフレームを取得
Frame targetFrame = ...;

//アクションをビルド
LookAt lookAt = LookAtBuilder.with(qiContext)
                             .withFrame(targetFrame)
                             .build();

//非同期にアクションを実行
Future<Void> lookAtFuture = lookAt.async().run();

//実行キャンセルのリクエスト
lookAtFuture.requestCancellation();

見て見てPepper

Pepperに何かを見てもらうにはFrameを使用します。
Frameを取得し、LookAtをビルドしましょう。Frameについては前回の記事に詳しい記述がありますので、適宜振り返ってください↩️

アクションの実行中、Pepperはターゲットフレームをトラッキングします。
例えばヨカナーンの首1がターゲットフレームである場合、ヨカナーンの首が動くとPepperは自動で向きを変更します。

MovementPolicyをセットする

LookAtMovementPolicyで、Pepperの頭部のみを動かすのかホイールも動かすのかを設定しましょう。
HEAD_AND_BASEがデフォルトになっていますが、HEAD_ONLYにすることも可能です。
HEAD_ONLYだと頭部だけが特定のFrameに向きますが、HEAD_AND_BASEにするとホイールも動くのでやや懐いてくれた感が伴います🐥
MovementPolicyをHEAD_AND_BASEに設定した場合のサンプルコードは以下の通りです↓

LookAt lookAt = ...;
lookAt.setPolicy(LookAtMovementPolicy.HEAD_AND_BASE);

lookAt.async().run();

HEAD_AND_BASEなのにホイールが有効でない場合(=電源フラップが空いている時)は、例外エラーで実行は失敗します。

lock_nankinjou_kusari.png
金縛られPepper…
HEAD_ONLYにセットし直してから、もう一度LookAtを実行してください。

LookAtアクションはキャンセルするまで実行を継続するため、使用時はキャンセルのタイミングについても検討が必要です🚨
また、RobotFrameで1m先を見ると俯いてしまいます。これはRobotFrameのZ座標が地表0mのため、1m先の地面を見てしまうためです。Z座標を1.2m程度の位置に変更するか、1k先の地平線を見るように調整しましょう📏

あとがき

今回もPepperSDKforAndroidを参考に書かせていただきました。
さらに詳しい情報はLookAtのAPIリファレンスを参照してみてください!

次回はトラベルしないタイプのGoToです🌺🎫それでは!


  1. オスカー・ワイルド作の戯曲『サロメ』で、サロメが踊りの褒美に欲したもの。ヨカナーンのことが好きだったらしいです 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0