KinectRTCを使ったジェスチャ認識
概要
SimpleGestureコンポーネントは、KinectRTCからの出力から簡単なジャスチャ認識を行うコンポーネントです。このコンポーネントの概要を下図に示します。
このコンポーネントのジェスチャ認識のポイント
今までの多く実装されてきたジェスチャ認識は、大量の動画像と教師データによって学習させるものがほとんどでした。そのため、ほとんどの場合、カメラなどの入力機器、利用環境による再調整が必要でした。
このような学習によるジェスチャ認識は、一旦設定してしまえば、ロバストにジェスチャ認識が可能です下が、新たなジェスチャを登録する場合に再学習、パラメータの再調整などの多くの手間を必要としていました。
一方、Kinectセンサを用いると、人の姿勢を骨格モデルに変換したデータを得ることができます。このため、ジェスチャを人の関節位置、関節角度を用いてより解析的な手法で定義することで、ジェスチャ認識のアルゴリズムを再構築することができるようになりました。
この手法を用いると、ジェスチャを解析的に定義しますので、新たなジェスチャの定義を関節角やその位置、動作時間等で定義することで比較的容易に追加定義ができるようになります。
このコンポーネントでは、以下に示したジェスチャを認識し、出力することができます。
認識可能なジェスチャ
このコンポーネントでの認識できるジェスチャは下図に示した通りであり、認識結果はcommand, left_hand, right_handポートから文字列で出力されます。ただし、ジェスチャ認識の開始と終了の姿勢は、プログラム内で固定されていますので変更することができません。
動作環境
このコンポーネントは、KinectRTCの出力データをもとにジェスチャ認識を行いますが、特に特別な機器を必要としませんので、OpenRTM-aistが動作するプラットフォームで実行することができます。
ライセンス
このコンポーネントは、EPL-1.0ライセンスで配布いたします
データポート
入力データポート
このコンポーネントには、skeleton入力データポートがあります。このデータポートは、TimedFloatSeq型になっており、KinectRTCのskeleton出力データポートから出力される骨格位置情報を前提としています。
コンポーネント内部では、各関節角の位置と角度を計算して、ジェスチャ、姿勢の認識を行っています。
出力データポート
このコンポーネントには、m_command、m_left_hand、m_right_hand、m_left_hand_pos、m_right_hand_posの5つの出力データポートがあります。これらのデータポートから出力されるデータは、m_command、m_left_hand、m_right_handがジェスチャ認識の結果に対応した文字列、m_left_hand_pos、m_right_hand_posが、両手の位置になります。
コンフィグレーションパラメータ
このコンポーネントには、コンフィグレーションパラメータはありません。
使い方
このコンポーネントは、KinectRTCと同時に使うことを前提として実装しています。比較的簡単に利用するために、KinectRTCのskeleton出力データポートから得られる骨格位置情報のみを使っています。
このコンポーネントの利用例は、人型ロボットをジェスチャで制御にありますので、参照してください。
添付ファイル:SimpleGesture.zip