Class EulerQuaternionStepIntegrator
java.lang.Object
com.irurueta.navigation.inertial.calibration.gyroscope.QuaternionStepIntegrator
com.irurueta.navigation.inertial.calibration.gyroscope.EulerQuaternionStepIntegrator
Computes an integration step of a quaternion using Euler's method.
More information available here:
https://en.wikipedia.org/wiki/Euler_method
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate com.irurueta.algebra.MatrixSlope of quaternion derivative at initial timestamp t0 to be reused.private com.irurueta.algebra.MatrixAngular speed at initial timestamp t0 to be reused.private com.irurueta.algebra.MatrixSkew antisymmetric matrix used for quaternion time derivative computation to be reused.private com.irurueta.algebra.MatrixInitial attitude to be reused.private com.irurueta.algebra.MatrixInstance where result of integration is stored in matrix form being 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.voidintegrate(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 an integration step using Euler's method.static voidintegrationStep(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double dt, com.irurueta.geometry.Quaternion result) Performs an integration step using Euler's method.private static voidintegrationStep(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double dt, com.irurueta.geometry.Quaternion result, com.irurueta.algebra.Matrix omega0, com.irurueta.algebra.Matrix quat, com.irurueta.algebra.Matrix quatResult, com.irurueta.algebra.Matrix k1, com.irurueta.algebra.Matrix omegaSkew) Internal method computing an integration step using Euler's method.Methods inherited from class com.irurueta.navigation.inertial.calibration.gyroscope.QuaternionStepIntegrator
computeAverageAngularSpeed, computeOmegaSkew, computeTimeDerivative, copyAngularSpeedToMatrix, create, create
-
Field Details
-
omega0
private com.irurueta.algebra.Matrix omega0Angular speed at initial timestamp t0 to be reused. -
quat
private com.irurueta.algebra.Matrix quatInitial attitude to be reused. -
quatResult
private com.irurueta.algebra.Matrix quatResultInstance where result of integration is stored in matrix form being reused. -
k1
private com.irurueta.algebra.Matrix k1Slope of quaternion derivative at initial timestamp t0 to be reused. -
omegaSkew
private com.irurueta.algebra.Matrix omegaSkewSkew antisymmetric matrix used for quaternion time derivative computation to be reused.
-
-
Constructor Details
-
EulerQuaternionStepIntegrator
public EulerQuaternionStepIntegrator()Constructor. Initializes matrices being reused.
-
-
Method Details
-
getType
Gets type of this integrator.- Specified by:
getTypein 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 an integration step using Euler's method. More information available here: https://en.wikipedia.org/wiki/Euler_method- Specified by:
integratein 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 dt, com.irurueta.geometry.Quaternion result) throws com.irurueta.geometry.RotationException Performs an integration step using Euler's method. More information available here: https://en.wikipedia.org/wiki/Euler_method This method should only be used sporadically. For better performance, if this method needs to be called very frequently, a new instance ofEulerQuaternionStepIntegratorshould be used and the non-static method should be used instead.- Parameters:
initialAttitude- initial attitude.initialWx- end x-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).initialWy- end y-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).initialWz- 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
private static void integrationStep(com.irurueta.geometry.Quaternion initialAttitude, double initialWx, double initialWy, double initialWz, double dt, com.irurueta.geometry.Quaternion result, com.irurueta.algebra.Matrix omega0, com.irurueta.algebra.Matrix quat, com.irurueta.algebra.Matrix quatResult, com.irurueta.algebra.Matrix k1, com.irurueta.algebra.Matrix omegaSkew) throws com.irurueta.geometry.RotationException Internal method computing an integration step using Euler's method. 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 current timestamp expressed in radians per second (rad/s).initialWy- initial y-coordinate rotation velocity at current timestamp expressed in radians per second (rad/s).initialWz- initial 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.omega0- angular speed at initial timestamp t0 to be reused. Must be 3x1.quat- initial attitude to be reused. Must be 4x1.quatResult- instance where result of integration is stored in matrix form being reused. Must be 4x1.k1- slope of quaternion derivative at initial timestamp t0 to be reused. Must be 4x1.omegaSkew- skew antisymmetric matrix used for quaternion time derivative computation to be reused. Must be 4x4.- Throws:
com.irurueta.geometry.RotationException- if a numerical error occurs.
-