How can I get the rotation information of my wrists in Kinect for Windows v2 ? RRS feed

  • Question

  • Hi,all

    Assuming we make human wrist as the coordinate origin point of a three-dimensional space Cartesian coordinate, then when moving the wrist freely, what is the wrist rotation information in the coordinate system? Can kinect V2 describe it just like the degree of roll, pitch and yaw in Face Basics demo given in the V2 SDK Browser?

    Based on Kinect Studio 2.0 on 3D View model, it gives a vector arrow at each joint in real time, when I move, the direction of arrows changes correspondingly. So I think this may help me to get the information I want.  

    Here are my questions:
    1. Could I use Kinect V2 SDK to detect and output this information directly? If not, any suggestion to use the data which SDK output to get rotation information?    
    2. If the Q1 answer is yes, what is the accuracy of the sensor about the degree of roll, pitch and yaw on wrist?
    3. I have read Kinect V2 SDK documentation about the body class, the JointOrientations property description says that "the joint orientations of the body", what I want to know is the joint orientation based on what frame of reference? The specific value of body.JointOrientations looks what kind of data?

    Any advise or guidance would be greatly appreciated. 

    Wednesday, April 8, 2015 4:03 AM

All replies

  • Yes you can get joint rotation information from the core body data through JointOrienations. It is provided as a quaternion value, where the Y component rotation is around the direction vector from the parent; Z is the normal and X is the bi-normal. You can lookup how to convert to Euler angles on the Internet. The level of accuracy is going to depend on sensor placement and factors of noise and interference that may occur when hands occlude the wrist. You will need to implement some type of filtering as it is known that the value could be 180 rotated in some cases.

    The orientation value is based on the camera coordinate system, not the rotation from the parent. You can create a local rotation by multiplying by the inverse quaternion(conjugate) of the parent.

    Carmine Sirignano - MSFT

    Wednesday, April 8, 2015 5:33 PM
  • Thanks Carmine. It's really helps. But I still have some questions to ask.

    As you said "a quaternion value, where the Y component rotation is around the direction vector from the parent",and you also said "The orientation value is ...not the rotation from the parent",my English is poor so I am a little bit confused. 

    About the accuracy, What is the level of accuracy under ideal conditions? And in what circumstance that "value could be 180 rotated" thing could happen?

    Thank you for your time

    Thursday, April 9, 2015 2:16 PM