microsoft / Azure-Kinect-Sensor-SDK

A cross platform (Linux and Windows) user mode SDK to read data from your Azure Kinect device.
https://Azure.com/Kinect
MIT License
1.47k stars 613 forks source link

Joint coordinate system axis switching during single kinect body tracking #1900

Open bs97 opened 1 year ago

bs97 commented 1 year ago

I am using the joint orientation coordinate systems provided by body tracking to calculate joint angles using a single azure kinect.

I have noticed that the x and z axes swap depending on how the subject is positioned relative to the camera when measuring the right upper limb.

For example, when calculating shoulder flexion while recording with respect to the sagittal plane (side on), flexion can be measured as a change on the x axis. However, when recording with respect to the frontal plane (facing camera) flexion is a change on the z axis.

I'm using the euler decomposition order zxy to convert all quaternions to angles.

The angles are relatively correct, it's just that this switching would require manual evaluation of results. Also this would force users to record with a particular plane in mind - if using the joint coordinate systems. Also what happens if a user is between planes?

Is this a bug or a feature?