Class RobustMixedPositionEstimator3D

java.lang.Object
com.irurueta.navigation.indoor.position.RobustPositionEstimator<com.irurueta.geometry.Point3D,Reading<? extends RadioSource>,RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D>>
com.irurueta.navigation.indoor.position.RobustMixedPositionEstimator<com.irurueta.geometry.Point3D>
com.irurueta.navigation.indoor.position.RobustMixedPositionEstimator3D
Direct Known Subclasses:
LMedSRobustMixedPositionEstimator3D, MSACRobustMixedPositionEstimator3D, PROMedSRobustMixedPositionEstimator3D, PROSACRobustMixedPositionEstimator3D, RANSACRobustMixedPositionEstimator3D

public abstract class RobustMixedPositionEstimator3D extends RobustMixedPositionEstimator<com.irurueta.geometry.Point3D>
Base class for robust 3D position estimators using located radio sources and their readings at unknown locations. These kind of estimators can be used to robustly determine the 3D position of a given device by getting readings at an unknown location of different radio sources whose locations are known. Implementations of this class should be able to detect and discard outliers in order to find the best solution.
  • Constructor Details

    • RobustMixedPositionEstimator3D

      protected RobustMixedPositionEstimator3D()
      Constructor.
    • RobustMixedPositionEstimator3D

      protected RobustMixedPositionEstimator3D(RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Constructor.
      Parameters:
      listener - listener in charge of handling events.
  • Method Details

    • create

      public static RobustMixedPositionEstimator3D create(com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener, com.irurueta.numerical.robust.RobustEstimatorMethod method)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      method - robust estimator method.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create()
      Creates a robust 3D position estimator.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint)
      Creates a robust 3D position estimator.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      fingerprint - fingerprint containing ranging+RSSI readings at an unknown location for provided located radio sources.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      Parameters:
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      Parameters:
      sources - located radio sources used for lateration.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores)
      Creates a robust 3D position estimator.
      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.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources)
      Creates a robust 3D position estimator.
      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.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      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.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      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.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided sources is null or the number of provided sources is less than the required minimum.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if provided fingerprint is null.
    • create

      public static RobustMixedPositionEstimator3D create(double[] sourceQualityScores, double[] fingerprintReadingQualityScores, List<? extends RadioSourceLocated<com.irurueta.geometry.Point3D>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D> listener)
      Creates a robust 3D position estimator.
      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.
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      listener - listener in charge of handling events.
      Returns:
      a robust 3D position estimator.
      Throws:
      IllegalArgumentException - if either provided sources or fingerprint is null or the number of provided sources is less than the required minimum.
    • getMinRequiredSources

      public int getMinRequiredSources()
      Gets minimum required number of located radio sources to perform lateration.
      Specified by:
      getMinRequiredSources in class RobustPositionEstimator<com.irurueta.geometry.Point3D,Reading<? extends RadioSource>,RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D>>
      Returns:
      minimum required number of located radio sources to perform lateration.
    • setPositionsDistancesDistanceStandardDeviationsAndQualityScores

      protected void setPositionsDistancesDistanceStandardDeviationsAndQualityScores(List<com.irurueta.geometry.Point3D> positions, List<Double> distances, List<Double> distanceStandardDeviations, List<Double> distanceQualityScores)
      Sets positions, distances and standard deviations of distances on internal lateration solver.
      Specified by:
      setPositionsDistancesDistanceStandardDeviationsAndQualityScores in class RobustPositionEstimator<com.irurueta.geometry.Point3D,Reading<? extends RadioSource>,RobustMixedPositionEstimatorListener<com.irurueta.geometry.Point3D>>
      Parameters:
      positions - positions to be set.
      distances - distances to be set.
      distanceStandardDeviations - standard deviations of distances to be set.
      distanceQualityScores - distance quality scores or null if not required.