DoubleFusedGeomagneticAttitudeEstimator

Estimates a fused absolute attitude, where accelerometer + magnetometer measurements are fused with relative attitude obtained from gyroscope ones. This is equivalent to FusedGeomagneticAttitudeEstimator with an additional filtering layer, which requires additional cpu usage.

Constructors

Link copied to clipboard
constructor(context: Context, location: Location? = null, sensorDelay: SensorDelay = SensorDelay.GAME, useAccelerometer: Boolean = true, accelerometerSensorType: AccelerometerSensorType = AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, magnetometerSensorType: MagnetometerSensorType = MagnetometerSensorType.MAGNETOMETER_UNCALIBRATED, accelerometerAveragingFilter: AveragingFilter = LowPassAveragingFilter(), gyroscopeSensorType: GyroscopeSensorType = GyroscopeSensorType.GYROSCOPE_UNCALIBRATED, worldMagneticModel: WorldMagneticModel? = null, timestamp: Date = Date(), useWorldMagneticModel: Boolean = false, useAccurateLevelingEstimator: Boolean = false, useAccurateRelativeGyroscopeAttitudeEstimator: Boolean = true, estimateCoordinateTransformation: Boolean = false, estimateEulerAngles: Boolean = true, attitudeAvailableListener: DoubleFusedGeomagneticAttitudeEstimator.OnAttitudeAvailableListener? = null, accelerometerMeasurementListener: AccelerometerSensorCollector.OnMeasurementListener? = null, gravityMeasurementListener: GravitySensorCollector.OnMeasurementListener? = null, gyroscopeMeasurementListener: GyroscopeSensorCollector.OnMeasurementListener? = null, magnetometerMeasurementListener: MagnetometerSensorCollector.OnMeasurementListener? = null, gravityEstimationListener: GravityEstimator.OnEstimationListener? = null)

Constructor.

Types

Link copied to clipboard
object Companion
Link copied to clipboard

Interface to notify when a new attitude measurement is available.

Properties

Link copied to clipboard

an averaging filter for accelerometer samples to obtain sensed gravity component of specific force. (Only used if useAccelerometer is true).

Link copied to clipboard

Listener to notify new accelerometer measurements. (Only used if useAccelerometer is true).

Link copied to clipboard

One of the supported accelerometer sensor types. (Only used if useAccelerometer is true).

Link copied to clipboard

listener to notify when a new attitude measurement is available.

Link copied to clipboard
open override val context: Context

Android context.

Link copied to clipboard

true to estimate coordinate transformation, false otherwise. If not needed, it can be disabled to improve performance and decrease cpu load.

Link copied to clipboard
open override val estimateEulerAngles: Boolean

true to estimate euler angles, false otherwise. If not needed, it can be disabled to improve performance and decrease cpu load.

Link copied to clipboard

Listener to notify when a new gravity estimation is available.

Link copied to clipboard

listener to notify new gravity measurements. (Only used if useAccelerometer is false).

Link copied to clipboard

Gets average time interval between gyroscope samples expressed in seconds.

Link copied to clipboard

Listener to notify new gyroscope measurements.

Link copied to clipboard

One of the supported gyroscope sensor types.

Link copied to clipboard

Factor to take into account when interpolation value is computed and useIndirectInterpolation is enabled to determine actual interpolation value based on current relative attitude rotation velocity.

Link copied to clipboard
open override var interpolationValue: Double

Interpolation value to be used to combine both geomagnetic and relative attitudes. Must be between 0.0 and 1.0 (both included). The closer to 0.0 this value is, the more resemblance the result will have to a pure geomagnetic (which feels more jerky when using accelerometer). On the contrary, the closer to 1.0 this value is, the more resemblance the result will have to a pure non-leveled relative attitude (which feels softer but might have arbitrary roll pitch and yaw Euler angles).

Link copied to clipboard
open override var location: Location?

Gets or sets device location

Link copied to clipboard

Listener to notify new magnetometer measurements.

Link copied to clipboard

One of the supported magnetometer sensor types.

Link copied to clipboard
open override var outlierPanicThreshold: Double

Threshold to determine that geomagnetic attitude has largely diverged and if situation is not reverted soon, attitude will be reset to geomagnetic one.

Link copied to clipboard
open override var outlierThreshold: Double

Threshold to determine that current geomagnetic attitude appears to be an outlier respect to estimated fused attitude. When geomagnetic attitude and fused attitudes diverge, fusion is not performed, and instead only gyroscope relative attitude is used for fusion estimation.

Link copied to clipboard
open override var panicCounterThreshold: Int

Threshold to determine when fused attitude has largely diverged for a given number of samples and must be reset.

Link copied to clipboard
open override var running: Boolean

Indicates whether this estimator is running or not.

Link copied to clipboard
open override val sensorDelay: SensorDelay

Delay of sensors between samples.

Link copied to clipboard
open override var timestamp: Date

Timestamp when World Magnetic Model will be evaluated to obtain current. Only taken into account if useWorldMagneticModel is tue.

Link copied to clipboard
open override val useAccelerometer: Boolean

true to use accelerometer sensor, false to use system gravity sensor for leveling purposes.

Link copied to clipboard

Indicates whether accurate leveling must be used or not.

Indicates whether accurate non-leveled relative attitude estimator must be used or not.

Link copied to clipboard

Indicates whether fusion between leveling and relative attitudes occurs based on changing interpolation value that depends on actual relative attitude rotation velocity.

Link copied to clipboard
open override var useWorldMagneticModel: Boolean

Indicates whether world magnetic model is taken into account to adjust attitude yaw angle by current magnetic declination based on current World Magnetic Model, location and timestamp.

Link copied to clipboard
open override var worldMagneticModel: WorldMagneticModel?

Earth's magnetic model. If null, the default model is used if useWorldMagneticModel is true. If useWorldMagneticModel is false, this is ignored.

Functions

Link copied to clipboard
open override fun start(): Boolean

Starts this estimator.

Link copied to clipboard
open override fun stop()

Stops this estimator.