Class SequentialRobustMixedRadioSourceEstimator<S extends RadioSource,P extends com.irurueta.geometry.Point<P>>
- Type Parameters:
S- aRadioSourcetype.P- aPointtype.
- Direct Known Subclasses:
SequentialRobustMixedRadioSourceEstimator2D,SequentialRobustMixedRadioSourceEstimator3D
Implementations of this class sequentially estimate position and then remaining parameters. First ranging data is used to robustly estimate position and then remaining parameters are robustly estimated using former estimated position as an initial guess.
Because usually information about the antenna of the radio source cannot be retrieved (because many measurements are made on unknown devices where physical access is not possible), this implementation will estimate the equivalent transmitted power as: Pte = Pt * Gt * Gr. If Readings contain RSSI standard deviations, those values will be used, otherwise it will be assumed an RSSI standard deviation of 1 dB.
This implementation is like SequentialRobustRangingAndRssiRadioSourceEstimator but allows mixing different kinds of located radio source readings (ranging, RSSI and ranging+RSSI).
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate com.irurueta.algebra.MatrixCovariance of estimated position, power and/or path-loss exponent.static final doubleConstant defining default confidence of the estimated result, which is 99%.static final booleanIndicates that covariance is kept by default after refining result.static final intDefault maximum allowed number of iterations.static final com.irurueta.numerical.robust.RobustEstimatorMethodDefault robust estimator method for robust position estimation using ranging data when no robust method is provided.static final floatDefault amount of progress variation before notifying a change in estimation progress.static final booleanIndicates that result is refined by default using all found inliers.static final com.irurueta.numerical.robust.RobustEstimatorMethodDefault robust estimator method for path-loss exponent and transmitted power estimation using RSSI data when no robust method is provided.static final booleanIndicates that by default position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.private doubleEstimated exponent typically used on free space for path loss propagation in terms of distance.private DoubleVariance of estimated path loss exponent.private PEstimated position.private com.irurueta.algebra.MatrixCovariance of estimated position.private DoubleEstimated transmitted power expressed in dBm's or null if not available.private DoubleVariance of estimated transmitted power.private doubleInitial exponent typically used on free space for path loss propagation in terms of distance.private PInitial position to start the estimation of radio source position.private DoubleInitially transmitted power to start the estimation of radio source transmitted power.private com.irurueta.numerical.robust.InliersDataData related to inliers found after estimation.private booleanIndicates whether covariance must be kept after refining result.Listener to be notified of events such as when estimation starts, ends or its progress significantly changes.private booleanIndicates if this instance is locked because estimation is being executed.static final doubleMaximum allowed confidence value.static final floatMaximum allowed value for progress delta.static final doubleMinimum allowed confidence value.static final intMinimum allowed number of iterations.static final floatMinimum allowed value for progress delta.private intNumber of ranging readings available among all readings.private intNumber of RSSI readings available among all readings.private booleanIndicates whether path loss estimation is enabled or not.private floatAmount of progress variation before notifying a progress change during estimation.private double[]Quality scores corresponding to each provided sample.private doubleAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation.protected RobustRangingRadioSourceEstimator<S, P> Internal robust estimator for position estimation.private intMaximum allowed number of iterations for robust position estimation.protected intSize of subsets to be checked during ranging robust estimation.protected com.irurueta.numerical.robust.RobustEstimatorMethodRobust method used for robust position estimation using ranging data.protected DoubleThreshold to determine when samples are inliers or not used during robust position estimation.private List<? extends ReadingLocated<P>> Signal readings belonging to the same radio source to be estimated.private booleanIndicates whether result must be refined using found inliers.private doubleAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust path-loss exponent and transmitted power estimation.protected RobustRssiRadioSourceEstimator<S, P> Internal robust estimator for path-loss exponent and transmitted power estimation.private intMaximum allowed number of iterations for robust path-loss exponent and transmitted power estimation.protected booleanIndicates whether position is estimated using RSSI data.protected intSize of subsets to be checked during RSSI robust estimation.protected com.irurueta.numerical.robust.RobustEstimatorMethodRobust method used for path-loss exponent and transmitted power estimation using RSSI data.protected DoubleThreshold to determine when samples are inliers or not used during robust path-loss exponent and transmitted power estimation.private booleanIndicates whether transmitted power estimation is enabled or not.private booleanIndicates whether an homogeneous ranging linear solver is used to estimate preliminary positions.private booleanIndicates whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructors.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructors.protectedSequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor.protectedSequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm, SequentialRobustMixedRadioSourceEstimatorListener<S, P> listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionbooleanareValidReadings(List<? extends ReadingLocated<P>> readings) Indicates whether readings are valid or not.protected abstract voidBuilds ranging estimator.protected abstract voidBuild RSSI estimator.private voidcheckReadings(List<? extends ReadingLocated<P>> readings) Checks number of available ranging readings and number of available RSSI readings.private RangingReadingLocated<S, P> createRangingReading(RangingAndRssiReadingLocated<S, P> reading) Creates a ranging reading from a ranging and RSSI reading.private RssiReadingLocated<S, P> createRssiReading(RangingAndRssiReadingLocated<S, P> reading) Creates an RSSI reading from a ranging and RSSI reading.voidestimate()Robustly estimates position, transmitted power and path-loss exponent for a radio source.com.irurueta.algebra.MatrixGets covariance for estimated position and power.doubleGets estimated exponent typically used on free space for path loss propagation in terms of distance.Gets estimated path loss exponent variance.Gets estimated position.com.irurueta.algebra.MatrixGets estimated position covariance.abstract <S2 extends RadioSourceLocated<P>>
S2Gets estimated located radio source.Gets estimated transmitted power expressed in milli watts (mW) or null if not available.Gets estimated transmitted power expressed in dBm's or null if not available.Gets estimated transmitted power variance.doubleGets initial exponent typically used on free space for path loss propagation in terms of distance.Gets initial position to start the estimation of radio source position.Gets initial transmitted power to start the estimation of radio source transmitted power (expressed in mW).Gets initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).com.irurueta.numerical.robust.InliersDataGets data related to inliers found after estimation.Gets listener in charge of attending events raised by this instance.intGets minimum required number of ranging or ranging+rssi readings required to start estimation.abstract intGets minimum required number of readings to estimate power, position and path-loss exponent.intGets minimum required number of rssi or ranging+rssi readings required to start estimation.abstract intGets number of dimensions of position points.floatReturns amount of progress variation before notifying a progress change during estimation.double[]Returns quality scores corresponding to each pair of positions and distances (i.e. sample).doubleReturns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation.intReturns maximum allowed number of iterations for robust position estimation.intGets size of subsets to be checked during ranging robust estimation.com.irurueta.numerical.robust.RobustEstimatorMethodGets robust method used for robust position estimation using ranging data.Gets threshold to determine when samples are inliers or not, used during robust position estimation.Gets signal readings belonging to the same radio source.doubleReturns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for path-loss exponent and transmitted power estimation.intReturns maximum allowed number of iterations for robust path-loss exponent and transmitted power estimation.intGets size of subsets to be checked during RSSI robust estimation.com.irurueta.numerical.robust.RobustEstimatorMethodGets robust method used for path-loss exponent and transmitted power estimation using RSSI data.Gets threshold to determine when samples are inliers or not, used during robust path-loss exponent and transmitted power estimation.booleanIndicates whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.private voidinternalSetQualityScores(double[] qualityScores) Sets quality scores corresponding to each provided sample.private voidinternalSetReadings(List<? extends ReadingLocated<P>> readings) Internally sets signal readings belonging to the same radio source.booleanIndicates whether covariance must be kept after refining result.booleanIndicates whether an homogeneous ranging linear solver is used to estimate preliminary positions.booleanisLocked()Indicates whether estimator is locked during estimation.booleanIndicates whether path loss estimation is enabled or not.booleanisReady()Indicates whether this instance is ready to start the estimation.booleanIndicates whether result must be refined using a non-linear solver over found inliers.booleanIndicates whether position is estimated using RSSI data.booleanIndicates whether transmitted power estimation is enabled or not.voidsetCovarianceKept(boolean keepCovariance) Specifies whether covariance must be kept after refining result.voidsetHomogeneousRangingLinearSolverUsed(boolean useHomogeneousRangingLinearSolver) Specifies whether an homogeneous ranging linear solver is used to estimate preliminary positions.voidsetInitialPathLossExponent(double initialPathLossExponent) Sets initial exponent typically used on free space for path loss propagation in terms of distance.voidsetInitialPosition(P initialPosition) Sets initial position to start the estimation of radio source position.voidsetInitialTransmittedPower(Double initialTransmittedPower) Sets initial transmitted power to start the estimation of radio source transmitted power (expressed in mW).voidsetInitialTransmittedPowerdBm(Double initialTransmittedPowerdBm) Sets initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).voidSets listener in charge of attending events raised by this instance.voidsetPathLossEstimationEnabled(boolean pathLossEstimationEnabled) Specifies whether path loss estimation is enabled or not.voidsetProgressDelta(float progressDelta) Sets amount of progress variation before notifying a progress change during estimation.voidsetQualityScores(double[] qualityScores) Sets quality scores corresponding to each pair of positions and distances (i.e. sample).voidsetRangingConfidence(double rangingConfidence) Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation.voidsetRangingMaxIterations(int rangingMaxIterations) Sets maximum allowed number of iterations for robust position estimation.voidsetRangingPreliminarySubsetSize(int rangingPreliminarySubsetSize) Sets size of subsets to be checked during ranging robust estimation.voidsetRangingRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rangingRobustMethod) Sets robust method used for robust position estimation using ranging data.voidsetRangingThreshold(Double rangingThreshold) Sets threshold to determine when samples are inliers or not, used during robust position estimation.voidsetReadings(List<? extends ReadingLocated<P>> readings) Sets signal readings belonging to the same radio source.voidsetResultRefined(boolean refineResult) Specifies whether result must be refined using a non-linear solver over found inliers.voidsetRssiConfidence(double rssiConfidence) Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for path-loss exponent and transmitted power estimation.voidsetRssiMaxIterations(int rssiMaxIterations) Sets maximum allowed number of iterations for robust path-loss exponent and transmitted power estimation.voidsetRssiPreliminarySubsetSize(int rssiPreliminarySubsetSize) Sets size of subsets to be checked during RSSI robust estimation.voidsetRssiRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rssiRobustMethod) Sets robust method used for path-loss exponent and transmitted power estimation using RSSI data.voidsetRssiThreshold(Double rssiThreshold) Sets threshold to determine when samples are inliers or not, used during robust path-loss exponent and transmitted power estimation.voidsetTransmittedPowerEstimationEnabled(boolean transmittedPowerEstimationEnabled) Specifies whether transmitted power estimation is enabled or not.protected voidSetups ranging estimator.protected voidSetups RSSI estimator.voidsetUseReadingPositionCovariances(boolean useReadingPositionCovariances) Specifies whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.
-
Field Details
-
DEFAULT_PANGING_ROBUST_METHOD
public static final com.irurueta.numerical.robust.RobustEstimatorMethod DEFAULT_PANGING_ROBUST_METHODDefault robust estimator method for robust position estimation using ranging data when no robust method is provided. -
DEFAULT_RSSI_ROBUST_METHOD
public static final com.irurueta.numerical.robust.RobustEstimatorMethod DEFAULT_RSSI_ROBUST_METHODDefault robust estimator method for path-loss exponent and transmitted power estimation using RSSI data when no robust method is provided. -
DEFAULT_REFINE_RESULT
public static final boolean DEFAULT_REFINE_RESULTIndicates that result is refined by default using all found inliers.- See Also:
-
DEFAULT_KEEP_COVARIANCE
public static final boolean DEFAULT_KEEP_COVARIANCEIndicates that covariance is kept by default after refining result.- See Also:
-
DEFAULT_PROGRESS_DELTA
public static final float DEFAULT_PROGRESS_DELTADefault amount of progress variation before notifying a change in estimation progress. By default, this is set to 5%.- See Also:
-
MIN_PROGRESS_DELTA
public static final float MIN_PROGRESS_DELTAMinimum allowed value for progress delta.- See Also:
-
MAX_PROGRESS_DELTA
public static final float MAX_PROGRESS_DELTAMaximum allowed value for progress delta.- See Also:
-
DEFAULT_CONFIDENCE
public static final double DEFAULT_CONFIDENCEConstant defining default confidence of the estimated result, which is 99%. This means that with a probability of 99% estimation will be accurate because chosen sub-samples will be inliers.- See Also:
-
DEFAULT_MAX_ITERATIONS
public static final int DEFAULT_MAX_ITERATIONSDefault maximum allowed number of iterations.- See Also:
-
MIN_CONFIDENCE
public static final double MIN_CONFIDENCEMinimum allowed confidence value.- See Also:
-
MAX_CONFIDENCE
public static final double MAX_CONFIDENCEMaximum allowed confidence value.- See Also:
-
MIN_ITERATIONS
public static final int MIN_ITERATIONSMinimum allowed number of iterations.- See Also:
-
DEFAULT_USE_READING_POSITION_COVARIANCES
public static final boolean DEFAULT_USE_READING_POSITION_COVARIANCESIndicates that by default position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.- See Also:
-
rangingEstimator
protected RobustRangingRadioSourceEstimator<S extends RadioSource,P extends com.irurueta.geometry.Point<P>> rangingEstimatorInternal robust estimator for position estimation. -
rssiEstimator
protected RobustRssiRadioSourceEstimator<S extends RadioSource,P extends com.irurueta.geometry.Point<P>> rssiEstimatorInternal robust estimator for path-loss exponent and transmitted power estimation. -
rangingRobustMethod
protected com.irurueta.numerical.robust.RobustEstimatorMethod rangingRobustMethodRobust method used for robust position estimation using ranging data. -
rssiRobustMethod
protected com.irurueta.numerical.robust.RobustEstimatorMethod rssiRobustMethodRobust method used for path-loss exponent and transmitted power estimation using RSSI data. -
rangingPreliminarySubsetSize
protected int rangingPreliminarySubsetSizeSize of subsets to be checked during ranging robust estimation. -
rssiPreliminarySubsetSize
protected int rssiPreliminarySubsetSizeSize of subsets to be checked during RSSI robust estimation. -
rangingThreshold
Threshold to determine when samples are inliers or not used during robust position estimation. If not defined, default threshold will be used. -
rssiThreshold
Threshold to determine when samples are inliers or not used during robust path-loss exponent and transmitted power estimation. -
rssiPositionEnabled
protected boolean rssiPositionEnabledIndicates whether position is estimated using RSSI data. If enough ranging readings are available, this is false and position is estimated using ranging readings, otherwise this is true and position is estimated using RSSI data in a less reliable way. -
readings
Signal readings belonging to the same radio source to be estimated. -
qualityScores
private double[] qualityScoresQuality scores corresponding to each provided sample. The larger the score value the better the quality of the sample. -
listener
private SequentialRobustMixedRadioSourceEstimatorListener<S extends RadioSource,P extends com.irurueta.geometry.Point<P>> listenerListener to be notified of events such as when estimation starts, ends or its progress significantly changes. -
estimatedPosition
Estimated position. -
locked
private boolean lockedIndicates if this instance is locked because estimation is being executed. -
progressDelta
private float progressDeltaAmount of progress variation before notifying a progress change during estimation. -
rangingConfidence
private double rangingConfidenceAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0. -
rssiConfidence
private double rssiConfidenceAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust path-loss exponent and transmitted power estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0. -
rangingMaxIterations
private int rangingMaxIterationsMaximum allowed number of iterations for robust position estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval. -
rssiMaxIterations
private int rssiMaxIterationsMaximum allowed number of iterations for robust path-loss exponent and transmitted power estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval. -
refineResult
private boolean refineResultIndicates whether result must be refined using found inliers. If true, inliers will be computed and kept in any implementation regardless of the settings. -
keepCovariance
private boolean keepCovarianceIndicates whether covariance must be kept after refining result. This setting is only taken into account if result is refined. -
covariance
private com.irurueta.algebra.Matrix covarianceCovariance of estimated position, power and/or path-loss exponent. This is only available when result has been refined and covariance is kept. -
estimatedPositionCovariance
private com.irurueta.algebra.Matrix estimatedPositionCovarianceCovariance of estimated position. Size of this matrix will depend on the number of dimensions of estimated position (either 2 or 3). This value will only be available when position estimation is enabled. -
initialTransmittedPowerdBm
Initially transmitted power to start the estimation of radio source transmitted power. If not defined, average value of received power readings will be used. -
initialPosition
Initial position to start the estimation of radio source position. If not defined, centroid of provided located readings will be used. -
initialPathLossExponent
private double initialPathLossExponentInitial exponent typically used on free space for path loss propagation in terms of distance. On different environments path loss exponent might have different values: - Free space: 2.0 - Urban Area: 2.7 to 3.5 - Suburban Area: 3 to 5 - Indoor (line-of-sight): 1.6 to 1.8If path loss exponent estimation is enabled, estimation will start at this value and will converge to the most appropriate value. If path loss exponent estimation is disabled, this value will be assumed to be exact and the estimated path loss exponent will be equal to this value.
-
transmittedPowerEstimationEnabled
private boolean transmittedPowerEstimationEnabledIndicates whether transmitted power estimation is enabled or not. -
pathLossEstimationEnabled
private boolean pathLossEstimationEnabledIndicates whether path loss estimation is enabled or not. -
estimatedTransmittedPowerdBm
Estimated transmitted power expressed in dBm's or null if not available. -
estimatedPathLossExponent
private double estimatedPathLossExponentEstimated exponent typically used on free space for path loss propagation in terms of distance. On different environments path loss exponent might have different values: - Free space: 2.0 - Urban Area: 2.7 to 3.5 - Suburban Area: 3 to 5 - Indoor (line-of-sight): 1.6 to 1.8 If path loss exponent estimation is not enabled, this value will always be equal toRssiRadioSourceEstimator.DEFAULT_PATH_LOSS_EXPONENT -
estimatedTransmittedPowerVariance
Variance of estimated transmitted power. This value will only be available when transmitted power estimation is enabled. -
estimatedPathLossExponentVariance
Variance of estimated path loss exponent. This value will only be available when path-loss exponent estimation is enabled. -
inliersData
private com.irurueta.numerical.robust.InliersData inliersDataData related to inliers found after estimation. -
useReadingPositionCovariances
private boolean useReadingPositionCovariancesIndicates whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent. -
useHomogeneousRangingLinearSolver
private boolean useHomogeneousRangingLinearSolverIndicates whether an homogeneous ranging linear solver is used to estimate preliminary positions. -
numRangingReadings
private int numRangingReadingsNumber of ranging readings available among all readings. -
numRssiReadings
private int numRssiReadingsNumber of RSSI readings available among all readings.
-
-
Constructor Details
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator()Constructor. -
SequentialRobustMixedRadioSourceEstimator
Constructor. Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.- Throws:
IllegalArgumentException- if readings are not valid.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.- Throws:
IllegalArgumentException- if readings are not valid.
-
SequentialRobustMixedRadioSourceEstimator
Constructor.- Parameters:
initialPosition- initial position to start the estimation of radio source position.
-
SequentialRobustMixedRadioSourceEstimator
Constructor.- Parameters:
initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if readings are not valid.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if readings are not valid.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm) Constructor.- Parameters:
initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).initialPathLossExponent- initial path loss exponent. A typical value is 2.0.- Throws:
IllegalArgumentException- if readings are not valid.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.- Parameters:
initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).initialPathLossExponent- initial path loss exponent. A typical value is 2.0.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores) Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.- Throws:
IllegalArgumentException- if quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.readings- signal readings belonging to the same radio source.- Throws:
IllegalArgumentException- if readings are not valid, quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.- Throws:
IllegalArgumentException- if readings are not valid, quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.initialPosition- initial position to start the estimation of radio source position.- Throws:
IllegalArgumentException- if quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, Double initialTransmittedPowerdBm) Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, Double initialTransmittedPowerdBm) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.readings- signal readings belonging to the same radio source.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if readings are not valid, quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if readings are not valid, quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm) Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).- Throws:
IllegalArgumentException- if quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, List<? extends ReadingLocated<P>> readings, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor. Sets signal readings belonging to the same radio source.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.readings- signal readings belonging to the same radio source.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).initialPathLossExponent- initial path loss exponent. A typical value is 2.0.- Throws:
IllegalArgumentException- if readings are not valid, quality scores is null, or length of quality scores is less than required minimum.
-
SequentialRobustMixedRadioSourceEstimator
protected SequentialRobustMixedRadioSourceEstimator(double[] qualityScores, P initialPosition, Double initialTransmittedPowerdBm, double initialPathLossExponent) Constructor.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.initialPosition- initial position to start the estimation of radio source position.initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's).initialPathLossExponent- initial path loss exponent. A typical value is 2.0.- Throws:
IllegalArgumentException- if quality scores is null, or length of quality scores is less than required minimum.
-
-
Method Details
-
isLocked
public boolean isLocked()Indicates whether estimator is locked during estimation.- Returns:
- true if estimator is locked, false otherwise.
-
getProgressDelta
public float getProgressDelta()Returns amount of progress variation before notifying a progress change during estimation.- Returns:
- amount of progress variation before notifying a progress change during estimation.
-
setProgressDelta
public void setProgressDelta(float progressDelta) throws com.irurueta.navigation.LockedException Sets amount of progress variation before notifying a progress change during estimation.- Parameters:
progressDelta- amount of progress variation before notifying a progress change during estimation.- Throws:
IllegalArgumentException- if progress delta is less than zero or greater than 1.com.irurueta.navigation.LockedException- if this estimator is locked.
-
getRangingRobustMethod
public com.irurueta.numerical.robust.RobustEstimatorMethod getRangingRobustMethod()Gets robust method used for robust position estimation using ranging data.- Returns:
- robust method used for robust position estimation.
-
setRangingRobustMethod
public void setRangingRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rangingRobustMethod) throws com.irurueta.navigation.LockedException Sets robust method used for robust position estimation using ranging data.- Parameters:
rangingRobustMethod- robust method used for robust position estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getRssiRobustMethod
public com.irurueta.numerical.robust.RobustEstimatorMethod getRssiRobustMethod()Gets robust method used for path-loss exponent and transmitted power estimation using RSSI data.- Returns:
- robust method used for path-loss exponent and transmitted power estimation.
-
setRssiRobustMethod
public void setRssiRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rssiRobustMethod) throws com.irurueta.navigation.LockedException Sets robust method used for path-loss exponent and transmitted power estimation using RSSI data.- Parameters:
rssiRobustMethod- robust method used for path-loss exponent and transmitted power estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getRangingPreliminarySubsetSize
public int getRangingPreliminarySubsetSize()Gets size of subsets to be checked during ranging robust estimation.- Returns:
- size of subsets to be checked during ranging robust estimation.
-
setRangingPreliminarySubsetSize
public void setRangingPreliminarySubsetSize(int rangingPreliminarySubsetSize) throws com.irurueta.navigation.LockedException Sets size of subsets to be checked during ranging robust estimation.- Parameters:
rangingPreliminarySubsetSize- size of subsets to be checked during ranging robust estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.IllegalArgumentException- if provided value is less thangetMinReadings().
-
getRssiPreliminarySubsetSize
public int getRssiPreliminarySubsetSize()Gets size of subsets to be checked during RSSI robust estimation.- Returns:
- size of subsets to be checked during RSSI robust estimation.
-
setRssiPreliminarySubsetSize
public void setRssiPreliminarySubsetSize(int rssiPreliminarySubsetSize) throws com.irurueta.navigation.LockedException Sets size of subsets to be checked during RSSI robust estimation.- Parameters:
rssiPreliminarySubsetSize- size of subsets to be checked during RSSI robust estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.IllegalArgumentException- if provided value is less thangetMinReadings().
-
getRangingThreshold
Gets threshold to determine when samples are inliers or not, used during robust position estimation. If not defined, default threshold will be used.- Returns:
- threshold for ranging estimation or null.
-
setRangingThreshold
public void setRangingThreshold(Double rangingThreshold) throws com.irurueta.navigation.LockedException Sets threshold to determine when samples are inliers or not, used during robust position estimation. If not defined, default threshold will be used.- Parameters:
rangingThreshold- threshold for ranging estimation or null.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getRssiThreshold
Gets threshold to determine when samples are inliers or not, used during robust path-loss exponent and transmitted power estimation. If not defined, default threshold will be used.- Returns:
- threshold for RSSI estimation or null.
-
setRssiThreshold
Sets threshold to determine when samples are inliers or not, used during robust path-loss exponent and transmitted power estimation. If not defined, default threshold will be used.- Parameters:
rssiThreshold- threshold for RSSI estimation or null.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getRangingConfidence
public double getRangingConfidence()Returns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0.- Returns:
- amount of confidence for robust position estimation as a value between 0.0 and 1.0.
-
setRangingConfidence
public void setRangingConfidence(double rangingConfidence) throws com.irurueta.navigation.LockedException Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0.- Parameters:
rangingConfidence- confidence to be set for robust position estimation as a value between 0.0 and 1.0.- Throws:
IllegalArgumentException- if provided value is not between 0.0 and 1.0.com.irurueta.navigation.LockedException- if estimator is locked.
-
getRssiConfidence
public double getRssiConfidence()Returns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for path-loss exponent and transmitted power estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 1.0, but not exactly 1.0.- Returns:
- amount of confidence for robust path-loss exponent and transmitted power estimation as a value between 0.0 and 1.0.
-
setRssiConfidence
public void setRssiConfidence(double rssiConfidence) throws com.irurueta.navigation.LockedException Sets amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for path-loss exponent and transmitted power estimation. The amount of confidence indicates the probability that the estimated result is correct. Usually this value will be close to 10.0, but not exactly 1.0.- Parameters:
rssiConfidence- confidence to be set for robust path-loss exponent and transmitted power estimation as a value between 0.0 and 1.0.- Throws:
IllegalArgumentException- if provided value is not between 0.0 and 1.0.com.irurueta.navigation.LockedException- if estimator is locked.
-
getRangingMaxIterations
public int getRangingMaxIterations()Returns maximum allowed number of iterations for robust position estimation. If maximum allowed number of iterations is achieved without converging to a result when calling estimate(), a RobustEstimatorException will be raised.- Returns:
- maximum allowed number of iterations for position estimation.
-
setRangingMaxIterations
public void setRangingMaxIterations(int rangingMaxIterations) throws com.irurueta.navigation.LockedException Sets maximum allowed number of iterations for robust position estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval.- Parameters:
rangingMaxIterations- maximum allowed number of iterations to be set for position estimation.- Throws:
IllegalArgumentException- if provided value is less than 1.com.irurueta.navigation.LockedException- if this estimator is locked.
-
getRssiMaxIterations
public int getRssiMaxIterations()Returns maximum allowed number of iterations for robust path-loss exponent and transmitted power estimation. If maximum allowed number of iterations is achieved without converging to a result when calling estimate(), a RobustEstimatorException will be raised.- Returns:
- maximum allowed number of iterations for path-loss exponent and transmitted power estimation.
-
setRssiMaxIterations
public void setRssiMaxIterations(int rssiMaxIterations) throws com.irurueta.navigation.LockedException Sets maximum allowed number of iterations for robust path-loss exponent and transmitted power estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval.- Parameters:
rssiMaxIterations- maximum allowed number of iterations to be set for path-loss exponent and transmitted power estimation.- Throws:
IllegalArgumentException- if provided value is less than 1.com.irurueta.navigation.LockedException- if this estimator is locked.
-
isResultRefined
public boolean isResultRefined()Indicates whether result must be refined using a non-linear solver over found inliers.- Returns:
- true to refine result, false to simply use result found by robust estimator without further refining.
-
setResultRefined
public void setResultRefined(boolean refineResult) throws com.irurueta.navigation.LockedException Specifies whether result must be refined using a non-linear solver over found inliers.- Parameters:
refineResult- true to refine result, false to simply use result found by robust estimator without further refining.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isCovarianceKept
public boolean isCovarianceKept()Indicates whether covariance must be kept after refining result. This setting is only taken into account if result is refined.- Returns:
- true if covariance must be kept after refining result, false otherwise.
-
setCovarianceKept
public void setCovarianceKept(boolean keepCovariance) throws com.irurueta.navigation.LockedException Specifies whether covariance must be kept after refining result. This setting is only taken into account if result is refined.- Parameters:
keepCovariance- true if covariance must be kept after refining result, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getReadings
Gets signal readings belonging to the same radio source.- Returns:
- signal readings belonging to the same radio source.
-
setReadings
public void setReadings(List<? extends ReadingLocated<P>> readings) throws com.irurueta.navigation.LockedException Sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.IllegalArgumentException- if readings are not valid.
-
getListener
Gets listener in charge of attending events raised by this instance.- Returns:
- listener in charge of attending events raised by this instance.
-
getQualityScores
public double[] getQualityScores()Returns quality scores corresponding to each pair of positions and distances (i.e. sample). The larger the score value the better the quality of the sample. This implementation always returns null. Subclasses using quality scores must implement proper behavior.- Returns:
- quality scores corresponding to each sample.
-
setQualityScores
public void setQualityScores(double[] qualityScores) throws com.irurueta.navigation.LockedException Sets quality scores corresponding to each pair of positions and distances (i.e. sample). The larger the score value the better the quality of the sample. This implementation makes no action. Subclasses using quality scores must implement proper behaviour.- Parameters:
qualityScores- quality scores corresponding to each pair of matched points.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than minimum required samples.com.irurueta.navigation.LockedException- if robust solver is locked because an estimation is already in progress.
-
getInitialTransmittedPowerdBm
Gets initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's). If not defined, average value of received power readings will be used.- Returns:
- initial transmitted power to start the estimation of radio source transmitted power.
-
setInitialTransmittedPowerdBm
public void setInitialTransmittedPowerdBm(Double initialTransmittedPowerdBm) throws com.irurueta.navigation.LockedException Sets initial transmitted power to start the estimation of radio source transmitted power (expressed in dBm's). If not defined, average value of received power readings will be used.- Parameters:
initialTransmittedPowerdBm- initial transmitted power to start the estimation of radio source transmitted power.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getInitialTransmittedPower
Gets initial transmitted power to start the estimation of radio source transmitted power (expressed in mW). If not defined, average value of received power readings will be used.- Returns:
- initial transmitted power to start the estimation of radio source transmitted power.
-
setInitialTransmittedPower
public void setInitialTransmittedPower(Double initialTransmittedPower) throws com.irurueta.navigation.LockedException Sets initial transmitted power to start the estimation of radio source transmitted power (expressed in mW). If not defined, average value of received power readings will be used.- Parameters:
initialTransmittedPower- initial transmitted power to start the estimation of radio source transmitted power.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.IllegalArgumentException- if provided value is negative.
-
getInitialPosition
Gets initial position to start the estimation of radio source position. If not defined, centroid of provided fingerprints will be used.- Returns:
- initial position to start the estimation of radio source position.
-
setInitialPosition
Sets initial position to start the estimation of radio source position. If not defined, centroid of provided fingerprints will be used.- Parameters:
initialPosition- initial position to start the estimation of radio source position.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getInitialPathLossExponent
public double getInitialPathLossExponent()Gets initial exponent typically used on free space for path loss propagation in terms of distance. On different environments path loss exponent might have different value: - Free space: 2.0 - Urban Area: 2.7 to 3.5 - Suburban Area: 3 to 5 - Indoor (line-of-sight): 1.6 to 1.8If path loss exponent estimation is enabled, estimation will start at this value and will converge to the most appropriate value. If path loss exponent estimation is disabled, this value will be assumed to be exact and the estimated path loss exponent will be equal to this value.
- Returns:
- initial path loss exponent.
-
setInitialPathLossExponent
public void setInitialPathLossExponent(double initialPathLossExponent) throws com.irurueta.navigation.LockedException Sets initial exponent typically used on free space for path loss propagation in terms of distance. On different environments path loss exponent might have different value: - Free space: 2.0 - Urban Area: 2.7 to 3.5 - Suburban Area: 3 to 5 - Indoor (line-of-sight): 1.6 to 1.8If path loss exponent estimation is enabled, estimation will start at this value and will converge to the most appropriate value. If path loss exponent estimation is disabled, this value will be assumed to be exact and the estimated path loss exponent will be equal to this value.
- Parameters:
initialPathLossExponent- initial path loss exponent.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isTransmittedPowerEstimationEnabled
public boolean isTransmittedPowerEstimationEnabled()Indicates whether transmitted power estimation is enabled or not.- Returns:
- true if transmitted power estimation is enabled, false otherwise.
-
setTransmittedPowerEstimationEnabled
public void setTransmittedPowerEstimationEnabled(boolean transmittedPowerEstimationEnabled) throws com.irurueta.navigation.LockedException Specifies whether transmitted power estimation is enabled or not.- Parameters:
transmittedPowerEstimationEnabled- true if transmitted power estimation is enabled, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isPathLossEstimationEnabled
public boolean isPathLossEstimationEnabled()Indicates whether path loss estimation is enabled or not.- Returns:
- true if path loss estimation is enabled, false otherwise.
-
setPathLossEstimationEnabled
public void setPathLossEstimationEnabled(boolean pathLossEstimationEnabled) throws com.irurueta.navigation.LockedException Specifies whether path loss estimation is enabled or not.- Parameters:
pathLossEstimationEnabled- true if path loss estimation is enabled, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getUseReadingPositionCovariance
public boolean getUseReadingPositionCovariance()Indicates whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.- Returns:
- true to take into account reading position covariances, false otherwise.
-
setUseReadingPositionCovariances
public void setUseReadingPositionCovariances(boolean useReadingPositionCovariances) throws com.irurueta.navigation.LockedException Specifies whether position covariances of readings must be taken into account to increase the amount of standard deviation of each ranging measure by the amount of position standard deviation assuming that both measures are statistically independent.- Parameters:
useReadingPositionCovariances- true to take into account reading position covariances, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isHomogeneousRangingLinearSolverUsed
public boolean isHomogeneousRangingLinearSolverUsed()Indicates whether an homogeneous ranging linear solver is used to estimate preliminary positions.- Returns:
- true if homogeneous ranging linear solver is used, false if an inhomogeneous ranging linear one is used instead.
-
setHomogeneousRangingLinearSolverUsed
public void setHomogeneousRangingLinearSolverUsed(boolean useHomogeneousRangingLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether an homogeneous ranging linear solver is used to estimate preliminary positions.- Parameters:
useHomogeneousRangingLinearSolver- true if homogeneous ranging linear solver is used, false if an inhomogeneous ranging linear one is used instead.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
getCovariance
public com.irurueta.algebra.Matrix getCovariance()Gets covariance for estimated position and power. Matrix contains information in the following order: Top-left sub-matrix contains covariance of position, then follows transmitted power variance, and finally the last element contains path-loss exponent variance. This is only available when result has been refined and covariance is kept.- Returns:
- covariance for estimated position and power.
-
getEstimatedPositionCovariance
public com.irurueta.algebra.Matrix getEstimatedPositionCovariance()Gets estimated position covariance. Size of this matrix will depend on the number of dimensions of estimated position (either 2 or 3). This is only available when result has been refined and covariance is kept.- Returns:
- estimated position covariance.
-
getEstimatedPosition
Gets estimated position.- Returns:
- estimated position.
-
areValidReadings
Indicates whether readings are valid or not. Readings are considered valid when there are enough readings.- Parameters:
readings- readings to be validated.- Returns:
- true if readings are valid, false otherwise.
-
isReady
public boolean isReady() throws com.irurueta.navigation.LockedExceptionIndicates whether this instance is ready to start the estimation.- Returns:
- true if this instance is ready, false otherwise.
- Throws:
com.irurueta.navigation.LockedException- if estimator is locked
-
getMinRangingReadings
public int getMinRangingReadings()Gets minimum required number of ranging or ranging+rssi readings required to start estimation.- Returns:
- minimum required number of ranging or ranging+rssi readings.
-
getMinRssiReadings
public int getMinRssiReadings()Gets minimum required number of rssi or ranging+rssi readings required to start estimation.- Returns:
- minimum required number of rssi or ranging+rssi readings.
-
getMinReadings
public abstract int getMinReadings()Gets minimum required number of readings to estimate power, position and path-loss exponent. This value depends on the number of parameters to be estimated, but for position only, this is 3 readings for 2D, and 4 readings for 3D.- Returns:
- minimum required number of readings.
-
getNumberOfDimensions
public abstract int getNumberOfDimensions()Gets number of dimensions of position points.- Returns:
- number of dimensions of position points.
-
getEstimatedTransmittedPowerVariance
Gets estimated transmitted power variance. This is only available when result has been refined and covariance is kept.- Returns:
- estimated transmitted power variance.
-
getEstimatedPathLossExponentVariance
Gets estimated path loss exponent variance. This is only available when result has been refined and covariance is kept.- Returns:
- estimated path loss exponent variance.
-
getEstimatedTransmittedPower
Gets estimated transmitted power expressed in milli watts (mW) or null if not available.- Returns:
- estimated transmitted power expressed in milli watts or null.
-
getEstimatedTransmittedPowerdBm
Gets estimated transmitted power expressed in dBm's or null if not available.- Returns:
- estimated transmitted power expressed in dBm's or null.
-
getEstimatedPathLossExponent
public double getEstimatedPathLossExponent()Gets estimated exponent typically used on free space for path loss propagation in terms of distance. On different environments path loss exponent might have different values: - Free space: 2.0 - Urban Area: 2.7 to 3.5 - Suburban Area: 3 to 5 - Indoor (line-of-sight): 1.6 to 1.8 If path loss exponent estimation is not enabled, this value will always be equal toRssiRadioSourceEstimator.DEFAULT_PATH_LOSS_EXPONENT- Returns:
- estimated path loss exponent.
-
estimate
public void estimate() throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.numerical.robust.RobustEstimatorExceptionRobustly estimates position, transmitted power and path-loss exponent for a radio source.- Throws:
com.irurueta.navigation.LockedException- if instance is busy during estimation.com.irurueta.navigation.NotReadyException- if estimator is not ready.com.irurueta.numerical.robust.RobustEstimatorException- if estimation fails for any reason (i.e. numerical instability, no solution available, etc).
-
getInliersData
public com.irurueta.numerical.robust.InliersData getInliersData()Gets data related to inliers found after estimation.- Returns:
- data related to inliers found after estimation.
-
isRssiPositionEnabled
public boolean isRssiPositionEnabled()Indicates whether position is estimated using RSSI data. If enough ranging readings are available, this is false and position is estimated using ranging readings, otherwise this is true and position is estimated using RSSI data in a less reliable way.- Returns:
- true if position is estimated using RSSI data, false if position is estimated using ranging data.
-
getEstimatedRadioSource
Gets estimated located radio source.- Type Parameters:
S2- type of located radio source.- Returns:
- estimated located radio source.
-
buildRangingEstimatorIfNeeded
protected abstract void buildRangingEstimatorIfNeeded()Builds ranging estimator. -
buildRssiEstimatorIfNeeded
protected abstract void buildRssiEstimatorIfNeeded() throws com.irurueta.navigation.LockedExceptionBuild RSSI estimator.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
setupRangingEstimator
protected void setupRangingEstimator() throws com.irurueta.navigation.LockedExceptionSetups ranging estimator.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
setupRssiEstimator
protected void setupRssiEstimator() throws com.irurueta.navigation.LockedExceptionSetups RSSI estimator.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
internalSetReadings
Internally sets signal readings belonging to the same radio source.- Parameters:
readings- signal readings belonging to the same radio source.- Throws:
IllegalArgumentException- if readings are null, not enough readings are available, or readings do not belong to the same access point.
-
internalSetQualityScores
private void internalSetQualityScores(double[] qualityScores) Sets quality scores corresponding to each provided sample. This method is used internally and does not check whether instance is locked or not.- Parameters:
qualityScores- quality scores to be set.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than required minimum.
-
checkReadings
Checks number of available ranging readings and number of available RSSI readings. Also determines whether position must be estimated using ranging data or RSSI data.- Parameters:
readings- readings to be checked.
-