Class SequentialRobustRangingAndRssiPositionEstimator<P extends com.irurueta.geometry.Point<?>>
java.lang.Object
com.irurueta.navigation.indoor.position.SequentialRobustRangingAndRssiPositionEstimator<P>
- Type Parameters:
P- aPointtype.
- Direct Known Subclasses:
SequentialRobustRangingAndRssiPositionEstimator2D,SequentialRobustRangingAndRssiPositionEstimator3D
public abstract class SequentialRobustRangingAndRssiPositionEstimator<P extends com.irurueta.geometry.Point<?>>
extends Object
Base class for robust position estimation, using RSSI readings first to obtain
an initial coarse position estimation, and then ranging readings to refine such
estimation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final doubleConstant defining default confidence of the estimated result, which is 99%.static final booleanIndicates that by default readings are distributed evenly among radio sources taking into account quality scores of both radio sources and ranging readings.static final booleanIndicates that by default readings are distributed evenly among radio sources taking into account quality scores of both radio sources and RSSI readings.static final booleanIndicates that covariance is kept by default after refining result.static final intDefault maximum allowed number of iterations.static final floatDefault amount of progress variation before notifying a change in estimation progress.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 booleanIndicates that by default preliminary ranging solutions are refined.static final booleanIndicates that result is refined by default using all found inliers.static final booleanIndicates that by default preliminary RSSI solutions are refined.static final com.irurueta.numerical.robust.RobustEstimatorMethodDefault robust method for coarse robust position estimation using RSSI data when no robust method is provided.static final booleanIndicates that by default an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.static final booleanIndicates that by default a linear solver is used for preliminary solution estimation using ranging measurements.static final booleanIndicates that by default located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.static final booleanIndicates that by default an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.static final booleanIndicates that by default a linear solver is used for preliminary solution estimation using RSSI measurements.static final booleanIndicates that by default located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.private booleanIndicates whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings.private booleanIndicates whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings.static final doubleDistance standard deviation assumed for provided distances as a fallback when none can be determined.private RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> Fingerprint containing readings at an unknown location for provided located radio sources.private double[]Quality scores corresponding to each reading within provided fingerprint.private PAn initial position to start the estimation from.private booleanIndicates that covariance is kept after refining result.Listener in charge of handling events.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 floatAmount of progress variation before notifying a progress change during estimation.private doubleAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation on ranging data.protected RobustRangingPositionEstimator<P> Internal robust estimator for position estimation using ranging readings.private doubleDistance standard deviation fallback value to use when none can be determined from provided ranging measurements.private intMaximum allowed number of iterations for robust ranging position estimation.protected intSize of subsets to be checked during robust estimation.protected com.irurueta.numerical.robust.RobustEstimatorMethodRobust method used for robust position estimation using ranging data.private DoubleThreshold to determine when samples are inliers or not used during ranging position estimation.private booleanIndicates whether preliminary ranging solutions are refined.private booleanIndicates whether result is refined using all found inliers.private booleanIndicates whether preliminary RSSI solutions are refined.private doubleAmount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation on RSSI data.protected RobustRssiPositionEstimator<P> Internal robust estimator for coarse position estimation using RSSI readings.private doubleDistance standard deviation fallback value to use when none can be determined from provided RSSI measurements.private intMaximum allowed number of iterations for robust RSSI position estimation.protected intSize of subsets to be checked during RSSI robust estimation.protected com.irurueta.numerical.robust.RobustEstimatorMethodRobust method used for coarse robust position estimation using RSSI data.private DoubleThreshold to determine when samples are inliers or not used during RSSI position estimation.private double[]Quality scores corresponding to each provided located radio source.private List<? extends RadioSourceLocated<P>> Located radio sources used for lateration.private booleanIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.private booleanIndicates that a linear solver is used for preliminary solution estimation using ranging measurements.private booleanIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.private booleanIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.private booleanIndicates that a linear solver is used for preliminary solution estimation using RSSI measurements.private booleanIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<P>> sources) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<P>> sources, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<P>> sources, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<P>> sources, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(List<? extends RadioSourceLocated<P>> sources) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(List<? extends RadioSourceLocated<P>> sources, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(List<? extends RadioSourceLocated<P>> sources, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Constructor.protectedSequentialRobustRangingAndRssiPositionEstimator(List<? extends RadioSourceLocated<P>> sources, RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint, SequentialRobustRangingAndRssiPositionEstimatorListener<P> listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected abstract voidBuilds ranging and RSSI internal estimators.private RangingReading<RadioSource> createRangingReading(RangingAndRssiReading<? extends RadioSource> reading) Creates a ranging reading from a ranging and RSSI reading.private RssiReading<RadioSource> createRssiReading(RangingAndRssiReading<? extends RadioSource> reading) Creates an RSSI reading from a ranging and RSSI reading.estimate()Estimates position based on provided located radio sources and readings of such sources at an unknown location.com.irurueta.algebra.MatrixGets estimated covariance of estimated position if available.double[]Gets Euclidean distances from known located radio sources to the location of provided readings in a fingerprint.double[]Gets standard deviation distances from known located radio sources to the location of provided readings in a fingerprint.Gets estimated position.Gets fingerprint containing ranging+RSSI readings at an unknown location for provided located radio sources.double[]Gets quality scores corresponding to each reading within provided fingerprint.Gets initial position to use as a starting point to find a new solution.com.irurueta.numerical.robust.InliersDataGets data related to inliers found after estimation.Gets listener to be notified of events raised by this instance.abstract intGets minimum required number of located radio sources to perform lateration.abstract intGets number of dimensions of provided points.P[]Gets known positions of radio sources used internally to solve lateration.floatGets amount of progress variation before notifying a progress change during estimation.doubleReturns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation on ranging data.doubleGets distance standard deviation fallback value to use when none can be determined from provided ranging measurements.intGets maximum allowed number of iterations for robust ranging 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 fine ranging position estimation.doubleReturns amount of confidence expressed as a value between 0.0 and 1.0 (which is equivalent to 100%) for robust position estimation on RSSI data.doubleGets distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.intGets maximum allowed number of iterations for robust RSSI position estimation.intGets size of subsets to be checked during RSSI robust estimation.com.irurueta.numerical.robust.RobustEstimatorMethodGets robust method used for coarse robust position estimation using RSSI data.Gets threshold to determine when samples are inliers or not, used during robust coarse RSSI position estimation.double[]Returns quality scores corresponding to each radio source.Gets located radio sources used for lateration.private voidinternalSetFingerprint(RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Internally sets fingerprint containing readings at an unknown location for provided located radio sources.private voidinternalSetFingerprintReadingsQualityScores(double[] fingerprintReadingsQualityScores) Sets quality scores corresponding to each provided reading within provided fingerprint.private voidinternalSetSourceQualityScores(double[] sourceQualityScores) Sets quality scores corresponding to each provided located radio source.private voidinternalSetSources(List<? extends RadioSourceLocated<P>> sources) Internally sets located radio sources used for lateration.booleanIndicates whether covariance must be kept after refining result.booleanisLocked()Returns boolean indicating if estimator is locked because estimation is under progress.booleanIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.booleanIndicates whether a linear solver is used for preliminary solution estimation using ranging measurements.booleanIndicates whether preliminary ranging solutions are refined after an initial linear solution is found.booleanIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.booleanIndicates whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings.booleanisReady()Indicates whether this instance is ready to start the estimation.booleanIndicates whether result is refined using all found inliers.booleanIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.booleanIndicates whether a linear solver is used for preliminary solution estimation using RSSI measurements.booleanIndicates whether preliminary RSSI solutions are refined after an initial linear solution is found.booleanIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.booleanIndicates whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings.voidsetCovarianceKept(boolean keepCovariance) Specifies whether covariance must be kept after refining result.voidsetFingerprint(RangingAndRssiFingerprint<? extends RadioSource, ? extends RangingAndRssiReading<? extends RadioSource>> fingerprint) Sets fingerprint containing ranging+RSSI readings at an unknown location for provided located radio sources.voidsetFingerprintReadingsQualityScores(double[] fingerprintReadingsQualityScores) Sets quality scores corresponding to each reading within provided fingerprint.voidsetInitialPosition(P initialPosition) Sets initial position to use as a starting point to find a new solution.voidSets listener to be notified of events raised by this instance.voidsetProgressDelta(float progressDelta) Sets amount of progress variation before notifying a progress change during estimation.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 on ranging data.voidsetRangingFallbackDistanceStandardDeviation(double rangingFallbackDistanceStandardDeviation) Sets distance standard deviation fallback value to use when none can be determined from provided ranging measurements.voidsetRangingHomogeneousLinearSolverUsed(boolean useRangingHomogeneousLinearSolver) Specifies whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.voidsetRangingLinearSolverUsed(boolean useRangingLinearSolver) Specifies whether a linear solver is used for preliminary solution estimation using ranging measurements.voidsetRangingMaxIterations(int rangingMaxIterations) Sets maximum allowed number of iterations for robust ranging position estimation.voidsetRangingPreliminarySolutionRefined(boolean refineRangingPreliminarySolutions) Specifies whether preliminary ranging solutions are refined after an initial linear solution is found.voidsetRangingPreliminarySubsetSize(int rangingPreliminarySubsetSize) Sets size of subsets to be checked during ranging robust estimation.voidsetRangingRadioSourcePositionCovarianceUsed(boolean useRangingRadioSourcePositionCovariance) Specifies whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.voidsetRangingReadingsEvenlyDistributed(boolean evenlyDistributeRangingReadings) Specifies whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings.voidsetRangingRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rangingRobustMethod) Sets robust method for robust position estimation using ranging data.voidsetRangingThreshold(Double rangingThreshold) Sets threshold to determine when samples are inliers or not, used during robust fine ranging position estimation.voidsetResultRefined(boolean refineResult) Specifies whether result is refined using all 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 robust position estimation on RSSI data.voidsetRssiFallbackDistanceStandardDeviation(double rssiFallbackDistanceStandardDeviation) Sets distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.voidsetRssiHomogeneousLinearSolverUsed(boolean useRssiHomogeneousLinearSolver) Specifies whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.voidsetRssiLinearSolverUsed(boolean useRssiLinearSolver) Specifies whether a linear solver is used for preliminary solution estimation using RSSI measurements.voidsetRssiMaxIterations(int rssiMaxIterations) Sets maximum allowed number of iterations for robust RSSI position estimation.voidsetRssiPreliminarySolutionRefined(boolean refineRssiPreliminarySolutions) Specifies whether preliminary RSSI solutions are refined after an initial linear solution is found.voidsetRssiPreliminarySubsetSize(int rssiPreliminarySubsetSize) Sets size of subsets to be checked during RSSI robust estimation.voidsetRssiRadioSourcePositionCovarianceUsed(boolean useRssiRadioSourcePositionCovariance) Specifies whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.voidsetRssiReadingsEvenlyDistributed(boolean evenlyDistributeRssiReadings) Specifies whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings.voidsetRssiRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rssiRobustMethod) Sets robust method used for coarse robust position estimation using RSSI data.voidsetRssiThreshold(Double rssiThreshold) Sets threshold to determine when samples are inliers or not, used during robust coarse RSSI position estimation.voidsetSourceQualityScores(double[] sourceQualityScores) Sets quality scores corresponding to each radio source.voidsetSources(List<? extends RadioSourceLocated<P>> sources) Sets located radio sources used for lateration.private voidSetups ranging and RSSI internal estimators.
-
Field Details
-
DEFAULT_RANGING_ROBUST_METHOD
public static final com.irurueta.numerical.robust.RobustEstimatorMethod DEFAULT_RANGING_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 method for coarse robust position estimation using RSSI data when no robust method is provided. -
DEFAULT_USE_RANGING_RADIO_SOURCE_POSITION_COVARIANCE
public static final boolean DEFAULT_USE_RANGING_RADIO_SOURCE_POSITION_COVARIANCEIndicates that by default located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.- See Also:
-
DEFAULT_USE_RSSI_RADIO_SOURCE_POSITION_COVARIANCE
public static final boolean DEFAULT_USE_RSSI_RADIO_SOURCE_POSITION_COVARIANCEIndicates that by default located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.- See Also:
-
DEFAULT_EVENLY_DISTRIBUTE_RANGING_READINGS
public static final boolean DEFAULT_EVENLY_DISTRIBUTE_RANGING_READINGSIndicates that by default readings are distributed evenly among radio sources taking into account quality scores of both radio sources and ranging readings.- See Also:
-
DEFAULT_EVENLY_DISTRIBUTE_RSSI_READINGS
public static final boolean DEFAULT_EVENLY_DISTRIBUTE_RSSI_READINGSIndicates that by default readings are distributed evenly among radio sources taking into account quality scores of both radio sources and RSSI readings.- See Also:
-
FALLBACK_DISTANCE_STANDARD_DEVIATION
public static final double FALLBACK_DISTANCE_STANDARD_DEVIATIONDistance standard deviation assumed for provided distances as a fallback when none can be determined.- 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_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_USE_RANGING_LINEAR_SOLVER
public static final boolean DEFAULT_USE_RANGING_LINEAR_SOLVERIndicates that by default a linear solver is used for preliminary solution estimation using ranging measurements. The result obtained on each preliminary solution might be later refined.- See Also:
-
DEFAULT_USE_RSSI_LINEAR_SOLVER
public static final boolean DEFAULT_USE_RSSI_LINEAR_SOLVERIndicates that by default a linear solver is used for preliminary solution estimation using RSSI measurements. The result obtained on each preliminary solution might be later refined.- See Also:
-
DEFAULT_USE_RANGING_HOMOGENEOUS_LINEAR_SOLVER
public static final boolean DEFAULT_USE_RANGING_HOMOGENEOUS_LINEAR_SOLVERIndicates that by default an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.- See Also:
-
DEFAULT_USE_RSSI_HOMOGENEOUS_LINEAR_SOLVER
public static final boolean DEFAULT_USE_RSSI_HOMOGENEOUS_LINEAR_SOLVERIndicates that by default an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.- See Also:
-
DEFAULT_REFINE_RANGING_PRELIMINARY_SOLUTIONS
public static final boolean DEFAULT_REFINE_RANGING_PRELIMINARY_SOLUTIONSIndicates that by default preliminary ranging solutions are refined.- See Also:
-
DEFAULT_REFINE_RSSI_PRELIMINARY_SOLUTIONS
public static final boolean DEFAULT_REFINE_RSSI_PRELIMINARY_SOLUTIONSIndicates that by default preliminary RSSI solutions are refined.- See Also:
-
rangingEstimator
Internal robust estimator for position estimation using ranging readings. -
rssiEstimator
Internal robust estimator for coarse position estimation using RSSI readings. -
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 coarse robust position estimation using RSSI data. -
rangingPreliminarySubsetSize
protected int rangingPreliminarySubsetSizeSize of subsets to be checked during robust estimation. -
rssiPreliminarySubsetSize
protected int rssiPreliminarySubsetSizeSize of subsets to be checked during RSSI robust estimation. -
useRangingRadioSourcePositionCovariance
private boolean useRangingRadioSourcePositionCovarianceIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements. -
useRssiRadioSourcePositionCovariance
private boolean useRssiRadioSourcePositionCovarianceIndicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements. -
evenlyDistributeRangingReadings
private boolean evenlyDistributeRangingReadingsIndicates whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings. -
evenlyDistributeRssiReadings
private boolean evenlyDistributeRssiReadingsIndicates whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings. -
rssiFallbackDistanceStandardDeviation
private double rssiFallbackDistanceStandardDeviationDistance standard deviation fallback value to use when none can be determined from provided RSSI measurements. -
rangingFallbackDistanceStandardDeviation
private double rangingFallbackDistanceStandardDeviationDistance standard deviation fallback value to use when none can be determined from provided ranging measurements. -
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 on ranging data. 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 position estimation on RSSI data. 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 ranging 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 RSSI position estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval. -
refineResult
private boolean refineResultIndicates whether result is refined using all found inliers. -
keepCovariance
private boolean keepCovarianceIndicates that covariance is kept after refining result. -
useRangingLinearSolver
private boolean useRangingLinearSolverIndicates that a linear solver is used for preliminary solution estimation using ranging measurements. The result obtained on each preliminary solution might be later refined. -
useRssiLinearSolver
private boolean useRssiLinearSolverIndicates that a linear solver is used for preliminary solution estimation using RSSI measurements. The result obtained on each preliminary solution might be later refined. -
useRangingHomogeneousLinearSolver
private boolean useRangingHomogeneousLinearSolverIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation. -
useRssiHomogeneousLinearSolver
private boolean useRssiHomogeneousLinearSolverIndicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation. -
refineRangingPreliminarySolutions
private boolean refineRangingPreliminarySolutionsIndicates whether preliminary ranging solutions are refined. -
refineRssiPreliminarySolutions
private boolean refineRssiPreliminarySolutionsIndicates whether preliminary RSSI solutions are refined. -
rangingThreshold
Threshold to determine when samples are inliers or not used during ranging position estimation. If not defined, default threshold will be used. -
rssiThreshold
Threshold to determine when samples are inliers or not used during RSSI position estimation. If not defined, default threshold will be used. -
listener
private SequentialRobustRangingAndRssiPositionEstimatorListener<P extends com.irurueta.geometry.Point<?>> listenerListener in charge of handling events. -
sources
Located radio sources used for lateration. -
fingerprint
private RangingAndRssiFingerprint<? extends RadioSource,? extends RangingAndRssiReading<? extends RadioSource>> fingerprintFingerprint containing readings at an unknown location for provided located radio sources. -
sourceQualityScores
private double[] sourceQualityScoresQuality scores corresponding to each provided located radio source. The larger the score value the better the quality of the radio source. -
fingerprintReadingsQualityScores
private double[] fingerprintReadingsQualityScoresQuality scores corresponding to each reading within provided fingerprint. The larger the score value the better the quality of the reading. -
initialPosition
An initial position to start the estimation from. This can be useful if we only intend to refine a previously known estimation. -
locked
private boolean lockedIndicates if this instance is locked because estimation is being executed.
-
-
Constructor Details
-
SequentialRobustRangingAndRssiPositionEstimator
protected SequentialRobustRangingAndRssiPositionEstimator()Constructor. -
SequentialRobustRangingAndRssiPositionEstimator
protected SequentialRobustRangingAndRssiPositionEstimator(List<? extends RadioSourceLocated<P>> sources) Constructor.- Parameters:
sources- located radio sources used for lateration.- Throws:
IllegalArgumentException- if provided sources is null or the number of provided sources is less than the required minimum.
-
SequentialRobustRangingAndRssiPositionEstimator
protected SequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores) Constructor.- Parameters:
sourceQualityScores- quality scores corresponding to each provided located radio source. The larger the score value the better the quality of the radio source.fingerprintReadingQualityScores- quality scores corresponding to readings within provided fingerprint. The larger the score the better the quality of the reading.
-
SequentialRobustRangingAndRssiPositionEstimator
protected SequentialRobustRangingAndRssiPositionEstimator(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<P>> sources) Constructor.- Parameters:
sourceQualityScores- quality scores corresponding to each provided located radio source. The larger the score value the better the quality of the radio source.fingerprintReadingQualityScores- quality scores corresponding to readings within provided fingerprint. The larger the score the better the quality of the reading.sources- located radio sources used for lateration.- Throws:
IllegalArgumentException- if provided sources is null or the number of provided sources is less than the required minimum.
-
-
Method Details
-
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 using ranging data.
-
setRangingRobustMethod
public void setRangingRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rangingRobustMethod) throws com.irurueta.navigation.LockedException Sets robust method for robust position estimation using ranging data.- Parameters:
rangingRobustMethod- robust method used for robust position estimation using ranging data.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
getRssiRobustMethod
public com.irurueta.numerical.robust.RobustEstimatorMethod getRssiRobustMethod()Gets robust method used for coarse robust position estimation using RSSI data.- Returns:
- robust method used for coarse robust position estimation using RSSI data.
-
setRssiRobustMethod
public void setRssiRobustMethod(com.irurueta.numerical.robust.RobustEstimatorMethod rssiRobustMethod) throws com.irurueta.navigation.LockedException Sets robust method used for coarse robust position estimation using RSSI data.- Parameters:
rssiRobustMethod- robust method used for coarse robust position estimation using RSSI data.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
isRangingRadioSourcePositionCovarianceUsed
public boolean isRangingRadioSourcePositionCovarianceUsed()Indicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.- Returns:
- true to take into account radio source position covariance during ranging position estimation, false otherwise.
-
setRangingRadioSourcePositionCovarianceUsed
public void setRangingRadioSourcePositionCovarianceUsed(boolean useRangingRadioSourcePositionCovariance) throws com.irurueta.navigation.LockedException Specifies whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for ranging measurements.- Parameters:
useRangingRadioSourcePositionCovariance- true to take into account radio source position covariance during ranging position estimation, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
isRssiRadioSourcePositionCovarianceUsed
public boolean isRssiRadioSourcePositionCovarianceUsed()Indicates whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.- Returns:
- true to take into account radio source position covariance during RSSI position estimation, false otherwise.
-
setRssiRadioSourcePositionCovarianceUsed
public void setRssiRadioSourcePositionCovarianceUsed(boolean useRssiRadioSourcePositionCovariance) throws com.irurueta.navigation.LockedException Specifies whether located radio source position covariance is taken into account (if available) to determine distance standard deviation for RSSI measurements.- Parameters:
useRssiRadioSourcePositionCovariance- true to take into account radio source position covariance during RSSI position estimation, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
isRangingReadingsEvenlyDistributed
public boolean isRangingReadingsEvenlyDistributed()Indicates whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings.- Returns:
- true if ranging readings are evenly distributed among radio sources, false otherwise.
-
setRangingReadingsEvenlyDistributed
public void setRangingReadingsEvenlyDistributed(boolean evenlyDistributeRangingReadings) throws com.irurueta.navigation.LockedException Specifies whether ranging readings are evenly distributed among radio sources taking into account quality scores of both radio sources and ranging readings.- Parameters:
evenlyDistributeRangingReadings- true if ranging readings are evenly distributed among radio sources, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
getRssiFallbackDistanceStandardDeviation
public double getRssiFallbackDistanceStandardDeviation()Gets distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.- Returns:
- distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.
-
setRssiFallbackDistanceStandardDeviation
public void setRssiFallbackDistanceStandardDeviation(double rssiFallbackDistanceStandardDeviation) throws com.irurueta.navigation.LockedException Sets distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.- Parameters:
rssiFallbackDistanceStandardDeviation- distance standard deviation fallback value to use when none can be determined from provided RSSI measurements.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
getRangingFallbackDistanceStandardDeviation
public double getRangingFallbackDistanceStandardDeviation()Gets distance standard deviation fallback value to use when none can be determined from provided ranging measurements.- Returns:
- distance standard deviation fallback value to use when none can be determined from provided ranging measurements.
-
setRangingFallbackDistanceStandardDeviation
public void setRangingFallbackDistanceStandardDeviation(double rangingFallbackDistanceStandardDeviation) throws com.irurueta.navigation.LockedException Sets distance standard deviation fallback value to use when none can be determined from provided ranging measurements.- Parameters:
rangingFallbackDistanceStandardDeviation- distance standard deviation fallback value to use when none can be determined from provided ranging measurements.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
isRssiReadingsEvenlyDistributed
public boolean isRssiReadingsEvenlyDistributed()Indicates whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings.- Returns:
- true if RSSI readings are evenly distributed among radio sources, false otherwise.
-
setRssiReadingsEvenlyDistributed
public void setRssiReadingsEvenlyDistributed(boolean evenlyDistributeRssiReadings) throws com.irurueta.navigation.LockedException Specifies whether RSSI readings are evenly distributed among radio sources taking into account quality scores of both radio sources and RSSI readings.- Parameters:
evenlyDistributeRssiReadings- true if RSSI readings are evenly distributed among radio sources, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.
-
getProgressDelta
public float getProgressDelta()Gets 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 instance 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 on ranging data. 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 on ranging data. 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 robust position estimation on RSSI data. 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.
-
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 robust position estimation on RSSI data. 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:
rssiConfidence- amount of confidence 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.
-
getRangingMaxIterations
public int getRangingMaxIterations()Gets maximum allowed number of iterations for robust ranging position estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval.- 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 ranging 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 estimator is locked.
-
getRssiMaxIterations
public int getRssiMaxIterations()Gets maximum allowed number of iterations for robust RSSI position estimation. When the maximum number of iterations is exceeded, an approximate result might be available for retrieval.- Returns:
- maximum allowed number of iterations for position estimation.
-
setRssiMaxIterations
public void setRssiMaxIterations(int rssiMaxIterations) throws com.irurueta.navigation.LockedException Sets maximum allowed number of iterations for robust RSSI position 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 position estimation.- Throws:
IllegalArgumentException- if provided value is less than 1.com.irurueta.navigation.LockedException- if estimator is locked.
-
isResultRefined
public boolean isResultRefined()Indicates whether result is refined using all found inliers.- Returns:
- true if result is refined, false otherwise.
-
setResultRefined
public void setResultRefined(boolean refineResult) throws com.irurueta.navigation.LockedException Specifies whether result is refined using all found inliers.- Parameters:
refineResult- true if result is refined, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if this instance 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.
-
isRangingLinearSolverUsed
public boolean isRangingLinearSolverUsed()Indicates whether a linear solver is used for preliminary solution estimation using ranging measurements. The result obtained on each preliminary solution might be later refined.- Returns:
- true if a linear solver is used for preliminary solution estimation on ranging readings.
-
setRangingLinearSolverUsed
public void setRangingLinearSolverUsed(boolean useRangingLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether a linear solver is used for preliminary solution estimation using ranging measurements. The result obtained on each preliminary solution might be later refined.- Parameters:
useRangingLinearSolver- true if a linear solver is used for preliminary solution estimation on ranging readings.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isRssiLinearSolverUsed
public boolean isRssiLinearSolverUsed()Indicates whether a linear solver is used for preliminary solution estimation using RSSI measurements. The result obtained on each preliminary solution might be later refined.- Returns:
- true if a linear solver is used for preliminary solution estimation on RSSI readings.
-
setRssiLinearSolverUsed
public void setRssiLinearSolverUsed(boolean useRssiLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether a linear solver is used for preliminary solution estimation using RSSI measurements. The result obtained on each preliminary solution might be later refined.- Parameters:
useRssiLinearSolver- true if a linear solver is used for preliminary solution estimation on RSSI readings.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isRangingHomogeneousLinearSolverUsed
public boolean isRangingHomogeneousLinearSolverUsed()Indicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.- Returns:
- true to use an homogeneous linear solver for preliminary solutions during ranging fine position estimation.
-
setRangingHomogeneousLinearSolverUsed
public void setRangingHomogeneousLinearSolverUsed(boolean useRangingHomogeneousLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the ranging fine estimation.- Parameters:
useRangingHomogeneousLinearSolver- true to use an homogeneous linear solver for preliminary solutions during ranging fine position estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isRssiHomogeneousLinearSolverUsed
public boolean isRssiHomogeneousLinearSolverUsed()Indicates whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.- Returns:
- true to use an homogeneous linear solver for preliminary solutions during RSSI coarse position estimation.
-
setRssiHomogeneousLinearSolverUsed
public void setRssiHomogeneousLinearSolverUsed(boolean useRssiHomogeneousLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether an homogeneous linear solver is used either to estimate preliminary solutions or an initial solution for preliminary solutions that will be later refined on the RSSI coarse estimation.- Parameters:
useRssiHomogeneousLinearSolver- true to use an homogeneous linear solver for preliminary solutions during RSSI fine position estimation.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isRangingPreliminarySolutionRefined
public boolean isRangingPreliminarySolutionRefined()Indicates whether preliminary ranging solutions are refined after an initial linear solution is found. If no initial preliminary solution is found using a linear solver, a non-linear solver will be used regardless of this value using an average solution as the initial value to be refined.- Returns:
- true if preliminary ranging solutions must be refined after an initial linear solution, false otherwise.
-
setRangingPreliminarySolutionRefined
public void setRangingPreliminarySolutionRefined(boolean refineRangingPreliminarySolutions) throws com.irurueta.navigation.LockedException Specifies whether preliminary ranging solutions are refined after an initial linear solution is found. If no initial preliminary solution is found using a linear solver, a non-linear solver will be used regardless of this value using an average solution as the initial value to be refined.- Parameters:
refineRangingPreliminarySolutions- true if preliminary ranging solutions must be refined after an initial linear solution, false otherwise.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isRssiPreliminarySolutionRefined
public boolean isRssiPreliminarySolutionRefined()Indicates whether preliminary RSSI solutions are refined after an initial linear solution is found. If no initial preliminary solution is found using a linear solver, a non-linear solver will be used regardless of this value using an average solution as the initial value to be refined.- Returns:
- true if preliminary RSSI solutions must be refined after an initial linear solution, false otherwise.
-
setRssiPreliminarySolutionRefined
public void setRssiPreliminarySolutionRefined(boolean refineRssiPreliminarySolutions) throws com.irurueta.navigation.LockedException Specifies whether preliminary RSSI solutions are refined after an initial linear solution is found. If no initial preliminary solution is found using a linear solver, a non-linear solver will be used regardless of this value using an average solution as the initial value to be refined.- Parameters:
refineRssiPreliminarySolutions- true if preliminary RSSI solutions must be refined after an initial linear solution, false otherwise.- 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 thangetMinRequiredSources().
-
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 thangetMinRequiredSources().
-
getRangingThreshold
Gets threshold to determine when samples are inliers or not, used during robust fine ranging 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 fine ranging 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 coarse RSSI position 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 coarse RSSI position 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.
-
getSources
Gets located radio sources used for lateration.- Returns:
- located radio sources used for lateration.
-
setSources
public void setSources(List<? extends RadioSourceLocated<P>> sources) throws com.irurueta.navigation.LockedException Sets located radio sources used for lateration.- Parameters:
sources- located radio sources used for lateration.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.IllegalArgumentException- if provided value is null or the number of provided sources is less than the required minimum.
-
getFingerprint
Gets fingerprint containing ranging+RSSI readings at an unknown location for provided located radio sources.- Returns:
- fingerprint containing readings at an unknown location for provided located radio sources.
-
getSourceQualityScores
public double[] getSourceQualityScores()Returns quality scores corresponding to each radio source. The larger the score value the better the quality of radio source.- Returns:
- quality scores corresponding to each radio source.
-
setSourceQualityScores
public void setSourceQualityScores(double[] sourceQualityScores) throws com.irurueta.navigation.LockedException Sets quality scores corresponding to each radio source. The larger the score value the better the quality of the radio source.- Parameters:
sourceQualityScores- quality scores corresponding to each radio source.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.IllegalArgumentException- if provided quality scores length is smaller than minimum required samples.
-
getFingerprintReadingsQualityScores
public double[] getFingerprintReadingsQualityScores()Gets quality scores corresponding to each reading within provided fingerprint. The larger the score value the better the quality of the reading.- Returns:
- quality scores corresponding to each reading within provided fingerprint.
-
setFingerprintReadingsQualityScores
public void setFingerprintReadingsQualityScores(double[] fingerprintReadingsQualityScores) throws com.irurueta.navigation.LockedException Sets quality scores corresponding to each reading within provided fingerprint. The larger the score value the better the quality of the reading.- Parameters:
fingerprintReadingsQualityScores- quality scores corresponding to each reading within provided fingerprint.- Throws:
com.irurueta.navigation.LockedException- if this instance is locked.IllegalArgumentException- if provided quality scores length is smaller than minimum required samples.
-
getListener
Gets listener to be notified of events raised by this instance.- Returns:
- listener to be notified of events raised by this instance.
-
getInitialPosition
Gets initial position to use as a starting point to find a new solution. This is optional, but if provided, when no linear solvers are used, this is taken into account. If linear solvers are used, this is ignored.- Returns:
- an initial position.
-
setInitialPosition
Sets initial position to use as a starting point to find a new solution. This is optional, but if provided, when no linear solvers are used, this is taken into account. If linear solvers are used, this is ignored.- Parameters:
initialPosition- an initial position.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
isLocked
public boolean isLocked()Returns boolean indicating if estimator is locked because estimation is under progress.- Returns:
- true if estimator is locked, false otherwise.
-
isReady
public boolean isReady()Indicates whether this instance is ready to start the estimation.- Returns:
- true if this instance is ready, false otherwise.
-
estimate
public P estimate() throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, com.irurueta.numerical.robust.RobustEstimatorExceptionEstimates position based on provided located radio sources and readings of such sources at an unknown location.- Returns:
- estimated position.
- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.com.irurueta.navigation.NotReadyException- if estimator is not ready.com.irurueta.numerical.robust.RobustEstimatorException- if estimation fails for some other reason.
-
getInliersData
public com.irurueta.numerical.robust.InliersData getInliersData()Gets data related to inliers found after estimation.- Returns:
- data related to inliers found after estimation.
-
getPositions
Gets known positions of radio sources used internally to solve lateration.- Returns:
- known positions used internally.
-
getDistances
public double[] getDistances()Gets Euclidean distances from known located radio sources to the location of provided readings in a fingerprint. Distance values are used internally to solve lateration.- Returns:
- Euclidean distances used internally.
-
getDistanceStandardDeviations
public double[] getDistanceStandardDeviations()Gets standard deviation distances from known located radio sources to the location of provided readings in a fingerprint. Distance standard deviations are used internally to solve lateration.- Returns:
- standard deviations used internally.
-
getCovariance
public com.irurueta.algebra.Matrix getCovariance()Gets estimated covariance of estimated position if available. This is only available when result has been refined and covariance is kept.- Returns:
- estimated covariance or null.
-
getEstimatedPosition
Gets estimated position.- Returns:
- estimated position.
-
getNumberOfDimensions
public abstract int getNumberOfDimensions()Gets number of dimensions of provided points.- Returns:
- number of dimensions of provided points.
-
getMinRequiredSources
public abstract int getMinRequiredSources()Gets minimum required number of located radio sources to perform lateration.- Returns:
- minimum required number of located radio sources to perform lateration.
-
buildEstimators
protected abstract void buildEstimators()Builds ranging and RSSI internal estimators. -
setupEstimators
private void setupEstimators() throws com.irurueta.navigation.LockedExceptionSetups ranging and RSSI internal estimators.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
internalSetSources
Internally sets located radio sources used for lateration.- Parameters:
sources- located radio sources used for lateration.- Throws:
IllegalArgumentException- if provided value is null or the number of provided sources is less than the required minimum.
-
internalSetSourceQualityScores
private void internalSetSourceQualityScores(double[] sourceQualityScores) Sets quality scores corresponding to each provided located radio source. This method is used internally and does not check whether instance is locked or not.- Parameters:
sourceQualityScores- quality scores to be set.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than 3 samples for 2D or 4 samples for 3D.
-
internalSetFingerprintReadingsQualityScores
private void internalSetFingerprintReadingsQualityScores(double[] fingerprintReadingsQualityScores) Sets quality scores corresponding to each provided reading within provided fingerprint. This method is used internally and does not check whether instance is locked or not.- Parameters:
fingerprintReadingsQualityScores- quality scores to be set.- Throws:
IllegalArgumentException- if provided quality scores length is smaller than 3 samples for 2D or 4 samples for 3D.
-