Single Sensor Static Interval Accelerometer Calibrator
Collects accelerometer measurements by detecting periods when device remains static, and using such static periods, measurements are obtained to solve calibration parameters. This calibrator converts sensor measurements from device ENU coordinates to local plane NED coordinates. Thus, all values referring to a given x-y-z coordinates refers to local plane NED system of coordinates.
Constructors
Constructor.
Types
Interface to notify when initial bias guess is available. If isGroundTruthInitialBias is true, then initial bias is considered the true value after solving calibration, otherwise, initial bias is considered only an initial guess.
Interface to notify when gravity norm estimation is unreliable. This only happens if no location is provided and gravity sensor becomes unreliable.
Properties
Gets accelerometer sensor being used for interval detection. This can be used to obtain additional information about the sensor.
Gets estimated average of gravity norm expressed in meters per squared second (m/s^2). This is only available if no location is provided and initialization has completed.
Gets estimated average gravity norm as Acceleration. This is only available if no location is provided and initialization has completed.
Gets average time interval between magnetometer samples expressed in seconds (s). Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Gets average time interval between magnetometer samples. Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Gets sensor measurement base noise level that has been detected during initialization expressed in meters per squared second (m/s^2) for accelerometer or Teslas (T) for magnetometer. This is only available once initialization is completed.
Gets or sets overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase. Failure will be detected if estimated base noise level exceeds this threshold when initialization completes. This threshold is expressed in meters per squared second (m/s^2) for accelerometer or Teslas (T) for magnetometer.
Gets or sets overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase. Failure will be detected if estimated base noise level exceeds this threshold when initialization completes.
Gets sensor measurement base noise level that has been detected during initialization. This is only available once initialization is completed.
Gets measurement base noise level PSD (Power Spectral Density) expressed in (m^2 * s^-3) for accelerometer or (T^2 * s) for magnetometer. This is only available once initialization is completed.
Gets measurement base noise level root PSD (Power Spectral Density) expressed in (m * s^-1.5) for accelerometer or (T * s^0.5) for magnetometer. This is only available once initialization is completed.
listener to notify when calibration is successfully completed.
listener to notify when calibration solving starts.
listener to notify errors.
Gets estimated accelerometer bias. If isGroundTruthInitialBias is true, this will be equal to initialBiasAsTriad, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasAsTriad.
Gets norm of estimated standard deviation of accelerometer bias expressed in meters per squared second (m/s^2), or null if not available.
Gets x coordinate of estimated accelerometer bias expressed in meters per squared second (m/s^2). If isGroundTruthInitialBias is true, this will be equal to initialBiasX, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasX.
Gets x coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, this will be equal to initialBiasXAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasXAsMeasurement.
Gets y coordinate of estimated accelerometer bias expressed in meters per squared second (m/s^2). If isGroundTruthInitialBias is true, this will be equal to initialBiasY, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasY.
Gets y coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, this will be equal to initialBiasYAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasYAsMeasurement.
Gets z coordinate of estimated accelerometer bias expressed in meters per squared second (m/s^2). If isGroundTruthInitialBias is true, this will be equal to initialBiasZ, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasZ.
Gets z coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, this will be equal to initialBiasZAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasZAsMeasurement.
Gets estimated chi square value or null if not available.
Gets estimated covariance matrix for estimated accelerometer parameters or null if not available. When bias is known, diagonal elements of the covariance matrix contains variance for the following parameters (following indicated order): sx, sy, sz, mxy, mxz, myz, mzx, mzy. When bias is not known, diagonal elements of the covariance matrix contains variance for the following parameters (following indicated order): bx, by, bz, sx, sy, sz, mxy, mxz, myx, myz, mzx, mzy.
Gets estimated accelerometer scale factors and cross coupling errors, or null if not available. This is the product of matrix Ta containing cross coupling errors and Ka containing scaling factors. So tat:
Gets estimated mean square error respect to provided measurements or null if not available.
Gets estimated x-y cross-coupling error or null if not available.
Gets estimated x-z cross-coupling error or null if not available.
Gets estimated y-x cross-coupling error or null if not available.
Gets estimated y-z cross-coupling error or null if not available.
Gets estimated z-x cross-coupling error or null if not available.
Gets estimated z-y cross-coupling error or null if not available.
Gets estimated x-axis scale factor or null if not available.
Gets estimated y-axis scale factor or null if not available.
Gets estimated z-axis scale factor or null if not available.
Contains gravity norm (either obtained by the gravity sensor, or determined by current location using WGS84 Earth model). Expressed in meters per squared second (m/s^2).
Gets estimated standard deviation of gravity norm expressed in meters per squared second (m/s^2). This is only available if no location is provided and initialization has completed.
Gets estimated standard deviation of gravity norm as Acceleration. This is only available if no location is provided and initialization has completed.
Gets estimated variance of gravity norm expressed in (m^2/s^4). This is only available if no location is provided and initialization has completed.
Gets PSD (Power Spectral Density) of gravity norm expressed in (m^2 * s^-3). This is only available if no location is provided and initialization has completed.
Gets root PSD (Power Spectral Density) of gravity norm expressed in (m * s^-1.5). This is only available if no location is provided and initialization has completed.
Gets gravity sensor being used for gravity estimation. This can be used to obtain additional information about the sensor.
Gets initial bias coordinates used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the values used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasAsTriad will be equal to this value, otherwise estimatedBiasAsTriad will be the estimated bias after solving calibration, which will differ from estimatedBiasAsTriad.
listener to notify when a guess of bias values is obtained.
Gets X-coordinate of bias used as an initial guess and expressed in meters per squared second (m/s^2). This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasX will be equal to this value, otherwise estimatedBiasX will be the estimated bias after solving calibration, which will differ from estimatedBiasX.
Gets X-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasX will be equal to this value, otherwise estimatedBiasX will be the estimated bias after solving calibration, which will differ from estimatedBiasX.
Gets Y-coordinate of bias used as an initial guess and expressed in meters per squared second (m/s^2). This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasY will be equal to this value, otherwise estimatedBiasY will be the estimated bias after solving calibration, which will differ from estimatedBiasY.
Gets Y-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasY will be equal to this value, otherwise estimatedBiasY will be the estimated bias after solving calibration, which will differ from estimatedBiasY.
Gets Z-coordinate of bias used as an initial guess and expressed in meters per squared second (m/s^2). This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasZ will be equal to this value, otherwise estimatedBiasZ will be the estimated bias after solving calibration, which will differ from estimatedBiasZ.
Gets Z-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasZ will be equal to this value, otherwise estimatedBiasZ will be the estimated bias after solving calibration, which will differ from estimatedBiasZ.
listener to notify when initialization completes.
listener to notify when initialization starts.
Gets or sets initial x-y cross coupling error.
Gets or sets initial x-z cross coupling error.
Gets or sets initial y-x cross coupling error.
Gets or sets initial y-z cross coupling error.
Gets or sets initial z-x cross coupling error.
Gets or sets initial z-y cross coupling error.
Gets or sets number of samples to be processed initially by the internal interval detector while keeping the sensor static in order to find the base noise level when device is static.
Gets or sets factor to determine that a sudden movement has occurred during initialization if instantaneous noise level exceeds accumulated noise level by this factor amount. This factor is unit-less.
Indicates or specifies whether z-axis is assumed to be common for magnetometer and gyroscope. When enabled, this eliminates 3 variables from Ma matrix.
Indicates whether gravity norm is estimated during initialization. If location is provided, gravity is not estimated and instead theoretical gravity for provided location is used.
Indicates whether initial bias is considered a ground-truth known bias. When true, estimated biases are exactly equal to initial biases, otherwise initial biases are just an initial guess and estimated ones might differ after solving calibration.
Indicates whether enough measurements have been picked at static intervals so that the calibration process can be solved.
List of measurements that have been collected so far to be used for calibration. Items in return list can be modified if needed, but beware that this might have consequences on solved calibration result.
Gets minimum number of required measurements to start calibration. Each time that the device is kept static, a new measurement is collected. When the required number of measurements is collected, calibration can start.
listener to notify when a new calibration measurement is obtained.
mapper to convert collected measurements into quality scores, based on the amount of standard deviation (the larger the variability, the worse the score will be).
listener to notify when calibrator is ready to be solved.
Required number of measurements to be collected before calibration can start. The number of required measurements must be greater than minimumRequiredMeasurements, otherwise at least minimumRequiredMeasurements will be collected before calibration can start.
Indicates if result is unreliable. This can happen if no location is provided and gravity estimation becomes unreliable. When this happens result of calibration should probably be discarded.
Confidence of estimated result expressed as a value between 0.0 and 1.0. By default 99% of confidence is used, which indicates that with a probability of 99% estimation will be accurate because chosen sub-samples will be inliers (in other terms, outliers will be correctly discarded). This properly is only taken into account if a not-null robustMethod is specified.
Maximum number of iterations to attempt to find a robust calibration solution. By default this is 5000. This properly is only taken into account if a not-null robustMethod is specified.
Indicates robust method used to solve calibration. If null, no robust method is used at all, and instead an LMSE solution is found.
Size of preliminary subsets picked while finding a robust calibration solution. By default this is the minimumRequiredMeasurements, which results in the smallest number of iterations to complete robust algorithms. Larger values can be used to ensure that error in each preliminary solution is minimized among more measurements (thus, softening the effect of outliers), but this comes at the expense of larger number of iterations. This properly is only taken into account if a not-null robustMethod is specified.
Additional factor to be taken into account for robust methods based on LMedS or PROMedS, where factor is not directly related to LMSE, but to a smaller value.
Threshold to be used to determine whether a measurement is considered an outlier by robust algorithms or not. Threshold varies depending on chosen robustMethod. By default, if null is provided, the estimated baseNoiseLevel will be used to determine a suitable threshold. Otherwise, if a value is provided, such value will be used instead. This properly is only taken into account if a not-null robustMethod is specified.
Factor to be used respect estimated base noise level to consider a measurement an outlier when using robust calibration methods. By default this is 3.0 times baseNoiseLevel, which considering the noise level as the standard deviation of a Gaussian distribution, should account for 99% of the cases. Any measurement having an error greater than that in the estimated solution, will be considered an outlier and be discarded.
Delay of sensor between samples.
One of the supported accelerometer sensor types.
true to automatically solve calibration once enough measurements are available, false otherwise.
listener to notify when measurement collection stops.
Gets estimated threshold to determine static/dynamic period changes. This is only available once initialization is completed.
Gets or sets factor to be applied to detected base noise level in order to determine a threshold for static/dynamic period changes. This factor is unit-less.
Gets estimated standard deviation of time interval between measurements expressed in seconds (s). Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Gets estimated standard deviation of time interval between measurements. Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Gets estimated variance of time interval between measurements expressed in squared seconds (s^2). Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
listener to notify when gravity norm estimation becomes unreliable. This is only used if no location is provided.
Gets or sets length of number of samples to keep within the window being processed to determine instantaneous sensor noise level during initialization of the interval detector. Window size must always be larger than allowed minimum value, which is 2 and must have an odd value.
Functions
Solves calibration using collected measurements. This must be explicitly called after enough measurements are collected if solveCalibrationWhenEnoughMeasurements is false.
Gets estimated average gravity norm as Acceleration. This is only available if no location is provided and initialization has completed.
Gets average time interval between measurements. Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Gets overall absolute threshold to determine whether there has been excessive motion during the whole initialization phase. Failure will be detected if estimated base noise level exceeds this threshold when initialization completes.
Gets sensor measurement base noise level that has been detected during initialization. This is only available once initialization is completed.
Gets estimated accelerometer bias. If isGroundTruthInitialBias is true, result will be equal to initialBiasAsTriad, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasAsTriad.
Gets x coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, result will be equal to initialBiasXAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasXAsMeasurement.
Gets y coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, result will be equal to initialBiasYAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasYAsMeasurement.
Gets z coordinate of estimated accelerometer bias. If isGroundTruthInitialBias is true, result will be equal to initialBiasZAsMeasurement, otherwise it will be the estimated value obtained after solving calibration, that might differ from initialBiasZAsMeasurement.
Gets estimated standard deviation of gravity norm as Acceleration. This is only available if no location is provided and initialization has completed.
Gets initial bias coordinates used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the values used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasAsTriad will be equal to this value, otherwise estimatedBiasAsTriad will be the estimated bias after solving calibration, which will differ from estimatedBiasAsTriad.
Gets X-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasX will be equal to this value, otherwise estimatedBiasX will be the estimated bias after solving calibration, which will differ from estimatedBiasX.
Gets Y-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasY will be equal to this value, otherwise estimatedBiasY will be the estimated bias after solving calibration, which will differ from estimatedBiasY.
Gets Z-coordinate of bias used as an initial guess. This value is determined once the calibrator starts. If sensorType is AccelerometerSensorType.ACCELEROMETER_UNCALIBRATED, this will be equal to the value used internally by the device as part of the accelerometer hardware calibration. If sensorType is AccelerometerSensorType.ACCELEROMETER, then accelerometer sensor measurements are assumed to be already bias compensated, and the initial bias is assumed to be zero. If isGroundTruthInitialBias is true, this is assumed to be the true bias, and estimatedBiasZ will be equal to this value, otherwise estimatedBiasZ will be the estimated bias after solving calibration, which will differ from estimatedBiasZ.
Gets initial scale factors and cross coupling errors matrix.
Gets estimated threshold to determine static/dynamic period changes. This is only available once initialization is completed.
Gets estimated standard deviation of time interval between measurements. Time interval is estimated only while initialization is running, consequently, this is only available once initialization is completed.
Sets initial scaling factors.
Starts calibrator. This method starts collecting accelerometer measurements. When calibrator is started, it begins with an initialization stage where accelerometer noise is estimated while device remains static. If no location is provided, during initialization gravity norm is also estimated. Once initialization is completed, calibrator determines intervals where device remains static when device has different poses, so that measurements are collected to solve calibration. If solveCalibrationWhenEnoughMeasurements is true, calibration is automatically solved once enough measurements are collected, otherwise a call to calibrate must be done to solve calibration.