Wahba's problem

From HandWiki

In applied mathematics, Wahba's problem, first posed by Grace Wahba in 1965, seeks to find a rotation matrix (special orthogonal matrix) between two coordinate systems from a set of (weighted) vector observations. Solutions to Wahba's problem are often used in satellite attitude determination utilising sensors such as magnetometers and multi-antenna GPS receivers. The cost function that Wahba's problem seeks to minimise is as follows:

[math]\displaystyle{ J(\mathbf{R}) = \frac{1}{2} \sum_{k=1}^{N} a_k\| \mathbf{w}_k - \mathbf{R} \mathbf{v}_k \|^2 }[/math] for [math]\displaystyle{ N\geq2 }[/math]

where [math]\displaystyle{ \mathbf{w}_k }[/math] is the k-th 3-vector measurement in the reference frame, [math]\displaystyle{ \mathbf{v}_k }[/math] is the corresponding k-th 3-vector measurement in the body frame and [math]\displaystyle{ \mathbf{R} }[/math] is a 3 by 3 rotation matrix between the coordinate frames.[1] [math]\displaystyle{ a_k }[/math] is an optional set of weights for each observation.

A number of solutions to the problem have appeared in literature, notably Davenport's q-method,[2] QUEST and methods based on the singular value decomposition (SVD). Several methods for solving Wahba's problem are discussed by Markley and Mortari.

This is an alternative formulation of the Orthogonal Procrustes problem (consider all the vectors multiplied by the square-roots of the corresponding weights as columns of two matrices with N columns to obtain the alternative formulation). An elegant derivation of the solution on one and a half page can be found in.[3]

Solution via SVD

One solution can be found using a singular value decomposition (SVD).

1. Obtain a matrix [math]\displaystyle{ \mathbf{B} }[/math] as follows:

[math]\displaystyle{ \mathbf{B} = \sum_{i=1}^{n} a_i \mathbf{w}_i {\mathbf{v}_i}^T }[/math]

2. Find the singular value decomposition of [math]\displaystyle{ \mathbf{B} }[/math]

[math]\displaystyle{ \mathbf{B} = \mathbf{U} \mathbf{S} \mathbf{V}^T }[/math]

3. The rotation matrix is simply:

[math]\displaystyle{ \mathbf{R} = \mathbf{U} \mathbf{M} \mathbf{V}^T }[/math]

where [math]\displaystyle{ \mathbf{M} = \operatorname{diag}(\begin{bmatrix} 1 & 1 & \det(\mathbf{U}) \det(\mathbf{V})\end{bmatrix}) }[/math]

Notes

  1. The rotation [math]\displaystyle{ \mathbf{R} }[/math] in the problem's definition transforms the body frame to the reference frame. Most publications define rotation in the reverse direction, i.e. from the reference to the body frame which amounts to [math]\displaystyle{ \mathbf{R}^T }[/math].
  2. "Davenport's Q-method (Finding an orientation matching a set of point samples)". https://math.stackexchange.com/q/1634113. 
  3. Appel, M.. "Robust Spoofing Detection and Mitigation based on Direction of Arrival Estimation". Ion GNSS+ 2015 28. https://elib.dlr.de/99721/1/appel_ion_2015_v05.pdf. 

References

See also