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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.