giant.stellar_opnav.estimators

This module provides the ability to find the rotation that best aligns 1 set of unit vectors with another set of unit vectors.

Description of the Problem

Mathematically we are trying to solve a minimization problem given by

\[\min_TJ(\mathbf{T})=\frac{1}{2}\sum_iw_i\left\|\mathbf{a}_i-\mathbf{T}\mathbf{b}_i\right\|^2\]

where \(\mathbf{T}\) is the rotation matrix that aligns the vectors in frame \(b\) (\(\mathbf{b}_i\)) with the vectors in frame \(a\) (\(\mathbf{a}_i\)) and \(w_i\) is a weight for each pairing. This is known as Wahba’s problem.

Wahba’s problem has many different solutions, and GIANT currently provides one of those solutions, known as Davenport’s Q Method solution, which solves for the rotation quaternion representation of \(\mathbf{T}\) using an eigenvalue-eigenvector problem. This implementation is given through the DavenportQMethod class. To implement your own solution to Wahba’s problem, you should subclass the AttitudeEstimator class (though this is not required) and then tailor it to your method.

Classes

AttitudeEstimator

This abstract base class (ABC) serves as a template for creating an attitude estimator that GIANT can use.

DavenportQMethod

This class estimates the rotation quaternion that best aligns unit vectors from one frame with unit vectors in another frame using Davenport's Q-Method solution to Wahba's problem.