Package-level declarations

Types

Estimates leveled absolute attitude using accelerometer and magnetometer sensors. Roll and pitch Euler angles are leveled using accelerometer sensor. Yaw angle is obtained from magnetometer once the leveling is estimated.

Link copied to clipboard
class AccelerometerGravityProcessor(val averagingFilter: AveragingFilter = LowPassAveragingFilter(), location: Location? = null, adjustGravityNorm: Boolean = true, processorListener: BaseGravityProcessor.OnProcessedListener<AccelerometerSensorMeasurement>? = null) : BaseGravityProcessor<AccelerometerSensorMeasurement>

Collects accelerometer measurements based on android coordinates system (ENU) and uses a low-pass filter to assume it is the gravity component of specific force and converts it to NED coordinates system.

Estimates leveled relative attitude by fusing leveling attitude obtained from accelerometer sensor, and relative attitude obtained from gyroscope sensor.

Link copied to clipboard

Estimates leveling of device (roll and pitch angle) by using estimated gravity vector. This processor does not estimate attitude yaw angle, as either a magnetometer or gyroscope would be needed. This estimator is more accurate than LevelingEstimator since it takes into account device location (which requires location permission), and at the expense of higher CPU load.

Estimates relative attitude of device respect to an arbitrary initial attitude using gyroscope measurements only. This processor uses Runge-Kutta integration to obtain greater accuracy than RelativeGyroscopeAttitudeProcessor at the expense of additional cpu usage.

Link copied to clipboard

Approximately computes matrix that relates previous and predicted Kalman filter state by assuming short time intervals and approximating the exponential of process equation matrix by the first term of its Taylor expansion series.

Approximately integrates continuous time process noise covariance matrix.

Link copied to clipboard
class AttitudeProcessor(var processorListener: AttitudeProcessor.OnProcessedListener? = null)

Processes an absolute or relative attitude obtained by an Android Sensor expressed in ENU coordinates system and converts it to NED coordinates system.

Base class to estimate absolute attitude by fusing absolute leveled geomagnetic attitude and leveled relative attitude.

Link copied to clipboard

Base class to estimate absolute attitude by fusing absolute leveled geomagnetic attitude and relative attitude.

Link copied to clipboard

Base class to estimate leveled absolute attitude using accelerometer (or gravity) and magnetometer sensors. Roll and pitch Euler angles are leveled using accelerometer or gravity sensors. Yaw angle is obtained from magnetometer once the leveling is estimated.

Link copied to clipboard
abstract class BaseGravityProcessor<T : SensorMeasurement<T>>(var location: Location?, var adjustGravityNorm: Boolean, var processorListener: BaseGravityProcessor.OnProcessedListener<T>?)

Base class for a gravity processor. Collects accelerometer or gravity sensor measurements and processed them and converts them to NED coordinates.

Link copied to clipboard

Base class to estimate leveled relative attitude by fusing leveling attitude obtained from accelerometer or gravity sensors, and relative attitude obtained from gyroscope sensor.

Link copied to clipboard

Base class to estimate leveling of device (roll and pitch angle) by using estimated gravity vector.

Link copied to clipboard

Base class to estimate relative attitude of device respect to an arbitrary initial attitude using gyroscope measurements only.

Link copied to clipboard
class BetterProcessNoiseCovarianceIntegrator(q: Matrix? = null, a: Matrix? = null) : ProcessNoiseCovarianceIntegrator

Better approximation to integrate continuous time process noise covariance matrix.

abstract class ExternalAccelerationCovarianceMatrixEstimator(val accelerometerNoiseStandardDeviation: Double)

Estimates external acceleration covariance matrix.

Link copied to clipboard

Estimates leveled absolute attitude using gravity and magnetometer sensors. Roll and pitch Euler angles are leveled using gravity sensor. Yaw angle is obtained from magnetometer once the leveling is estimated.

Link copied to clipboard

Collects gravity measurements based on android coordinates system (ENU), and converts them to NED coordinates system.

Link copied to clipboard
class KalmanAbsoluteAttitudeProcessor(val computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeQuaternionCovariance: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val computeAccelerometerCovariance: Boolean = true, val computeRotationAxisCovariance: Boolean = true, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val magnetometerNoiseStandardDeviation: Double = DEFAULT_MAGNETOMETER_NOISE_STANDARD_DEVIATION, val quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegrator.DEFAULT_TYPE, val gravityNorm: Double = EARTH_GRAVITY, val freeFallThreshold: Double = DEFAULT_FREE_FALL_THRESHOLD, val symmetricThreshold: Double = SYMMETRIC_THRESHOLD, var processorListener: KalmanAbsoluteAttitudeProcessor.OnProcessedListener? = null, var numericalInstabilitiesListener: KalmanAbsoluteAttitudeProcessor.OnNumericalInstabilitiesDetectedListener? = null)

Estimates absolute attitude using a Kalman filter. This is based on Android native implementation: https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp And also based on: https://www.mdpi.com/1424-8220/20/23/6731

Link copied to clipboard
class KalmanAbsoluteAttitudeProcessor2(averagingFilter: AveragingFilter = LowPassAveragingFilter(), location: Location? = null, adjustGravityNorm: Boolean = true, val computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeQuaternionCovariance: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val computeAccelerometerCovariance: Boolean = true, val computeRotationAxisCovariance: Boolean = true, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val magnetometerNoiseStandardDeviation: Double = DEFAULT_MAGNETOMETER_NOISE_STANDARD_DEVIATION, val quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegrator.DEFAULT_TYPE, val freeFallThreshold: Double = DEFAULT_FREE_FALL_THRESHOLD, val symmetricThreshold: Double = SYMMETRIC_THRESHOLD, var processorListener: KalmanAbsoluteAttitudeProcessor2.OnProcessedListener? = null, var numericalInstabilitiesListener: KalmanAbsoluteAttitudeProcessor2.OnNumericalInstabilitiesDetectedListener? = null)

Estimates absolute attitude using a Kalman filter. This is based on Android native implementation: https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp And also based on: https://www.mdpi.com/1424-8220/20/23/6731

Link copied to clipboard
class KalmanAbsoluteAttitudeProcessor3(location: Location? = null, var currentDate: Date? = null, var currentTemperature: Double = DEFAULT_TEMPERATURE_CELSIUS, val computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeEcefAttitudeCovariance: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val computeEcefAccelerationCovariance: Boolean = true, val computeNedRotationAxisCovariance: Boolean = true, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, magnetometerNoiseStandardDeviation: Double = DEFAULT_MAGNETOMETER_NOISE_STANDARD_DEVIATION, temperatureStandardDeviation: Double = DEFAULT_TEMPERATURE_NOISE_STANDARD_DEVIATION, quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegrator.DEFAULT_TYPE, val freeFallThreshold: Double = DEFAULT_FREE_FALL_THRESHOLD, val symmetricThreshold: Double = SYMMETRIC_THRESHOLD, val processorListener: KalmanAbsoluteAttitudeProcessor3.OnProcessedListener? = null, val numericalInstabilitiesListener: KalmanAbsoluteAttitudeProcessor3.OnNumericalInstabilitiesDetectedListener? = null)

Class.

Link copied to clipboard
class KalmanAbsoluteAttitudeProcessor4(location: Location? = null, var currentDate: Date? = null, var computeExternalAcceleration: Boolean = true, var computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val fixMagnetometerMeasurements: Boolean = true, phiMatrixMethod: PhiMatrixMethod = PhiMatrixMethod.APPROXIMATED, processNoiseCovarianceMethod: ProcessNoiseCovarianceMethod = ProcessNoiseCovarianceMethod.BETTER, quaternionStepIntegrator: KalmanAbsoluteAttitudeProcessor4.QuaternionStepIntegratorType = QuaternionStepIntegratorType.RUNGE_KUTTA, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val magnetometerNoiseStandardDeviation: Double = DEFAULT_MAGNETOMETER_NOISE_STANDARD_DEVIATION, val processorListener: KalmanAbsoluteAttitudeProcessor4.OnProcessedListener? = null)

Estimates absolute attitude using a Kalman filter. This is based on: https://github.com/liviobisogni/quaternion-kalman-filter And: Young Soo Suh. Orientation estimation using a quaternion-based indirect Kalman filter with adaptive estimation of external acceleration.

Link copied to clipboard
class KalmanAbsoluteAttitudeProcessor5(location: Location? = null, var currentDate: Date? = null, var computeExternalAcceleration: Boolean = true, var computeEulerAngles: Boolean = true, var computeCovariances: Boolean = true, var computeEulerAnglesCovariance: Boolean = true, phiMatrixMethod: PhiMatrixMethod = PhiMatrixMethod.APPROXIMATED, processNoiseCovarianceMethod: ProcessNoiseCovarianceMethod = ProcessNoiseCovarianceMethod.BETTER, quaternionStepIntegrator: QuaternionStepIntegratorType = QuaternionStepIntegratorType.SUH, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val magnetometerNoiseStandardDeviation: Double = DEFAULT_MAGNETOMETER_NOISE_STANDARD_DEVIATION, externalAccelerationCovarianceMatrixEstimationMethod: ExternalAccelerationCovarianceMatrixEstimationMethod = DEFAULT_EXTERNAL_ACCELERATION_COVARIANCE_MATRIX_ESTIMATION_METHOD, val processorListener: KalmanAbsoluteAttitudeProcessor5.OnProcessedListener? = null)

Estimates absolute attitude using a Kalman filter. This is based on: https://github.com/liviobisogni/quaternion-kalman-filter And: Young Soo Suh. Orientation estimation using a quaternion-based indirect Kalman filter with adaptive estimation of external acceleration.

Link copied to clipboard
class KalmanAccelerometerCorrector(val externalAccelerationCovarianceMatrixEstimationMethod: ExternalAccelerationCovarianceMatrixEstimationMethod = DEFAULT_EXTERNAL_ACCELERATION_COVARIANCE_MATRIX_ESTIMATION_METHOD)

Corrects Kalman state from accelerometer measurement.

Link copied to clipboard
class KalmanGyroscopePredictor(phiMatrixMethod: PhiMatrixMethod = PhiMatrixMethod.APPROXIMATED, processNoiseCovarianceMethod: ProcessNoiseCovarianceMethod = ProcessNoiseCovarianceMethod.BETTER, quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegratorType.RUNGE_KUTTA, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD)

Predicts next Kalman filter state based on current gyroscope measurement.

Link copied to clipboard

Corrects Kalman state from magnetometer measurement.

Link copied to clipboard
class KalmanRelativeAttitudeProcessor(val computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeQuaternionCovariance: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val computeAccelerometerCovariance: Boolean = true, val computeRotationAxisCovariance: Boolean = true, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegrator.DEFAULT_TYPE, val gravityNorm: Double = EARTH_GRAVITY, val freeFallThreshold: Double = DEFAULT_FREE_FALL_THRESHOLD, val symmetricThreshold: Double = SYMMETRIC_THRESHOLD, var processorListener: KalmanRelativeAttitudeProcessor.OnProcessedListener? = null, var numericalInstabilitiesListener: KalmanRelativeAttitudeProcessor.OnNumericalInstabilitiesDetectedListener? = null)

Estimates relative attitude using a Kalman filter. This is based on Android native implementation: https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp And also based on: https://www.mdpi.com/1424-8220/20/23/6731

Link copied to clipboard
class KalmanRelativeAttitudeProcessor2(val averagingFilter: AveragingFilter = LowPassAveragingFilter(), location: Location? = null, adjustGravityNorm: Boolean = true, val computeEulerAngles: Boolean = true, val computeCovariances: Boolean = true, val computeQuaternionCovariance: Boolean = true, val computeEulerAnglesCovariance: Boolean = true, val computeAccelerometerCovariance: Boolean = true, val computeRotationAxisCovariance: Boolean = true, val gyroscopeNoisePsd: Double = DEFAULT_GYROSCOPE_NOISE_PSD, val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION, val quaternionStepIntegratorType: QuaternionStepIntegratorType = QuaternionStepIntegrator.DEFAULT_TYPE, val freeFallThreshold: Double = DEFAULT_FREE_FALL_THRESHOLD, val symmetricThreshold: Double = SYMMETRIC_THRESHOLD, var processorListener: KalmanRelativeAttitudeProcessor2.OnProcessedListener? = null, var numericalInstabilitiesListener: KalmanRelativeAttitudeProcessor2.OnNumericalInstabilitiesDetectedListener? = null)

Estimates relative attitude using a Kalman filter. This is based on Android native implementation: https://android.googlesource.com/platform/frameworks/native/+/refs/heads/master/services/sensorservice/Fusion.cpp And also based on: https://www.mdpi.com/1424-8220/20/23/6731

Link copied to clipboard

Estimates leveled relative attitude by fusing leveling attitude obtained from gravity sensor, and relative attitude obtained from gyroscope sensor.

Link copied to clipboard

Estimates leveling of device (roll and pitch angle) by using estimated gravity vector. This processor does not estimate attitude yaw angle, as either a magnetometer or gyroscope would be needed.

Link copied to clipboard
abstract class PhiMatrixEstimator(a: Matrix?)

Computes matrix that relates previous and predicted Kalman filter state.

Link copied to clipboard

Supported methods to estimate phi matrix relating previous and predicted Kalman filter state.

Link copied to clipboard

Computes matrix that relates previous and predicted Kalman filter state by computing a precise estimation of process equation matrix exponential.

Link copied to clipboard
class PreciseProcessNoiseCovarianceIntegrator(q: Matrix? = null, a: Matrix? = null, val integratorType: IntegratorType = MatrixIntegrator.DEFAULT_INTEGRATOR_TYPE, val quadratureType: QuadratureType = MatrixIntegrator.DEFAULT_QUADRATURE_TYPE) : ProcessNoiseCovarianceIntegrator

Integrates continuous time process noise covariance matrix.

Link copied to clipboard
abstract class ProcessNoiseCovarianceIntegrator(q: Matrix?, a: Matrix?)

Integrates continuous time process noise covariance matrix.

Link copied to clipboard

Supported methods to estimate process noise covariance matrix

Link copied to clipboard

Indicates type of quaternion integrator step. Different types exist with different levels of accuracy and computation accuracy.

Link copied to clipboard

Estimates relative attitude of device respect to an arbitrary initial attitude using gyroscope measurements only.

class SabatiniExternalAccelerationCovarianceMatrixEstimator(val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION) : ExternalAccelerationCovarianceMatrixEstimator

Estimates external acceleration covariance matrix using Sabatini's method.

class SuhExternalAccelerationCovarianceMatrixEstimator(val accelerometerNoiseStandardDeviation: Double = DEFAULT_ACCELEROMETER_NOISE_STANDARD_DEVIATION) : ExternalAccelerationCovarianceMatrixEstimator

Estimates external acceleration covariance matrix using Suh's method.