im doing a project which involves the use of DCMs for recording motion. its recording motion by updating the DCM at regular intervals using inputs coming from sensors.

the update equation is simply
<br /> <br />
DCM(t+dt)=DCM(t)*R(dt)<br /> <br />
where r(dt) is generated using sensors.

the problem with my sensor setup is that my primary sensor (a mems gyroscope) is vulnerable to drift. thus in case of zero input, the r(dt) matrix is not identity (as it ideally should be, so that the DCM is left unchanged). so i am using another sensor (mems accelerometer) which corrects this drift. the correction however is provided only to the third column of the DCM. but the other six remain uncorrected.

to cut a long story short, i have a DCM with the third column perfectly correct. while the other six elements bear some error.

\left(\begin{array}{ccc}a&d&Ax\\b&e&Ay\\c&f&Az\end  {array}\right)<br />

where Ax Ay Az are corrected elements. a b c d e f are uncorrected

now is it possible for me to use the six constraints of orthonormality to solve for the 6 unknowns? the equations come out to be

a^2 + d^2 + Ax^2 = 1
b^2 + e^2 + Ay^2 = 1
c^2 + f^2 + Az^2 = 1
(length of each row vector is 1)

a*b + d*e + Ax*Ay = 0
b*c + e*f + Ay*Az = 0
a*c + d*f + Ax*Az = 0
(each row vector is orthogonal to the other two)

obvious constraints on the value of a b c d e f is that each lies in [-1,1]

is there an analytic solution to the above set of equations?
if not, then can it be solved numerically? i could use the current values of a b c d e f as initial approximations . but i dont know what numerical technique to use...

i tried using symbolic math in matlab to solve for the unknowns but without success...

also if none of the above works, what other method may be of use?