giant.calibration.estimators.TemperatureDependentAlignmentEstimator¶
- class giant.calibration.estimators.TemperatureDependentAlignmentEstimator(frame_1_rotations=None, frame_2_rotations=None, temperatures=None, order='xyz')[source]¶
This class estimates a temperature dependent attitude alignment between one frame and another.
The temperature dependent alignment is found by fitting linear temperature dependent euler angles (or Tait-Bryan angles) to transform from the first frame to the second. That is
\[\mathbf{T}_B=\mathbf{R}_m(\theta_m(t))\mathbf{R}_n(\theta_n(t))\mathbf{R}_p(\theta_p(t))\mathbf{T}_A\]where \(\mathbf{T}_B\) is the target frame, \(\mathbf{R}_i\) is the rotation matrix about the \(i^{th}\) axis, \(\mathbf{T}_A\) is the base frame, and \(\theta_i(t)\) are the linear angles.
This fit is done in a least squares sense by computing the values for \(\theta_i(t)\) across a range of temperatures (by estimating the attitude for multiple single images) and then solving the system
\[\begin{split}\left[\begin{array}{cc} 1 & t_1 \\ 1 & t_2 \\ \vdots & \vdots \\ 1 & t_n \end{array}\right] \left[\begin{array}{ccc} \theta_{m0} & \theta_{n0} & \theta_{p0} \\ \theta_{m1} & \theta_{n1} & \theta_{p1}\end{array}\right] = \left[\begin{array}{ccc}\vphantom{\theta}^0\theta_m &\vphantom{\theta}^0\theta_n &\vphantom{\theta}^0\theta_p\\ \vdots & \vdots & \vdots \\ \vphantom{\theta}^k\theta_m &\vphantom{\theta}^k\theta_n &\vphantom{\theta}^k\theta_p\end{array}\right]\end{split}\]where \(\vphantom{\theta}^k\theta_i\) is the measured Euler/Tait-Bryan angle for the \(k^{th}\) image.
In general a user should not use this class and instead the
Calibration.estimate_temperature_dependent_alignment()
should be used which handles the proper setup.- Parameters:
frame_1_rotations (Iterable[Rotation] | None) – The rotation objects from the inertial frame to the base frame
frame_2_rotations (Iterable[Rotation] | None) – The rotation objects from the inertial frame to the target frame
temperatures (List[Real] | None) – The temperature of the camera corresponding to the times the input rotations were estimated.
order (str) – The order of the rotations to perform according to the convention in
quaternion_to_euler()
- frame_1_rotations: Iterable[Rotation] | None¶
An iterable containing the rotations from the inertial frame to the base frame for each image under consideration.
- frame_2_rotations: Iterable[Rotation] | None¶
An iterable containing the rotations from the inertial frame to the target frame for each image under consideration.
- temperatures: List[Real] | None¶
A list containing the temperatures of the camera for each image under consideration
- order: str¶
The order of the Euler angles according to the convention in
quaternion_to_euler()
- angle_m_offset: float | None¶
The estimated constant angle offset for the m rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_m_slope: float | None¶
The estimated angle temperature slope for the m rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_n_offset: float | None¶
The estimated constant angle offset for the n rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_n_slope: float | None¶
The estimated angle temperature slope for the n rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_p_offset: float | None¶
The estimated constant angle offset for the p rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_p_slope: float | None¶
The estimated angle temperature slope for the p rotation axis in radians.
This will be
None
untilestimate()
is called.
Summary of Methods
This method estimates the linear temperature dependent alignment as 3 linear temperature dependent euler angles according to |