Skelton2JointAngle
Simple Wiki Based Contents Management System
ソフトウェア関連 >> RTMコンテスト >> Skelton2JointAngle

Kinectセンサ出力データ変換RTC

概要

Skeleton2JointAmgleコンポーネントは、KinectRTCからの骨格モデルのデータから各関節の角度情報へ変換するデータ変換用RTコンポーネントです。このコンポーネントからの出力データは、CoreonoidやG-Robot制御用のRobotMotionコンポーネントへ入力することでロボットを操作することができます。

動作環境

ライセンス

このコンポーネントは、EPL-1.0ライセンスで配布いたします。

データポート

入力データポート

skeleteon入力データポートは、TimedFloatSeq型のデータを受信します。ここに入力されるデータは、KinectRTCのskeleton出力データポートから出力されるデータを前提としています。
このコンポーネントは、skeleteonデータポートから受信したデータをもとに各関節の角度を計算して、joint_angleから結果を出力します。
command入力データポートには、startまたはstopのコマンド文字列を入力することで、データ変換機能のOn/Offを切り替えることができます。コンポーネントの内部では、startという文字列を受け取れば、コンフィグレーションパラメータのmodeの値を1にし、、stopという文字列を受け取れば、0にしています。

出力データポート

joint_angle出力データポートから出力されるデータは RobotMotionコンポーネントの targetAngle 入力ポートへの入力に対応し、各関節への目標角度+SPINEのY軸方向(高さ方向)の位置データとなっているためデータ長は20+1となっています。出力される角度の単位はラジアンです。
また、各関節の位置のインデックスは、
enum SkeletonPos {
  NUI__HIP_CENTER=0,
  NUI__SPINE,
  NUI__SHOULDER_CENTER,
  NUI__HEAD,
  NUI__SHOULDER_LEFT,
  NUI__ELBOW_LEFT,
  NUI__WRIST_LEFT,
  NUI__HAND_LEFT,
  NUI__SHOULDER_RIGHT,
  NUI__ELBOW_RIGHT,
  NUI__WRIST_RIGHT,
  NUI__HAND_RIGHT,
  NUI__HIP_LEFT,
  NUI__KNEE_LEFT,
  NUI__ANKLE_LEFT,
  NUI__FOOT_LEFT,
  NUI__HIP_RIGHT,
  NUI__KNEE_RIGHT,
  NUI__ANKLE_RIGHT,
  NUI__FOOT_RIGHT
};
と定義されています。このインデックスは、skeleteonの入力データのインデックスと同じです。

コンフィグレーションパラメータ

このコンポーネントには、modeというコンフィグレーションパラメータがあります。このパラメータは、関節角の計算を実行するかどうかを設定するためのパラメータです。mode=1のときに、skeleteon入力データポートから入力された骨格情報から各関節の関節角への変換を行っています。

使い方

このコンポーネントは、KinectRTCと同時に使用します。KinectRTCの出力データポートskeletonと本コンポーネントの入力データポートskeletonを接続することで、Kinectが検出した人の骨格情報から各関節の情報に変換します。
joint_angleの出力は、各関節の角度に変換していますので、Choreonoidや他のロボットの制御コンポーネントの目標関節角の指定などに使用できます。
このサイトで紹介しているジェスチャ認識によるロボット制御システム例で利用しています。

添付ファイル:Skelton2JointAngle.zip