Class RobustLateration2DSolver
java.lang.Object
com.irurueta.navigation.lateration.RobustLaterationSolver<com.irurueta.geometry.Point2D>
com.irurueta.navigation.lateration.RobustLateration2DSolver
- Direct Known Subclasses:
LMedSRobustLateration2DSolver
,MSACRobustLateration2DSolver
,PROMedSRobustLateration2DSolver
,PROSACRobustLateration2DSolver
,RANSACRobustLateration2DSolver
public abstract class RobustLateration2DSolver
extends RobustLaterationSolver<com.irurueta.geometry.Point2D>
This is an abstract class to robustly solve the lateration problem by
finding the best pairs of 2D positions and distances among the provided
ones.
Implementations of this class should be able to detect and discard outliers
in order to find the best solution.
-
Field Summary
FieldsModifier and TypeFieldDescriptionHomogeneous linear lateration solver internally used by a robust algorithm.Linear lateration solver internally used by a robust algorithm.protected double[]
Distances for linear inner solver used during robust estimation.protected double[]
Standard deviations for non-linear inner solver used during robust estimation.protected com.irurueta.geometry.Point2D[]
Positions for linear inner solver used during robust estimation.protected NonLinearLeastSquaresLateration2DSolver
Non-linear lateration solver internally used to refine solution found by robust algorithm.Fields inherited from class com.irurueta.navigation.lateration.RobustLaterationSolver
confidence, covariance, DEFAULT_CONFIDENCE, DEFAULT_KEEP_COVARIANCE, DEFAULT_MAX_ITERATIONS, DEFAULT_PROGRESS_DELTA, DEFAULT_REFINE_PRELIMINARY_SOLUTIONS, DEFAULT_REFINE_RESULT, DEFAULT_ROBUST_METHOD, DEFAULT_USE_HOMOGENEOUS_LINEAR_SOLVER, distances, distanceStandardDeviations, EPSILON, estimatedPosition, initialPosition, inliersData, keepCovariance, listener, locked, MAX_CONFIDENCE, MAX_PROGRESS_DELTA, maxIterations, MIN_CONFIDENCE, MIN_ITERATIONS, MIN_PROGRESS_DELTA, positions, preliminarySubsetSize, progressDelta, refinePreliminarySolutions, refineResult, useHomogeneousLinearSolver, useLinearSolver
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Circle[] circles) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Circle[] circles, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Point2D[] positions, double[] distances) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Constructor.protected
RobustLateration2DSolver
(com.irurueta.geometry.Point2D[] positions, double[] distances, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Constructor.protected
RobustLateration2DSolver
(RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected com.irurueta.geometry.Point2D
attemptRefine
(com.irurueta.geometry.Point2D position) Attempts to refine estimated position if refinement is requested.static RobustLateration2DSolver
create()
Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Circle[] circles, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(double[] qualityScores, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Circle[] circles, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.geometry.Point2D[] positions, double[] distances, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener) Creates a robust 2D lateration solver using default robust method.static RobustLateration2DSolver
create
(RobustLaterationSolverListener<com.irurueta.geometry.Point2D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.static RobustLateration2DSolver
create
(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.com.irurueta.geometry.Circle[]
Gets circles defined by provided positions and distances.int
Minimum required number of positions and distances.int
Gets number of dimensions of provided points.private void
init()
Setup inner positions and distances.private void
internalSetCircles
(com.irurueta.geometry.Circle[] circles) Internally sets circles defining positions and Euclidean distances.private void
internalSetCirclesAndStandardDeviations
(com.irurueta.geometry.Circle[] circles, double[] radiusStandardDeviations) Internally sets circles defining positions and Euclidean distances along with the standard deviations of provided circles radii.void
setCircles
(com.irurueta.geometry.Circle[] circles) Sets circles defining positions and euclidean distances.void
setCirclesAndStandardDeviations
(com.irurueta.geometry.Circle[] circles, double[] radiusStandardDeviations) Sets circles defining positions and Euclidean distances along with the standard deviations of provided circles radii.void
setPreliminarySubsetSize
(int preliminarySubsetSize) Sets size of subsets to be checked during robust estimation.protected void
solvePreliminarySolutions
(int[] samplesIndices, List<com.irurueta.geometry.Point2D> solutions) Solves a preliminary solution for a subset of samples picked by a robust estimator.Methods inherited from class com.irurueta.navigation.lateration.RobustLaterationSolver
getConfidence, getCovariance, getDistances, getDistanceStandardDeviations, getEstimatedPosition, getInitialPosition, getInliersData, getListener, getMaxIterations, getMethod, getPositions, getPreliminarySubsetSize, getProgressDelta, getQualityScores, internalSetPositionsAndDistances, internalSetPositionsDistancesAndStandardDeviations, isCovarianceKept, isHomogeneousLinearSolverUsed, isLinearSolverUsed, isLocked, isPreliminarySolutionRefined, isReady, isResultRefined, setConfidence, setCovarianceKept, setHomogeneousLinearSolverUsed, setInitialPosition, setLinearSolverUsed, setListener, setMaxIterations, setPositionsAndDistances, setPositionsDistancesAndStandardDeviations, setPreliminarySolutionRefined, setProgressDelta, setQualityScores, setResultRefined, solve
-
Field Details
-
inhomogeneousLinearSolver
Linear lateration solver internally used by a robust algorithm. -
homogeneousLinearSolver
Homogeneous linear lateration solver internally used by a robust algorithm. -
nonLinearSolver
Non-linear lateration solver internally used to refine solution found by robust algorithm. -
innerPositions
protected com.irurueta.geometry.Point2D[] innerPositionsPositions for linear inner solver used during robust estimation. -
innerDistances
protected double[] innerDistancesDistances for linear inner solver used during robust estimation. -
innerDistanceStandardDeviations
protected double[] innerDistanceStandardDeviationsStandard deviations for non-linear inner solver used during robust estimation.
-
-
Constructor Details
-
RobustLateration2DSolver
protected RobustLateration2DSolver()Constructor. -
RobustLateration2DSolver
protected RobustLateration2DSolver(com.irurueta.geometry.Point2D[] positions, double[] distances) Constructor.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
RobustLateration2DSolver
protected RobustLateration2DSolver(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Constructor.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.distanceStandardDeviations
- standard deviations of provided measured distances.- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
RobustLateration2DSolver
protected RobustLateration2DSolver(com.irurueta.geometry.Circle[] circles) Constructor.- Parameters:
circles
- circles defining positions and distances.- Throws:
IllegalArgumentException
- if circles is null or if length of circles array is less than required (3 points).
-
RobustLateration2DSolver
protected RobustLateration2DSolver(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Constructor.- Parameters:
circles
- circles defining positions and distances.distanceStandardDeviations
- standard deviations of provided measured distances.- Throws:
IllegalArgumentException
- if circles is null, length of circles array is less than required (3 points) or don't have the same length.
-
-
Method Details
-
getNumberOfDimensions
public int getNumberOfDimensions()Gets number of dimensions of provided points.- Specified by:
getNumberOfDimensions
in classRobustLaterationSolver<com.irurueta.geometry.Point2D>
- Returns:
- always returns 2 dimensions.
-
getMinRequiredPositionsAndDistances
public int getMinRequiredPositionsAndDistances()Minimum required number of positions and distances. At least 3 positions will be required.- Specified by:
getMinRequiredPositionsAndDistances
in classRobustLaterationSolver<com.irurueta.geometry.Point2D>
- Returns:
- minimum required number of positions and distances.
-
setPreliminarySubsetSize
Sets size of subsets to be checked during robust estimation. This has to be at leastgetMinRequiredPositionsAndDistances()
.- Overrides:
setPreliminarySubsetSize
in classRobustLaterationSolver<com.irurueta.geometry.Point2D>
- Parameters:
preliminarySubsetSize
- size of subsets to be checked during robust estimation.- Throws:
LockedException
- if instance is busy solving the lateration problem.IllegalArgumentException
- if provided value is less thangetMinRequiredPositionsAndDistances()
.
-
getCircles
public com.irurueta.geometry.Circle[] getCircles()Gets circles defined by provided positions and distances.- Returns:
- circles defined by provided positions and distances.
-
setCircles
Sets circles defining positions and euclidean distances.- Parameters:
circles
- circles defining positions and distances.- Throws:
IllegalArgumentException
- if circles is null or length of array of circles is less than 3.LockedException
- if instance is busy solving the lateration problem.
-
setCirclesAndStandardDeviations
public void setCirclesAndStandardDeviations(com.irurueta.geometry.Circle[] circles, double[] radiusStandardDeviations) throws LockedException Sets circles defining positions and Euclidean distances along with the standard deviations of provided circles radii.- Parameters:
circles
- circles defining positions and distances.radiusStandardDeviations
- standard deviations of circles radii.- Throws:
IllegalArgumentException
- if circles is null, length of arrays is less than 3 or don't have the same length.LockedException
- if instance is busy solving the lateration problem.
-
create
public static RobustLateration2DSolver create(com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Point2D[] positions, double[] distances, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.distanceStandardDeviations
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Circle[] circles, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
circles
- circles defining positions and distances.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if circles is null, length of circles array is less than required (3 points) or don't have the same length.
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
circles
- circles defining positions and distances.distanceStandardDeviations
- standard deviations of provided measured distances.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if circles is null, length of circles array is less than required (3 points) or don't have the same length.
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- 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 2D lateration solver.
- Throws:
IllegalArgumentException
- if quality scores is null, length of quality scores is less than required minimum (3 samples).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions, distances or quality scores are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.distanceStandardDeviations
- standard deviations of provided measured distances.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions, distances, quality scores or standard deviations are null, don't have the same length or the length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Circle[] circles, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.circles
- circles defining positions and distances.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either circles or quality scores are null don't have the same length or their length is less than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations, com.irurueta.numerical.robust.RobustEstimatorMethod method) Creates a robust 2D lateration solver.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.circles
- circles defining positions and distances.distanceStandardDeviations
- standard deviations of provided measured distances.method
- robust estimator method.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either circles, quality scores or standard deviations are null, don't have the same length or their length is less than required (3 points).
-
create
Creates a robust 2D lateration solver using default robust method.- Returns:
- a new robust 2D lateration solver.
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Point2D[] positions, double[] distances) Creates a robust 2D lateration solver using default robust method.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.- Parameters:
positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.distanceStandardDeviations
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions or distances are null, don't have the same length or their length is smaller than required (3 points).
-
create
Creates a robust 2D lateration solver using default robust method.- Parameters:
circles
- circles defining positions and distances.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if circles is null, length of circles array is less than required (3 points) or don't have the same length.
-
create
public static RobustLateration2DSolver create(com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.- Parameters:
circles
- circles defining positions and distances.distanceStandardDeviations
- standard deviations of provided measured distances.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if circles is null, length of circles array is less than required (3 points) or don't have the same length.
-
create
Creates a robust 2D lateration solver using default robust method.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if quality scores is null, length of quality scores is less than required (3 samples).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances) Creates a robust 2D lateration solver using default robust method.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.positions
- known positions of static nodes.distances
- euclidean distances from static nodes to mobile node to be estimated.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions, distances or quality scores are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Point2D[] positions, double[] distances, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.positions
- known positions of static nodes.distances
- euclidean distance from static nodes to mobile node to be estimated.distanceStandardDeviations
- standard deviations of provided measured distances.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either positions, distances, quality scores or standard deviations are null, don't have the same length or their length is smaller than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Circle[] circles) Creates a robust 2D lateration solver using default robust method.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.circles
- circles defining positions and distances.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either circles or quality scores are null, don't have the same length or their length is less than required (3 points).
-
create
public static RobustLateration2DSolver create(double[] qualityScores, com.irurueta.geometry.Circle[] circles, double[] distanceStandardDeviations) Creates a robust 2D lateration solver using default robust method.- Parameters:
qualityScores
- quality scores corresponding to each provided sample. The larger the score value the better the quality of the sample.circles
- circles defining positions and distances.distanceStandardDeviations
- standard deviations of provided measured distances.- Returns:
- a new robust 2D lateration solver.
- Throws:
IllegalArgumentException
- if either circles, quality scores or standard deviations are null, don't have the same length or their length is less than required (3 points).
-
attemptRefine
protected com.irurueta.geometry.Point2D attemptRefine(com.irurueta.geometry.Point2D position) Attempts to refine estimated position if refinement is requested. This method returns a refined solution or provided input if refinement is not requested or has failed. If refinement is enabled, and it is requested to keep covariance, this method will also keep covariance of refined position.- Parameters:
position
- position estimated by a robust estimator without refinement.- Returns:
- solution after refinement (if requested) or provided non-refined estimated position if not requested or refinement failed.
-
solvePreliminarySolutions
protected void solvePreliminarySolutions(int[] samplesIndices, List<com.irurueta.geometry.Point2D> solutions) Solves a preliminary solution for a subset of samples picked by a robust estimator.- Parameters:
samplesIndices
- indices of samples picked by the robust estimator.solutions
- list where estimated preliminary solution will be stored.
-
internalSetCircles
private void internalSetCircles(com.irurueta.geometry.Circle[] circles) Internally sets circles defining positions and Euclidean distances.- Parameters:
circles
- circles defining positions and distances.- Throws:
IllegalArgumentException
- if circles is null or length of array of circles is less thangetMinRequiredPositionsAndDistances()
.
-
internalSetCirclesAndStandardDeviations
private void internalSetCirclesAndStandardDeviations(com.irurueta.geometry.Circle[] circles, double[] radiusStandardDeviations) Internally sets circles defining positions and Euclidean distances along with the standard deviations of provided circles radii.- Parameters:
circles
- circles defining positions and distances.radiusStandardDeviations
- standard deviations of circles radii.- Throws:
IllegalArgumentException
- if circles is null, length of arrays is less than 3 or don't have the same length.
-
init
private void init()Setup inner positions and distances.
-