Class YuanQuaternionStepIntegrator
java.lang.Object
com.irurueta.navigation.inertial.calibration.gyroscope.QuaternionStepIntegrator
com.irurueta.navigation.inertial.calibration.gyroscope.YuanQuaternionStepIntegrator
Computes an integration step of a quaternion using Suh's method.
More information available here:
Yuan, S. "Quaternion-based Unscented Kalman Filter for Real-time". 2015,
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate com.irurueta.algebra.Matrix
Temporary matrix to be reused.private static final double
private com.irurueta.algebra.Matrix
Identity matrix to be reused.private com.irurueta.algebra.Matrix
Angular speed at initial timestamp t0 to be reused.private com.irurueta.algebra.Matrix
Angular speed at initial timestamp t0 to be reused.private com.irurueta.algebra.Matrix
Instance where result of integration is stored in matrix form being reused.private com.irurueta.algebra.Matrix
Temporary matrix to be reused.Fields inherited from class com.irurueta.navigation.inertial.calibration.gyroscope.QuaternionStepIntegrator
DEFAULT_TYPE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetType()
Gets type of this integrator.void
integrate
(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result) Performs Yuan's integration step.static void
integrationStep
(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result) Performs Yuan's integration step.private static void
integrationStep
(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result, com.irurueta.algebra.Matrix quat, com.irurueta.algebra.Matrix omega, com.irurueta.algebra.Matrix a, com.irurueta.algebra.Matrix identity, com.irurueta.algebra.Matrix tmp, com.irurueta.algebra.Matrix quatResult) Internal method computing an integration step using Trawny's algorithm.Methods inherited from class com.irurueta.navigation.inertial.calibration.gyroscope.QuaternionStepIntegrator
computeAverageAngularSpeed, computeOmegaSkew, computeTimeDerivative, copyAngularSpeedToMatrix, create, create
-
Field Details
-
EPSILON
private static final double EPSILON- See Also:
-
quat
private com.irurueta.algebra.Matrix quatAngular speed at initial timestamp t0 to be reused. -
omega
private com.irurueta.algebra.Matrix omegaAngular speed at initial timestamp t0 to be reused. -
a
private com.irurueta.algebra.Matrix aTemporary matrix to be reused. -
identity
private com.irurueta.algebra.Matrix identityIdentity matrix to be reused. -
tmp
private com.irurueta.algebra.Matrix tmpTemporary matrix to be reused. -
quatResult
private com.irurueta.algebra.Matrix quatResultInstance where result of integration is stored in matrix form being reused.
-
-
Constructor Details
-
YuanQuaternionStepIntegrator
public YuanQuaternionStepIntegrator()Constructor. Initializes matrices being reused.
-
-
Method Details
-
getType
Gets type of this integrator.- Specified by:
getType
in classQuaternionStepIntegrator
- Returns:
- indicates type of this integrator.
-
integrate
public void integrate(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result) throws com.irurueta.geometry.RotationException Performs Yuan's integration step. More information available here: Yuan, S. "Quaternion-based Unscented Kalman Filter for Real-time". 2015,- Specified by:
integrate
in classQuaternionStepIntegrator
- Parameters:
initialAttitude
- initial attitude.initialWx
- initial x-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWy
- initial y-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWz
- initial z-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).*currentWx
- end x-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).currentWy
- end y-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).currentWz
- end z-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).dt
- time step expressed in seconds.result
- instance where result of integration will be stored.- Throws:
com.irurueta.geometry.RotationException
- if a numerical error occurs.
-
integrationStep
public static void integrationStep(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result) throws com.irurueta.geometry.RotationException Performs Yuan's integration step. More information available here: Yuan, S. "Quaternion-based Unscented Kalman Filter for Real-time". 2015,- Parameters:
initialAttitude
- initial attitude.initialWx
- initial x-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWy
- initial y-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWz
- initial z-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).currentWx
- end x-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).currentWy
- end y-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).currentWz
- end z-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).dt
- time step expressed in seconds (t1 - t0).result
- instance where result of integration will be stored.- Throws:
com.irurueta.geometry.RotationException
- if a numerical error occurs.
-
integrationStep
private static void integrationStep(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double currentWx, double currentWy, double currentWz, double dt, com.irurueta.geometry.Quaternion result, com.irurueta.algebra.Matrix quat, com.irurueta.algebra.Matrix omega, com.irurueta.algebra.Matrix a, com.irurueta.algebra.Matrix identity, com.irurueta.algebra.Matrix tmp, com.irurueta.algebra.Matrix quatResult) throws com.irurueta.geometry.RotationException Internal method computing an integration step using Trawny's algorithm. This method is used internally so that reusable instances can be provided as parameters.- Parameters:
initialAttitude
- initial attitude.initialWx
- initial x-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWy
- initial y-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).initialWz
- initial z-coordinate rotation velocity at initial timestamp expressed in radians per second (rad/s).currentWx
- end x-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).currentWy
- end y-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).currentWz
- end z-coordinate rotation velocity at end timestamp expressed in radians per second (rad/s).dt
- time step expressed in seconds (t1 - t0).result
- instance where result of integration will be stored.quat
- initial attitude to be reused. Must be 4x1.omega
- angular speed at initial timestamp t0 to be reused. Must be 3x1.a
- temporary matrix to be reused. Must be 4x4.identity
- identity matrix to be reused. Must be 4x4.tmp
- temporary matrix to be reused. Must be 4x4.quatResult
- instance where result of integration is stored in matrix form being reused. Must be 4x1.- Throws:
com.irurueta.geometry.RotationException
- if a numerical error occurs.
-