RUIS for Unity released!

RUIS (Reality-based User Interface System) gives hobbyists and seasoned developers an easy access to the state-of-the-art interaction devices, so they can bring their innovations into the field of virtual reality and motion controlled applications. Currently RUIS for Unity includes a versatile display manager for handling several display devices, and supports the use of Kinect and PlayStation Move together in the same coordinate system. This means that avatars controlled by Kinect can interact with PS Move controlled objects; A player represented by a Kinect-controlled barbarian avatar can grab a PS Move controller that is rendered as a hammer within the application for example.

You can develop and test your own motion controlled applications even if you have only a mouse and keyboard, because in RUIS they can emulate 3D input devices. Learn more about RUIS from its readme-file.

It’s pretty straightforward. We calculate the rigid transformation (rotation + translation) between the two coordinate systems, and then apply that transformation or its inverse when transforming PS Move coordinates into Kinect coordinates or vice versa.
The rigid transformation is a 3-by-4 matrix with 3-by-3 rotation matrix and a translation vector. We calculate the rigid transformation by solving a linear equation. The linear equation contains the unknown rigid transformation, and two known sets of corresponding sample points from each sensor (PS Move controller location as seen by PS Eye and the hand location that holds the controller as seen by Kinect).

For math details see the method CalculateTransformation() in file RUISKinect2ToPSMoveCalibrationProcess.cs.