RelativePoseEstimator

Estimates pose with 6DOF (Degrees of Freedom) containing relative attitude from an unknown location.

Constructors

Link copied to clipboard
constructor(context: Context, sensorDelay: SensorDelay = SensorDelay.GAME, useAccelerometerForAttitudeEstimation: Boolean = false, accelerometerSensorType: AccelerometerSensorType = AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, gyroscopeSensorType: GyroscopeSensorType = GyroscopeSensorType.GYROSCOPE_UNCALIBRATED, accelerometerAveragingFilter: AveragingFilter = LowPassAveragingFilter(), useAccurateLevelingEstimator: Boolean = false, useAccurateRelativeGyroscopeAttitudeEstimator: Boolean = true, poseAvailableListener: RelativePoseEstimator.OnPoseAvailableListener? = null, accelerometerMeasurementListener: AccelerometerSensorCollector.OnMeasurementListener? = null, gyroscopeMeasurementListener: GyroscopeSensorCollector.OnMeasurementListener? = null, gravityEstimationListener: GravityEstimator.OnEstimationListener? = null, initialSpeed: SpeedTriad = SpeedTriad(), initialLocation: Location? = null)

Constructor.

Types

Link copied to clipboard

Interface to notify when a new pose is available.

Properties

Link copied to clipboard

an averaging filter for accelerometer samples to obtain sensed gravity component of specific force.

Link copied to clipboard

listener to notify new accelerometer measurements.

Link copied to clipboard

One of the supported accelerometer sensor types. It is suggested to avoid using non-calibrated accelerometers.

Link copied to clipboard

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

Link copied to clipboard

Interpolation value to be used to combine both leveling 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 leveling (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 and pitch Euler angles).

Link copied to clipboard

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

Link copied to clipboard
open override var attitudeOutlierThreshold: Double

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

Link copied to clipboard

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 val averageTimeInterval: Double

Gets average time interval between gyroscope samples expressed in seconds.

Link copied to clipboard
open override val context: Context

Android context.

Link copied to clipboard

Listener to notify when a new gravity estimation is available.

Link copied to clipboard

listener to notify new gyroscope measurements.

Link copied to clipboard

One of the supported gyroscope sensor types. It is suggested to avoid using non-calibrated gyroscopes.

Link copied to clipboard

Gets or sets device initial location when this estimator starts. Only when an initial location is provided useAccurateLevelingEstimator is actually taken into account, otherwise it is ignored.

Link copied to clipboard

Gets or sets initial device speed expressed in ENU body coordinates.

Link copied to clipboard

notifies when a new estimated pose is available.

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

true to use accelerometer sensor for attitude estimation, false to use system gravity sensor for leveling purposes. Regardless of this values, pose estimator always uses the accelerometer sensor, however, it can be used both for leveling and device motion, or only for device motion.

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.

Functions

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

Starts this estimator.

Link copied to clipboard
open override fun stop()

Stops this estimator.