Im creating a system where a Laser pointer should be able to point to various objects to direct a certain workflow. This laser pointer has two degrees of freedom, rotations about the local X and Y axis. If these rotations are both 90° the laser pointer points in the positive Z direction.
This laser pointer is mounted somewhere above the workspace, and should be able to point to a 3D position somwhere withi the workspace.
I've set up the following basic equation:
T*v = w
where: T is the 4x4 homogenous coordinate transform from the workspace to the laserpointer origin v is the 4x1 vector [x,y,z,1] from the laser pointer origin to the desired point in space w is the 4x1 vector [x,y,z,1] from the workspace origin to the desired point in space.
If I know T and w I can solve for v, and use trigonometry to calculate the required angles.
The unknown in my situation is T as I don't know the exact location and orientation of the laser pointer.
Is there a way to estimate this T matrix from several measurement points? Im imagining using calibration points with a known offset from the workspace origin, manually pointing to the spots and recording the required angles and then somehow estimating T from this. Currently I see two problems:
1) How does one estimate a Transformation matrix? The individual values of the matrix are redundant as 16 values are used to describe 6 degrees of freedom and im not sure how to deal with this. 2) Even if i can set up a estimation to solve T*v=w I'm missing the some information in the v vector, as my pointer cannot point to a XYZ point but rather along a line
Can someone help me along here?
Ive found a way to use least squares to estimate the transformation matrix given known v and w vectors:
T*v=w provides me with four equations which can be rewritten as such: [W0 W1 W2] = [V0 V1 V2 1] [ T0 T4 T8; T1 T5 T9; T2 T6 T10; T3 T7 T11]
Nx3 = Nx4 * 4x3
which allows for a simple least squares solution. This however does not help as the vector v is not completely known.