Class BodyKinematicsBiasEstimator
This estimator must be used when the body where the accelerometer and gyroscope is attached remains static on the same position with zero velocity and no rotation speed while capturing data.
To compute PSD's this estimator assumes that accelerometer samples are obtained
at a constant provided rate equal to getTimeInterval()
seconds.
If not available, accelerometer and gyroscope sampling rate average can be
estimated using TimeIntervalEstimator
.
Notice that in order to compute accelerometer and gyroscope biases, body position and orientation must be known to account for gravity and Earth rotation effects.
Even though this estimator obtains approximate bias values, the obtained result can be used to initialize some non-linear calibrators to obtain more accurate results. Such calibrators are: - com.irurueta.navigation.inertial.calibration.accelerometer.KnownFrameAccelerometerNonLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.accelerometer.KnownGravityNormAccelerometerCalibrator - com.irurueta.navigation.inertial.calibration.accelerometer.KnownPositionAccelerometerCalibrator} - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownFrameAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownGravityNormAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.accelerometer.RobustKnownPositionAccelerometerCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasAndFrameGyroscopeLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasAndFrameGyroscopeNonLinearLeastSquaresCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasEasyGyroscopeCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.KnownBiasTurntableGyroscopeCalibrator - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasAndFrameGyroscopeCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasEasyGyroscopeCalibrator and any of its subclasses. - com.irurueta.navigation.inertial.calibration.gyroscope.RobustKnownBiasTurntableGyroscopeCalibrator and any of its subclasses.
Even though this estimator can compute noise PSD's, if only noise PSD's levels
are required, estimators in com.irurueta.navigation.inertial.calibration.noise
package should
be used instead.
This estimator does NOT compute average bias values over a period of time, it only computes accumulated averages.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate double
Contains estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).private double
Contains estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).private double
Contains estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).private double
Contains estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).private double
Contains estimated bias of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).private double
Contains estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).static final double
Default time interval between kinematics samples expressed in seconds (s).private BodyKinematics
Theoretical expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).private final com.irurueta.navigation.frames.ECEFFrame
Contains body position, velocity (which will always be zero) and orientation resolved around ECEF axes.private BodyKinematics
Last provided body kinematics values.Listener to handle events raised by this estimator.private int
Number of processed body kinematics samples.private int
Number of processed body kinematics samples plus one.private boolean
Indicates that estimator is running.private double
Time interval expressed in seconds (s) between body kinematics samples.private double
Contains estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).private double
Contains estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).private double
Contains estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).private double
Contains estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).private double
Contains estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).private double
Contains estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s4). -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.BodyKinematicsBiasEstimator
(double timeInterval) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.ECEFPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation nedC, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Time timeInterval) Constructor.BodyKinematicsBiasEstimator
(com.irurueta.units.Time timeInterval, BodyKinematicsBiasEstimatorListener listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addBodyKinematics
(BodyKinematics kinematics) Adds a sample of body kinematics (accelerometer + gyroscope readings) obtained from an IMU.private static double
convertTime
(com.irurueta.units.Time time) Converts provided time instance to seconds.com.irurueta.algebra.Matrix
Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.void
getAccelerometerBias
(com.irurueta.algebra.Matrix result) Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.double
Gets average accelerometer noise PSD (Power Spectral Density) among x,y,z components expressed as (m^2/s^3).double
Gets accelerometer noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed as (m * s^-1.5).double
Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates expressed in meters per squared second (m/s^2).com.irurueta.units.Acceleration
Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.void
getAverageAccelerometerStandardDeviationAsAcceleration
(com.irurueta.units.Acceleration result) Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.double
Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates expressed in radians per second (rad/s).com.irurueta.units.AngularSpeed
Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.void
getAverageGyroscopeStandardDeviationAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.Gets estimated bias of gyroscope sensed angular rate.void
getBiasAngularRate
(AngularSpeedTriad result) Gets estimated bias of gyroscope sensed angular rate.double
Gets estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).com.irurueta.units.AngularSpeed
Gets estimated bias of x coordinate of gyroscope sensed angular rate.void
getBiasAngularRateXAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated bias of x coordinate of gyroscope sensed angular rate.double
Gets estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).com.irurueta.units.AngularSpeed
Gets estimated bias of y coordinate of gyroscope sensed angular rate.void
getBiasAngularRateYAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated bias of y coordinate of gyroscope sensed angular rate.double
Gets estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).com.irurueta.units.AngularSpeed
Gets estimated bias of z coordinate of gyroscope sensed angular rate.void
getBiasAngularRateZAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated bias of z coordinate of gyroscope sensed angular rate.Gets body kinematics containing estimated bias values for accelerometer and gyroscope.void
Gets body kinematics containing estimated bias values for accelerometer and gyroscope.getBiasF()
Gets estimated bias of accelerometer sensed specific force.void
getBiasF
(AccelerationTriad result) Gets estimated bias of accelerometer sensed specific force.double
Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).com.irurueta.units.Acceleration
Gets estimated bias of x coordinate of accelerometer sensed specific force.void
getBiasFxAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated bias of x coordinate of accelerometer sensed specific force.double
Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).com.irurueta.units.Acceleration
Gets estimated bias of y coordinate of accelerometer sensed specific force.void
getBiasFyAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated bias of y coordinate of accelerometer sensed specific force.double
Gets estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).com.irurueta.units.Acceleration
Gets estimated bias of z coordinate of accelerometer sensed specific force.void
getBiasFzAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated bias of z coordinate of accelerometer sensed specific force.com.irurueta.navigation.frames.CoordinateTransformation
getEcefC()
Gets current body orientation as a transformation from body to ECEF coordinates.void
getEcefC
(com.irurueta.navigation.frames.CoordinateTransformation result) Gets current body orientation as a transformation from body to ECEF coordinates.com.irurueta.navigation.frames.ECEFFrame
Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates.void
getEcefFrame
(com.irurueta.navigation.frames.ECEFFrame result) Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates.com.irurueta.navigation.frames.ECEFPosition
Gets current body position expressed in ECEF coordinates.void
getEcefPosition
(com.irurueta.navigation.frames.ECEFPosition result) Gets current body position expressed in ECEF coordinates.com.irurueta.units.Time
Gets amount of total elapsed time since first processed measurement.void
getElapsedTime
(com.irurueta.units.Time result) Gets amount of total elapsed time since first processed measurement.double
Gets amount of total elapsed time since first processed measurement expressed in seconds (s).Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).void
getExpectedKinematics
(BodyKinematics result) Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity).com.irurueta.algebra.Matrix
Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.void
getGyroBias
(com.irurueta.algebra.Matrix result) Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.double
Gets average gyroscope noise PSD (Power Spectral Density) among x,y,z components expressed in (rad^2/s).double
Gets gyroscope noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed in (rad * s^-0.5).Gets last provided body kinematics values or null if not available.boolean
getLastBodyKinematics
(BodyKinematics result) Gets last provided body kinematics values.Gets listener to handle events raised by this estimator.com.irurueta.navigation.frames.CoordinateTransformation
getNedC()
Gets current body orientation as a transformation from body to NED coordinates.void
getNedC
(com.irurueta.navigation.frames.CoordinateTransformation result) Gets current body orientation as a transformation from body to NED coordinates.com.irurueta.navigation.frames.NEDFrame
Gets NED frame containing current body position and orientation expressed in NED coordinates.void
getNedFrame
(com.irurueta.navigation.frames.NEDFrame result) Gets NED frame containing current body position and orientation expressed in NED coordinates.com.irurueta.navigation.frames.NEDPosition
Gets current body position expressed in NED coordinates.void
getNedPosition
(com.irurueta.navigation.frames.NEDPosition result) Gets current body position expressed in NED coordinates.int
Gets number of samples that have been processed so far.double
Gets gyroscope noise PSD (Power Spectral Density) on x axis expressed in (rad^2/s).double
Gets gyroscope noise PSD (Power Spectral Density) on y axis expressed in (rad^2/s).double
Gets gyroscope noise PSD (Power Spectral Density) on z axis expressed in (rad^2/s).double
getPSDFx()
Gets accelerometer noise PSD (Power Spectral Density) on x axis expressed in (m^2 * s^-3).double
getPSDFy()
Gets accelerometer noise PSD (Power Spectral Density) on y axis expressed in (m^2 * s^-3).double
getPSDFz()
Gets accelerometer noise PSD (Power Spectral Density) on z axis expressed in (m^2 * s^-3).double
Gets gyroscope noise root PSD (Power Spectral Density) on x axis expressed in (rad * s^-0.5).double
Gets gyroscope noise root PSD (Power Spectral Density) on y axis expressed in (rad * s^-0.5).double
Gets gyroscope noise root PSD (Power Spectral Density) on z axis expressed in (rad * s^-0.5).double
Gets accelerometer noise root PSD (Power Spectral Density) on x axis expressed in (m * s^-1.5).double
Gets accelerometer noise root PSD (Power Spectral Density) on y axis expressed in (m * s^-1.5).double
Gets accelerometer noise root PSD (Power Spectral Density) on z axis expressed in (m * s^-1.5).Gets estimated standard deviation of sensed angular rate.void
Gets estimated standard deviation of sensed angular rate.double
Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate expressed in (rad/s).com.irurueta.units.AngularSpeed
Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.void
getStandardDeviationAngularRateXAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.double
Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate expressed in (rad/s).com.irurueta.units.AngularSpeed
Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.void
getStandardDeviationAngularRateYAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.double
Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate expressed in (rad/s).com.irurueta.units.AngularSpeed
Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.void
getStandardDeviationAngularRateZAsAngularSpeed
(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.Gets estimated standard deviation of accelerometer sensed specific force.void
Gets estimated standard deviation of accelerometer sensed specific force.double
Gets estimated standard deviation of x coordinate of accelerometer sensed specific force expressed in (m/s^2).com.irurueta.units.Acceleration
Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.void
getStandardDeviationFxAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.double
Gets estimated standard deviation of y coordinate of accelerometer sensed specific force expressed in (m/s^2).com.irurueta.units.Acceleration
Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.void
getStandardDeviationFyAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.double
Gets estimated standard deviation of z coordinate of accelerometer sensed specific force expressed in (m/s^2).com.irurueta.units.Acceleration
Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.void
getStandardDeviationFzAsAcceleration
(com.irurueta.units.Acceleration result) Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.void
Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.double
Gets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).com.irurueta.units.Time
Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.void
getTimeIntervalAsTime
(com.irurueta.units.Time result) Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.double
Gets estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).double
Gets estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).double
Gets estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).double
Gets estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).double
Gets estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).double
Gets estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s^4).boolean
Indicates whether estimator is currently running or not.private void
Rebuilds expected theoretical kinematics for provided body position and orientation and provided time interval, assuming that body remains at the same position (zero velocity).boolean
reset()
Resets current estimator.void
setEcefC
(com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets current body orientation as a transformation from body to ECEF coordinates.void
setEcefPosition
(double x, double y, double z) Sets current body position expressed in ECEF coordinates.void
setEcefPosition
(com.irurueta.geometry.Point3D position) Sets current body position expressed in ECEF coordinates.void
setEcefPosition
(com.irurueta.navigation.frames.ECEFPosition position) Sets current body position expressed in ECEF coordinates.void
setEcefPosition
(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z) Sets current body position expressed in ECEF coordinates.void
setEcefPositionAndEcefOrientation
(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position and orientation both expressed on ECEF coordinates.void
setEcefPositionAndEcefOrientation
(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position and orientation both expressed on ECEF coordinates.void
setEcefPositionAndEcefOrientation
(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position and orientation both expressed on ECEF coordinates.void
setEcefPositionAndEcefOrientation
(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position and orientation both expressed on ECEF coordinates.void
setEcefPositionAndNedOrientation
(double x, double y, double z, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position expressed on ECEF coordinates and orientation respect to NED axes.void
setEcefPositionAndNedOrientation
(com.irurueta.geometry.Point3D position, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position expressed on ECEF coordinates and orientation respect to NED axes.void
setEcefPositionAndNedOrientation
(com.irurueta.navigation.frames.ECEFPosition ecefPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position expressed on ECEF coordinates and orientation respect to NED axes.void
setEcefPositionAndNedOrientation
(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position expressed on ECEF coordinates and orientation respect to NED axes.void
Sets listener to handle events raised by this estimator.void
setNedC
(com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets current body orientation as a transformation from body to NED coordinates.void
setNedPosition
(double latitude, double longitude, double height) Sets current body position expressed in NED coordinates.void
setNedPosition
(com.irurueta.navigation.frames.NEDPosition position) Sets current body position expressed in NED coordinates.void
setNedPosition
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) Sets current body position expressed in NED coordinates.void
setNedPosition
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) Sets current body position expressed in NED coordinates.void
setNedPositionAndEcefOrientation
(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position expressed on NED coordinates and orientation respect to ECEF axes.void
setNedPositionAndEcefOrientation
(com.irurueta.navigation.frames.NEDPosition position, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position expressed on NED coordinates and orientation respect to ECEF axes.void
setNedPositionAndEcefOrientation
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position expressed on NED coordinates and orientation respect to ECEF axes.void
setNedPositionAndEcefOrientation
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation ecefC) Sets position expressed on NED coordinates and orientation respect to ECEF axes.void
setNedPositionAndNedOrientation
(double latitude, double longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position and orientation both expressed on NED coordinates.void
setNedPositionAndNedOrientation
(com.irurueta.navigation.frames.NEDPosition nedPosition, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position and orientation both expressed on NED coordinates.void
setNedPositionAndNedOrientation
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position and orientation both expressed on NED coordinates.void
setNedPositionAndNedOrientation
(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.navigation.frames.CoordinateTransformation nedC) Sets position and orientation both expressed on NED coordinates.void
setTimeInterval
(double timeInterval) Sets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).void
setTimeInterval
(com.irurueta.units.Time timeInterval) Sets time interval between body kinematics (IMU acceleration + gyroscope) samples.
-
Field Details
-
DEFAULT_TIME_INTERVAL_SECONDS
public static final double DEFAULT_TIME_INTERVAL_SECONDSDefault time interval between kinematics samples expressed in seconds (s).- See Also:
-
timeInterval
private double timeIntervalTime interval expressed in seconds (s) between body kinematics samples. -
frame
private final com.irurueta.navigation.frames.ECEFFrame frameContains body position, velocity (which will always be zero) and orientation resolved around ECEF axes. By default it is assumed that body is located at zero NED coordinates (latitude, longitude and height) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down. -
listener
Listener to handle events raised by this estimator. -
lastBodyKinematics
Last provided body kinematics values. -
biasFx
private double biasFxContains estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). -
biasFy
private double biasFyContains estimated bias of y coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). -
biasFz
private double biasFzContains estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2). -
biasAngularRateX
private double biasAngularRateXContains estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). -
biasAngularRateY
private double biasAngularRateYContains estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). -
biasAngularRateZ
private double biasAngularRateZContains estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s). -
varianceFx
private double varianceFxContains estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4). -
varianceFy
private double varianceFyContains estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4). -
varianceFz
private double varianceFzContains estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s4). -
varianceAngularRateX
private double varianceAngularRateXContains estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2). -
varianceAngularRateY
private double varianceAngularRateYContains estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2). -
varianceAngularRateZ
private double varianceAngularRateZContains estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2). -
numberOfProcessedSamples
private int numberOfProcessedSamplesNumber of processed body kinematics samples. -
numberOfProcessedSamplesPlusOne
private int numberOfProcessedSamplesPlusOneNumber of processed body kinematics samples plus one. -
running
private boolean runningIndicates that estimator is running. -
expectedKinematics
Theoretical expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.
-
-
Constructor Details
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator()Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down. -
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(double latitude, double longitude, double height) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude expressed in radians (rad).longitude
- longitude expressed in radians (rad).height
- height expressed in meters (m).
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height expressed in meters (m).
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(double timeInterval) Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, double timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude expressed in radians (rad).longitude
- longitude expressed in radians (rad).height
- height expressed in meters (m).timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, double timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height expressed in meters (m).timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, double timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height.timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Time timeInterval) Constructor. It is assumed that body is located at zero NED coordinates (latitude = 0, longitude = 0 and height = 0) and with zero Euler angles representing rotation (roll = 0, pith = 0, yaw = 0), which for Android devices it means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples.- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(double latitude, double longitude, double height, com.irurueta.units.Time timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude expressed in radians (rad).longitude
- longitude expressed in radians (rad).height
- height expressed in meters (m).timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples.- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height, com.irurueta.units.Time timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height expressed in meters (m).timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples.- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
BodyKinematicsBiasEstimator
public BodyKinematicsBiasEstimator(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height, com.irurueta.units.Time timeInterval) Constructor. It is assumed that body has zero Euler angles representing rotation (roll = 0, pitch = 0, yaw = 0) respect the horizon at provided body location. For Android devices this means that the device is flat on a horizontal surface with the screen facing down.- Parameters:
latitude
- latitude.longitude
- longitude.height
- height.timeInterval
- time interval between body kinematics (IMU acceleration + gyroscope) samples.- Throws:
IllegalArgumentException
- if provided time interval is negative.
-
-
Method Details
-
getTimeInterval
public double getTimeInterval()Gets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Returns:
- time interval between body kinematics samples.
-
setTimeInterval
public void setTimeInterval(double timeInterval) throws com.irurueta.navigation.LockedException Sets time interval between body kinematics (IMU acceleration + gyroscope) samples expressed in seconds (s).- Parameters:
timeInterval
- time interval between body kinematics samples.- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
getTimeIntervalAsTime
public com.irurueta.units.Time getTimeIntervalAsTime()Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.- Returns:
- time interval between body kinematics samples.
-
getTimeIntervalAsTime
public void getTimeIntervalAsTime(com.irurueta.units.Time result) Gets time interval between body kinematics (IMU acceleration + gyroscope) samples.- Parameters:
result
- instance where time interval will be stored.
-
setTimeInterval
public void setTimeInterval(com.irurueta.units.Time timeInterval) throws com.irurueta.navigation.LockedException Sets time interval between body kinematics (IMU acceleration + gyroscope) samples.- Parameters:
timeInterval
- time interval between body kinematics samples.- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
getEcefPosition
public com.irurueta.navigation.frames.ECEFPosition getEcefPosition()Gets current body position expressed in ECEF coordinates.- Returns:
- current body position expressed in ECEF coordinates.
-
setEcefPosition
public void setEcefPosition(double x, double y, double z) throws com.irurueta.navigation.LockedException Sets current body position expressed in ECEF coordinates.- Parameters:
x
- x position resolved around ECEF axes and expressed in meters (m).y
- y position resolved around ECEF axes and expressed in meters (m).z
- z position resolved around ECEF axes and expressed in meters (m).- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
setEcefPosition
public void setEcefPosition(com.irurueta.units.Distance x, com.irurueta.units.Distance y, com.irurueta.units.Distance z) throws com.irurueta.navigation.LockedException Sets current body position expressed in ECEF coordinates.- Parameters:
x
- x position resolved around ECEF axes.y
- y position resolved around ECEF axes.z
- z position resolved around ECEF axes.- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
setEcefPosition
public void setEcefPosition(com.irurueta.geometry.Point3D position) throws com.irurueta.navigation.LockedException Sets current body position expressed in ECEF coordinates.- Parameters:
position
- position resolved around ECEF axes and expressed in meters (m).- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
getEcefFrame
public com.irurueta.navigation.frames.ECEFFrame getEcefFrame()Gets ECEF frame containing current body position and orientation expressed in ECEF coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.- Returns:
- ECEF frame containing current body position and orientation resolved around ECEF axes.
-
getNedFrame
public com.irurueta.navigation.frames.NEDFrame getNedFrame()Gets NED frame containing current body position and orientation expressed in NED coordinates. Frame also contains body velocity, but it is always assumed to be zero during calibration.- Returns:
- NED frame containing current body position and orientation resolved around NED axes.
-
getNedPosition
public com.irurueta.navigation.frames.NEDPosition getNedPosition()Gets current body position expressed in NED coordinates.- Returns:
- current body position expressed in NED coordinates.
-
setNedPosition
public void setNedPosition(double latitude, double longitude, double height) throws com.irurueta.navigation.LockedException Sets current body position expressed in NED coordinates.- Parameters:
latitude
- latitude NED coordinate expressed in radians (rad).longitude
- longitude NED coordinate expressed in radians (rad).height
- height NED coordinate expressed in meters (m).- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
setNedPosition
public void setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, double height) throws com.irurueta.navigation.LockedException Sets current body position expressed in NED coordinates.- Parameters:
latitude
- latitude NED coordinate.longitude
- longitude NED coordinate.height
- height NED coordinate expressed in meters (m).- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
setNedPosition
public void setNedPosition(com.irurueta.units.Angle latitude, com.irurueta.units.Angle longitude, com.irurueta.units.Distance height) throws com.irurueta.navigation.LockedException Sets current body position expressed in NED coordinates.- Parameters:
latitude
- latitude NED coordinate.longitude
- longitude NED coordinate.height
- height NED coordinate.- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
getEcefC
public com.irurueta.navigation.frames.CoordinateTransformation getEcefC()Gets current body orientation as a transformation from body to ECEF coordinates. Notice that returned orientation refers to ECEF Earth axes, which means that orientation is not relative to the ground or horizon at current body position. Typically it is more convenient to usegetNedC()
to obtain orientation relative to the ground or horizon at current body position. For instance, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.- Returns:
- current body orientation resolved on ECEF axes.
-
getNedC
public com.irurueta.navigation.frames.CoordinateTransformation getNedC()Gets current body orientation as a transformation from body to NED coordinates. Notice that returned orientation refers to current local position. This means that two equal NED orientations will transform into different ECEF orientations if the body is located at different positions. As a reference, on Android devices a NED orientation with Euler angles (roll = 0, pitch = 0, yaw = 0) means that the device is laying flat on a horizontal surface with the screen facing down towards the ground.- Returns:
- current body orientation resolved on NED axes.
-
getListener
Gets listener to handle events raised by this estimator.- Returns:
- listener to handle events raised by this estimator.
-
getLastBodyKinematics
Gets last provided body kinematics values or null if not available.- Returns:
- last provided body kinematics values or null.
-
getBiasFx
public double getBiasFx()Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).- Returns:
- bias of x coordinate of sensed specific force.
-
getBiasFxAsAcceleration
public com.irurueta.units.Acceleration getBiasFxAsAcceleration()Gets estimated bias of x coordinate of accelerometer sensed specific force.- Returns:
- bias of x coordinate of sensed specific force.
-
getBiasFxAsAcceleration
public void getBiasFxAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated bias of x coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where bias of x coordinate of sensed specific force will be stored.
-
getBiasFy
public double getBiasFy()Gets estimated bias of x coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).- Returns:
- bias of y coordinate of sensed specific force.
-
getBiasFyAsAcceleration
public com.irurueta.units.Acceleration getBiasFyAsAcceleration()Gets estimated bias of y coordinate of accelerometer sensed specific force.- Returns:
- bias of y coordinate of sensed specific force.
-
getBiasFyAsAcceleration
public void getBiasFyAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated bias of y coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where bias of y coordinate of sensed specific force will be stored.
-
getBiasFz
public double getBiasFz()Gets estimated bias of z coordinate of accelerometer sensed specific force expressed in meters per squared second (m/s^2).- Returns:
- bias of z coordinate of sensed specific force.
-
getBiasFzAsAcceleration
public com.irurueta.units.Acceleration getBiasFzAsAcceleration()Gets estimated bias of z coordinate of accelerometer sensed specific force.- Returns:
- bias of z coordinate of sensed specific force.
-
getBiasFzAsAcceleration
public void getBiasFzAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated bias of z coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where bias of z coordinate of sensed specific force will be stored.
-
getBiasAngularRateX
public double getBiasAngularRateX()Gets estimated bias of x coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).- Returns:
- bias of x coordinate of sensed angular rate.
-
getBiasAngularRateXAsAngularSpeed
public com.irurueta.units.AngularSpeed getBiasAngularRateXAsAngularSpeed()Gets estimated bias of x coordinate of gyroscope sensed angular rate.- Returns:
- bias of x coordinate of sensed angular rate.
-
getBiasAngularRateXAsAngularSpeed
public void getBiasAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated bias of x coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where bias of x coordinate of sensed angular rate will be stored.
-
getBiasAngularRateY
public double getBiasAngularRateY()Gets estimated bias of y coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).- Returns:
- bias of y coordinate of sensed angular rate.
-
getBiasAngularRateYAsAngularSpeed
public com.irurueta.units.AngularSpeed getBiasAngularRateYAsAngularSpeed()Gets estimated bias of y coordinate of gyroscope sensed angular rate.- Returns:
- bias of y coordinate of sensed angular rate.
-
getBiasAngularRateYAsAngularSpeed
public void getBiasAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated bias of y coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where bias of y coordinate of sensed angular rate will be stored.
-
getBiasAngularRateZ
public double getBiasAngularRateZ()Gets estimated bias of z coordinate of gyroscope sensed angular rate expressed in radians per second (rad/s).- Returns:
- bias of z coordinate of sensed angular rate.
-
getBiasAngularRateZAsAngularSpeed
public com.irurueta.units.AngularSpeed getBiasAngularRateZAsAngularSpeed()Gets estimated bias of z coordinate of gyroscope sensed angular rate.- Returns:
- bias of z coordinate of sensed angular rate.
-
getBiasAngularRateZAsAngularSpeed
public void getBiasAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated bias of z coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where bias of z coordinate of sensed angular rate will be stored.
-
getBiasF
Gets estimated bias of accelerometer sensed specific force.- Returns:
- estimated bias of accelerometer sensed specific force.
-
getBiasAngularRate
Gets estimated bias of gyroscope sensed angular rate.- Returns:
- estimated bias of gyroscope sensed angular rate.
-
getBiasesAsBodyKinematics
Gets body kinematics containing estimated bias values for accelerometer and gyroscope.- Returns:
- body kinematics containing estimated bias values.
-
getVarianceFx
public double getVarianceFx()Gets estimated variance of x coordinate of accelerometer sensed specific force expressed in (m^2/s^4).- Returns:
- estimated variance of x coordinate of sensed specific force.
-
getVarianceFy
public double getVarianceFy()Gets estimated variance of y coordinate of accelerometer sensed specific force expressed in (m^2/s^4).- Returns:
- estimated variance of y coordinate of sensed specific force.
-
getVarianceFz
public double getVarianceFz()Gets estimated variance of z coordinate of accelerometer sensed specific force expressed in (m^2/s^4).- Returns:
- estimated variance of z coordinate of sensed specific force.
-
getVarianceAngularRateX
public double getVarianceAngularRateX()Gets estimated variance of x coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).- Returns:
- estimated variance of x coordinate of sensed angular rate.
-
getVarianceAngularRateY
public double getVarianceAngularRateY()Gets estimated variance of y coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).- Returns:
- estimated variance of y coordinate of sensed angular rate.
-
getVarianceAngularRateZ
public double getVarianceAngularRateZ()Gets estimated variance of z coordinate of gyroscope sensed angular rate expressed in (rad^2/s^2).- Returns:
- estimated variance of z coordinate of sensed angular rate.
-
getStandardDeviationFx
public double getStandardDeviationFx()Gets estimated standard deviation of x coordinate of accelerometer sensed specific force expressed in (m/s^2).- Returns:
- estimated standard deviation of x coordinate of sensed specific force.
-
getStandardDeviationFxAsAcceleration
public com.irurueta.units.Acceleration getStandardDeviationFxAsAcceleration()Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.- Returns:
- estimated standard deviation of x coordinate of sensed specific force.
-
getStandardDeviationFxAsAcceleration
public void getStandardDeviationFxAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated standard deviation of x coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where estimated standard deviation of x coordinate of sensed specific force will be stored.
-
getStandardDeviationFy
public double getStandardDeviationFy()Gets estimated standard deviation of y coordinate of accelerometer sensed specific force expressed in (m/s^2).- Returns:
- estimated standard deviation of y coordinate of sensed specific force.
-
getStandardDeviationFyAsAcceleration
public com.irurueta.units.Acceleration getStandardDeviationFyAsAcceleration()Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.- Returns:
- estimated standard deviation of y coordinate of sensed specific force.
-
getStandardDeviationFyAsAcceleration
public void getStandardDeviationFyAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated standard deviation of y coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where estimated standard deviation of y coordinate of sensed specific force will be stored.
-
getStandardDeviationFz
public double getStandardDeviationFz()Gets estimated standard deviation of z coordinate of accelerometer sensed specific force expressed in (m/s^2).- Returns:
- estimated standard deviation of z coordinate of sensed specific force.
-
getStandardDeviationFzAsAcceleration
public com.irurueta.units.Acceleration getStandardDeviationFzAsAcceleration()Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.- Returns:
- estimated standard deviation of z coordinate of sensed specific force.
-
getStandardDeviationFzAsAcceleration
public void getStandardDeviationFzAsAcceleration(com.irurueta.units.Acceleration result) Gets estimated standard deviation of z coordinate of accelerometer sensed specific force.- Parameters:
result
- instance where estimated standard deviation of z coordinate of sensed specific force will be stored.
-
getStandardDeviationF
Gets estimated standard deviation of accelerometer sensed specific force.- Returns:
- estimated standard deviation of accelerometer
-
getAverageAccelerometerStandardDeviation
public double getAverageAccelerometerStandardDeviation()Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates expressed in meters per squared second (m/s^2).- Returns:
- average of estimated standard deviation of accelerometer.
-
getAverageAccelerometerStandardDeviationAsAcceleration
public com.irurueta.units.Acceleration getAverageAccelerometerStandardDeviationAsAcceleration()Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.- Returns:
- average of estimated standard deviation of accelerometer.
-
getAverageAccelerometerStandardDeviationAsAcceleration
public void getAverageAccelerometerStandardDeviationAsAcceleration(com.irurueta.units.Acceleration result) Gets average of estimated standard deviation of accelerometer sensed specific force for all coordinates.- Parameters:
result
- instance where result data will be copied to.
-
getStandardDeviationAngularRateX
public double getStandardDeviationAngularRateX()Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate expressed in (rad/s).- Returns:
- estimated standard deviation of x coordinate of sensed angular rate.
-
getStandardDeviationAngularRateXAsAngularSpeed
public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateXAsAngularSpeed()Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.- Returns:
- estimated standard deviation of x coordinate of sensed angular rate.
-
getStandardDeviationAngularRateXAsAngularSpeed
public void getStandardDeviationAngularRateXAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of x coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where estimated standard deviation of x coordinate of sensed angular rate will be stored.
-
getStandardDeviationAngularRateY
public double getStandardDeviationAngularRateY()Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate expressed in (rad/s).- Returns:
- estimated standard deviation of y coordinate of sensed angular rate.
-
getStandardDeviationAngularRateYAsAngularSpeed
public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateYAsAngularSpeed()Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.- Returns:
- estimated standard deviation of y coordinate of sensed angular rate.
-
getStandardDeviationAngularRateYAsAngularSpeed
public void getStandardDeviationAngularRateYAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of y coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where estimated standard deviation of y coordinate of sensed angular rate will be stored.
-
getStandardDeviationAngularRateZ
public double getStandardDeviationAngularRateZ()Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate expressed in (rad/s).- Returns:
- estimated standard deviation of z coordinate of sensed angular rate.
-
getStandardDeviationAngularRateZAsAngularSpeed
public com.irurueta.units.AngularSpeed getStandardDeviationAngularRateZAsAngularSpeed()Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.- Returns:
- estimated standard deviation of z coordinate of sensed angular rate.
-
getStandardDeviationAngularRateZAsAngularSpeed
public void getStandardDeviationAngularRateZAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets estimated standard deviation of z coordinate of gyroscope sensed angular rate.- Parameters:
result
- instance where estimated standard deviation of z coordinate of sensed angular rate will be stored.
-
getStandardDeviationAngularRate
Gets estimated standard deviation of sensed angular rate.- Returns:
- estimated standard deviation of sensed angular rate.
-
getAverageGyroscopeStandardDeviation
public double getAverageGyroscopeStandardDeviation()Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates expressed in radians per second (rad/s).- Returns:
- average of estimated standard deviation of gyroscope.
-
getAverageGyroscopeStandardDeviationAsAngularSpeed
public com.irurueta.units.AngularSpeed getAverageGyroscopeStandardDeviationAsAngularSpeed()Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.- Returns:
- average of estimated standard deviation of gyroscope.
-
getAverageGyroscopeStandardDeviationAsAngularSpeed
public void getAverageGyroscopeStandardDeviationAsAngularSpeed(com.irurueta.units.AngularSpeed result) Gets average of estimated standard deviation of gyroscope sensed angular rate for all coordinates.- Parameters:
result
- instance where result data will be copied to.
-
getStandardDeviationsAsBodyKinematics
Gets estimated standard deviations of accelerometer and gyroscope components as a body kinematics instance.- Returns:
- a body kinematics instance containing standard deviation values.
-
getPSDFx
public double getPSDFx()Gets accelerometer noise PSD (Power Spectral Density) on x axis expressed in (m^2 * s^-3).- Returns:
- accelerometer noise PSD on x axis.
-
getPSDFy
public double getPSDFy()Gets accelerometer noise PSD (Power Spectral Density) on y axis expressed in (m^2 * s^-3).- Returns:
- accelerometer noise PSD on y axis.
-
getPSDFz
public double getPSDFz()Gets accelerometer noise PSD (Power Spectral Density) on z axis expressed in (m^2 * s^-3).- Returns:
- accelerometer noise PSD on z axis.
-
getPSDAngularRateX
public double getPSDAngularRateX()Gets gyroscope noise PSD (Power Spectral Density) on x axis expressed in (rad^2/s).- Returns:
- gyroscope noise PSD on x axis.
-
getPSDAngularRateY
public double getPSDAngularRateY()Gets gyroscope noise PSD (Power Spectral Density) on y axis expressed in (rad^2/s).- Returns:
- gyroscope noise PSD on y axis.
-
getPSDAngularRateZ
public double getPSDAngularRateZ()Gets gyroscope noise PSD (Power Spectral Density) on z axis expressed in (rad^2/s).- Returns:
- gyroscope noise PSD on z axis.
-
getRootPSDFx
public double getRootPSDFx()Gets accelerometer noise root PSD (Power Spectral Density) on x axis expressed in (m * s^-1.5).- Returns:
- accelerometer noise root PSD on x axis.
-
getRootPSDFy
public double getRootPSDFy()Gets accelerometer noise root PSD (Power Spectral Density) on y axis expressed in (m * s^-1.5).- Returns:
- accelerometer noise root PSD on y axis.
-
getRootPSDFz
public double getRootPSDFz()Gets accelerometer noise root PSD (Power Spectral Density) on z axis expressed in (m * s^-1.5).- Returns:
- accelerometer noise root PSD on z axis.
-
getRootPSDAngularRateX
public double getRootPSDAngularRateX()Gets gyroscope noise root PSD (Power Spectral Density) on x axis expressed in (rad * s^-0.5).- Returns:
- gyroscope noise root PSD on x axis.
-
getRootPSDAngularRateY
public double getRootPSDAngularRateY()Gets gyroscope noise root PSD (Power Spectral Density) on y axis expressed in (rad * s^-0.5).- Returns:
- gyroscope noise root PSD on y axis.
-
getRootPSDAngularRateZ
public double getRootPSDAngularRateZ()Gets gyroscope noise root PSD (Power Spectral Density) on z axis expressed in (rad * s^-0.5).- Returns:
- gyroscope noise root PSD on z axis.
-
getAccelerometerNoisePSD
public double getAccelerometerNoisePSD()Gets average accelerometer noise PSD (Power Spectral Density) among x,y,z components expressed as (m^2/s^3).- Returns:
- average accelerometer noise PSD.
-
getAccelerometerNoiseRootPSD
public double getAccelerometerNoiseRootPSD()Gets accelerometer noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed as (m * s^-1.5).- Returns:
- average accelerometer noise root PSD.
-
getGyroNoisePSD
public double getGyroNoisePSD()Gets average gyroscope noise PSD (Power Spectral Density) among x,y,z components expressed in (rad^2/s).- Returns:
- average gyroscope noise PSD.
-
getGyroNoiseRootPSD
public double getGyroNoiseRootPSD()Gets gyroscope noise root PSD (Power Spectral Density) which is the norm of root PSD components expressed in (rad * s^-0.5).- Returns:
- average gyroscope noise root PSD.
-
getAccelerometerBias
public com.irurueta.algebra.Matrix getAccelerometerBias()Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.- Returns:
- estimated bias of accelerometer sensed specific force.
-
getAccelerometerBias
public void getAccelerometerBias(com.irurueta.algebra.Matrix result) Gets estimated bias of accelerometer sensed specific force expressed in meters per squared second (m/s^2) as a 3x1 matrix column vector.- Parameters:
result
- instance where data will be copied to. Must be 3x1.- Throws:
IllegalArgumentException
- if provided result matrix is not 3x1.
-
getGyroBias
public com.irurueta.algebra.Matrix getGyroBias()Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.- Returns:
- estimated bias of gyroscope sensed angular rates.
-
getGyroBias
public void getGyroBias(com.irurueta.algebra.Matrix result) Gets estimated bias of gyroscope sensed angular rates expressed in radians per second (rad/s) as a 3x1 matrix column vector.- Parameters:
result
- instance where data will be copied to. Must be 3x1.- Throws:
IllegalArgumentException
- if provided result matrix is not 3x1.
-
getNumberOfProcessedSamples
public int getNumberOfProcessedSamples()Gets number of samples that have been processed so far.- Returns:
- number of samples that have been processed so far.
-
getElapsedTimeSeconds
public double getElapsedTimeSeconds()Gets amount of total elapsed time since first processed measurement expressed in seconds (s).- Returns:
- amount of total elapsed time.
-
getElapsedTime
public com.irurueta.units.Time getElapsedTime()Gets amount of total elapsed time since first processed measurement.- Returns:
- amount of total elapsed time.
-
getElapsedTime
public void getElapsedTime(com.irurueta.units.Time result) Gets amount of total elapsed time since first processed measurement.- Parameters:
result
- instance where result will be stored.
-
isRunning
public boolean isRunning()Indicates whether estimator is currently running or not.- Returns:
- true if estimator is running, false otherwise.
-
getExpectedKinematics
Gets theoretically expected body kinematics for provided body position and orientation, and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.- Returns:
- expected body kinematics.
-
reset
public boolean reset() throws com.irurueta.navigation.LockedExceptionResets current estimator.- Returns:
- true if estimator was successfully reset, false if no reset was needed.
- Throws:
com.irurueta.navigation.LockedException
- if estimator is currently running.
-
convertTime
private static double convertTime(com.irurueta.units.Time time) Converts provided time instance to seconds.- Parameters:
time
- instance to be converted.- Returns:
- obtained conversion in seconds.
-
rebuildExpectedKinematics
private void rebuildExpectedKinematics()Rebuilds expected theoretical kinematics for provided body position and orientation and provided time interval, assuming that body remains at the same position (zero velocity). When body remains static, sensed specific force and angular rates will remain constant due to gravity and Earth rotation.
-