Class RobustRangingRadioSourceEstimator3D<S extends RadioSource>
java.lang.Object
com.irurueta.navigation.indoor.radiosource.RobustRadioSourceEstimator<com.irurueta.geometry.Point3D,RangingReadingLocated<S,com.irurueta.geometry.Point3D>,RobustRangingRadioSourceEstimatorListener<S,com.irurueta.geometry.Point3D>>
com.irurueta.navigation.indoor.radiosource.RobustRangingRadioSourceEstimator<S,com.irurueta.geometry.Point3D>
com.irurueta.navigation.indoor.radiosource.RobustRangingRadioSourceEstimator3D<S>
- Type Parameters:
S- aRadioSourcetype.
- Direct Known Subclasses:
LMedSRobustRangingRadioSourceEstimator3D,MSACRobustRangingRadioSourceEstimator3D,PROMedSRobustRangingRadioSourceEstimator3D,PROSACRobustRangingRadioSourceEstimator3D,RANSACRobustRangingRadioSourceEstimator3D
public abstract class RobustRangingRadioSourceEstimator3D<S extends RadioSource>
extends RobustRangingRadioSourceEstimator<S,com.irurueta.geometry.Point3D>
This is an abstract class to robustly estimate 3D position of a radio source (e.g. Wi-Fi
access point or bluetooth beacon), by discarding outliers.
-
Nested Class Summary
Nested classes/interfaces inherited from class com.irurueta.navigation.indoor.radiosource.RobustRangingRadioSourceEstimator
RobustRangingRadioSourceEstimator.Solution<P extends com.irurueta.geometry.Point<?>> -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final RangingRadioSourceEstimator3D<S> Radio source estimator used internally.private final List<RangingReadingLocated<S, com.irurueta.geometry.Point3D>> Subset of readings used by inner estimator.Fields inherited from class com.irurueta.navigation.indoor.radiosource.RobustRangingRadioSourceEstimator
DEFAULT_USE_READING_POSITION_COVARIANCES, initialPosition, useReadingPositionCovariancesFields inherited from class com.irurueta.navigation.indoor.radiosource.RobustRadioSourceEstimator
confidence, covariance, DEFAULT_CONFIDENCE, DEFAULT_KEEP_COVARIANCE, DEFAULT_MAX_ITERATIONS, DEFAULT_PROGRESS_DELTA, DEFAULT_REFINE_RESULT, DEFAULT_ROBUST_METHOD, estimatedPosition, estimatedPositionCovariance, inliersData, keepCovariance, listener, locked, MAX_CONFIDENCE, MAX_PROGRESS_DELTA, maxIterations, MIN_CONFIDENCE, MIN_ITERATIONS, MIN_PROGRESS_DELTA, preliminarySubsetSize, progressDelta, readings, refineResult -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructor.protectedRobustRangingRadioSourceEstimator3D(com.irurueta.geometry.Point3D initialPosition) Constructor.protectedRobustRangingRadioSourceEstimator3D(com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener) Constructor.protectedRobustRangingRadioSourceEstimator3D(RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener) Constructor.protectedRobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings) Constructor.protectedRobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition) Constructor.protectedRobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener) Constructor.protectedRobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidattemptRefine(RobustRangingRadioSourceEstimator.Solution<com.irurueta.geometry.Point3D> result) Attempts to refine estimated position and transmitted power contained in provided solution if refinement is requested.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, RobustRangingRadioSourceEstimatorListener<S, com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.static <S extends RadioSource>
RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.RadioSourceLocated<com.irurueta.geometry.Point3D> Gets estimated located radio source.intGets minimum required number of readings to estimate position of radio source, which is 4 readings.intGets number of dimensions of position points.booleanIndicates whether an homogeneous linear solver is used to estimate an initial position.voidsetHomogeneousLinearSolverUsed(boolean useHomogeneousLinearSolver) Specifies whether an homogeneous linear solver is used to estimate an initial position.protected voidsolvePreliminarySolutions(int[] samplesIndices, List<RobustRangingRadioSourceEstimator.Solution<com.irurueta.geometry.Point3D>> solutions) Solves preliminary solution for a subset of samples.Methods inherited from class com.irurueta.navigation.indoor.radiosource.RobustRangingRadioSourceEstimator
getInitialPosition, getMethod, getUseReadingPositionCovariance, isReady, residual, setInitialPosition, setUseReadingPositionCovariancesMethods inherited from class com.irurueta.navigation.indoor.radiosource.RobustRadioSourceEstimator
areValidReadings, estimate, getConfidence, getCovariance, getEstimatedPosition, getEstimatedPositionCovariance, getInliersData, getListener, getMaxIterations, getPreliminarySubsetSize, getProgressDelta, getQualityScores, getReadings, internalSetReadings, isCovarianceKept, isLocked, isResultRefined, setConfidence, setCovarianceKept, setListener, setMaxIterations, setPreliminarySubsetSize, setProgressDelta, setQualityScores, setReadings, setResultRefined
-
Field Details
-
innerEstimator
Radio source estimator used internally. -
innerReadings
private final List<RangingReadingLocated<S extends RadioSource,com.irurueta.geometry.Point3D>> innerReadingsSubset of readings used by inner estimator.
-
-
Constructor Details
-
RobustRangingRadioSourceEstimator3D
protected RobustRangingRadioSourceEstimator3D()Constructor. -
RobustRangingRadioSourceEstimator3D
protected RobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings) Constructor. Sets radio signal ranging readings belonging to the same radio source.- Parameters:
readings- radio signal ranging readings belonging to the same radio source.- Throws:
IllegalArgumentException- if readings are not valid.
-
RobustRangingRadioSourceEstimator3D
protected RobustRangingRadioSourceEstimator3D(com.irurueta.geometry.Point3D initialPosition) Constructor.- Parameters:
initialPosition- initial position to start the estimation or radio source position.
-
RobustRangingRadioSourceEstimator3D
protected RobustRangingRadioSourceEstimator3D(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition) Constructor. Sets radio signal readings belonging to the same radio source.- Parameters:
readings- radio 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.
-
-
Method Details
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
readings- radio signal ranging readings belonging to the same radio source.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
initialPosition- initial position to start the estimation or radio source position.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
readings- radio signal ranging readings belonging to the same radio source.initialPosition- initial position to start the estimation or radio source position.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.*readings- radio signal ranging readings belonging to the same radio source.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- 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 or radio source position.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
create
public static <S extends RadioSource> RobustRangingRadioSourceEstimator3D<S> create(double[] qualityScores, List<? extends RangingReadingLocated<S, com.irurueta.geometry.Point3D>> readings, com.irurueta.geometry.Point3D initialPosition, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 3D position radio source estimator.- Type Parameters:
S- aRadioSourcetype.- Parameters:
qualityScores- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.*readings- radio signal ranging readings belonging to the same radio source.initialPosition- initial position to start the estimation or radio source position.method- robust estimator method.- Returns:
- a new robust 3D position radio source estimator.
-
getMinReadings
public int getMinReadings()Gets minimum required number of readings to estimate position of radio source, which is 4 readings.- Specified by:
getMinReadingsin classRobustRadioSourceEstimator<com.irurueta.geometry.Point3D,RangingReadingLocated<S extends RadioSource, com.irurueta.geometry.Point3D>, RobustRangingRadioSourceEstimatorListener<S extends RadioSource, com.irurueta.geometry.Point3D>> - Returns:
- minimum required number of readings.
-
getNumberOfDimensions
public int getNumberOfDimensions()Gets number of dimensions of position points. This is always 3.- Specified by:
getNumberOfDimensionsin classRobustRadioSourceEstimator<com.irurueta.geometry.Point3D,RangingReadingLocated<S extends RadioSource, com.irurueta.geometry.Point3D>, RobustRangingRadioSourceEstimatorListener<S extends RadioSource, com.irurueta.geometry.Point3D>> - Returns:
- number of dimensions of position points.
-
getEstimatedRadioSource
Gets estimated located radio source.- Specified by:
getEstimatedRadioSourcein classRobustRadioSourceEstimator<com.irurueta.geometry.Point3D,RangingReadingLocated<S extends RadioSource, com.irurueta.geometry.Point3D>, RobustRangingRadioSourceEstimatorListener<S extends RadioSource, com.irurueta.geometry.Point3D>> - Returns:
- estimated located radio source or null.
-
isHomogeneousLinearSolverUsed
public boolean isHomogeneousLinearSolverUsed()Indicates whether an homogeneous linear solver is used to estimate an initial position.- Specified by:
isHomogeneousLinearSolverUsedin classRobustRangingRadioSourceEstimator<S extends RadioSource,com.irurueta.geometry.Point3D> - Returns:
- true if homogeneous linear solver is used, false if an inhomogeneous linear one is used instead.
-
setHomogeneousLinearSolverUsed
public void setHomogeneousLinearSolverUsed(boolean useHomogeneousLinearSolver) throws com.irurueta.navigation.LockedException Specifies whether an homogeneous linear solver is used to estimate an initial position.- Specified by:
setHomogeneousLinearSolverUsedin classRobustRangingRadioSourceEstimator<S extends RadioSource,com.irurueta.geometry.Point3D> - Parameters:
useHomogeneousLinearSolver- true if homogeneous linear solver is used, false if an inhomogeneous linear one is used instead.- Throws:
com.irurueta.navigation.LockedException- if estimator is locked.
-
solvePreliminarySolutions
protected void solvePreliminarySolutions(int[] samplesIndices, List<RobustRangingRadioSourceEstimator.Solution<com.irurueta.geometry.Point3D>> solutions) Solves preliminary solution for a subset of samples.- Specified by:
solvePreliminarySolutionsin classRobustRangingRadioSourceEstimator<S extends RadioSource,com.irurueta.geometry.Point3D> - Parameters:
samplesIndices- indices of subset samples.solutions- instance where solution will be stored.
-