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: