I’m trying to control a KUKA robot with a Kinect. For this to work I need to project the tracked skeletons position into the coordinate system of the robot. However, I don’t really understand what is going on with the transformation matrices that vvvv uses. For example, from right handed coordinate systems like OpenGL, I’m used to translation matrices that look like this:
1 0 0 tx
0 1 0 ty
0 0 1 tz
0 0 0 1

In vvvv they look like this:
1 0 0 0
0 1 0 0
0 0 0 1
tx ty tz 1

Can somebody point towards an explanation of how to work with these matrices or how to convert from one to another?

Note: I’m only working with rotation and translation right now!

left-handed and right-handed has nothing to do with the matrix layout

OpenGL has col-major notation, DirectX row-major notation. that means the matrix element names are transposed

you need to make sure which notation is used in your target coordinate system

matrix multiplcation does exactly the same in both cases

you need to know how the XYZ axis are aligned in both coordinate systems

vvvv uses DirectX conventions:

left handed coordinate system with X+ axis right, Y+ axis up, Z+ axis forward

row-major matrix notation

for conversion you need two steps:

probably a transpose of the vvvv matrix

a conversion matrix from the vvvv system into the robot system

multiply the transposed vvvv matrix with the conversion matrix, note that AB is not BA try both ways, i don’t know which way ATM

here is a comprehensive document about all info i could find on this topic. see slide 19 for the conversion matrix and 28ff for the matrix conventions: