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 (Optional[Iterable[giant.rotations.Rotation]]) – The rotation objects from the inertial frame to the base frame
frame_2_rotations (Optional[Iterable[giant.rotations.Rotation]]) – The rotation objects from the inertial frame to the target frame
temperatures (Optional[List[numbers.Real]]) – 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: Optional[Iterable[giant.rotations.Rotation]]¶
An iterable containing the rotations from the inertial frame to the base frame for each image under consideration.
- frame_2_rotations: Optional[Iterable[giant.rotations.Rotation]]¶
An iterable containing the rotations from the inertial frame to the target frame for each image under consideration.
- temperatures: Optional[List[numbers.Real]]¶
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: Optional[float]¶
The estimated constant angle offset for the m rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_m_slope: Optional[float]¶
The estimated angle temperature slope for the m rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_n_offset: Optional[float]¶
The estimated constant angle offset for the n rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_n_slope: Optional[float]¶
The estimated angle temperature slope for the n rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_p_offset: Optional[float]¶
The estimated constant angle offset for the p rotation axis in radians.
This will be
None
untilestimate()
is called.
- angle_p_slope: Optional[float]¶
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 |