-
追記
ワールドレプゼンテーションのところは間違いあるので注意。あとでなおす。 -
追記 2014.11.17
-
stackoverflowみてたら顔認識まわりの座標についての良さげなリンク発見
-
http://abitworld.com/nao-robot-visual-debugging-of-the-vision-variables/
-
座標変換でなかなか苦労しっぱなしなのでメモ
-
内容は随時更新していこうかなというメモ
-
ひとまず重要なリンクを…
-
http://doc.aldebaran.com/2-1/naoqi/motion/control-cartesian-tuto.html#control-cartesian-tuto
-
↑デカルト座標という意味らしい cartesian のチュートリアル。直交座標とも訳されるらしい
-
http://doc.aldebaran.com/2-1/naoqi/motion/control-cartesian.html#motion-effectors-space オヘソ座標系(※意訳)などが書かれた箇所。オヘソ相対が便利らしい。(※TORSOっていうよりオヘソがしっくりくるので勝手に意訳してるので気をつけてください)
座標変換しないとならない場面メモ
-
顔認識した結果を自分で取り扱いたい場合
- 結果はカメラからの角度が格納されている
- トラッキング系はほぼ同じように角度になってる
- 角度を位置に変えるような素直なAPIは用意されていない
- LookAtみたいな便利な奴は位置しか受け付けてくれないっぽい
-
ワールドレプレゼンテーションのオブジェクトを扱うとき
-
ワールドレプレゼンテーションオブジェクトは識別した物体のデーターベースみたいなもの(実際にSQLで管理と操作されてる)
-
これを通して例えば顔の位置とかを共有データとして登録しておけば、他のブロックとかから扱える。(という使い方かなと自分は理解してる)
-
ランドマークマーカーとかを識別、登録、管理するブロックを作ったりすれば放り込むだけでそこに顔を向けたり歩いたりできて便利そう
-
でも… このAPIが返すのはWORLD空間の座標のみ(登録するときは、オヘソ相対座標使えるのに!)
-
というわけで座標変換しないと結構扱いにくい
座標変換のコード
-
ここに追記していくつもり…
-
なかなかALMathとかが低レベルでまだ素直にすっきりする方法を模索中なので書けない…
-
カメラからの座標変換サンプル
-
http://doc.aldebaran.com/2-1/dev/python/examples/vision/landmark.html?highlight=cameratop
-
↑の↓ここらへんがキモ
-
# Compute the rotation to point towards the landmark. cameraToLandmarkRotationTransform = almath.Transform_from3DRotation(0, wyCamera, wzCamera)