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.

Modules

attitude_estimator

davenport_q_method

esoq2

Classes

AttitudeEstimatorOptions

Dataclass for configuring attitude estimator subclasses

AttitudeEstimator

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

ESOQ2Options

Options for the ESOQ2 attitude estimator.

ESOQ2

Implements the ESOQ2 (Second Estimator of the Optimal Quaternion) solution to Wahba's problem.

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.