Class FingerprintPositionEstimator<P extends com.irurueta.geometry.Point<?>>

Type Parameters:
P - a Point type.
Direct Known Subclasses:
LinearFingerprintPositionEstimator, NonLinearFingerprintPositionEstimator

public abstract class FingerprintPositionEstimator<P extends com.irurueta.geometry.Point<?>> extends BaseFingerprintPositionEstimator<P,FingerprintPositionEstimatorListener<P>>
Base class for position estimators based on located fingerprints containing only RSSI readings and having as well prior knowledge of the location of radio sources associated to those readings.
  • Field Details

    • sources

      protected List<? extends RadioSourceLocated<P extends com.irurueta.geometry.Point<?>>> sources
      Located radio sources.
    • useSourcesPathLossExponentWhenAvailable

      protected boolean useSourcesPathLossExponentWhenAvailable
      Indicates whether path loss exponent of provided sources must be used when available (if true), or if fallback path loss exponent must be used instead.
    • useNoMeanNearestFingerprintFinder

      protected boolean useNoMeanNearestFingerprintFinder
      True indicates that mean effects are removed to find nearest located fingerprints based on RSSI readings. False indicates that RSSI readings are directly used, which might be inaccurate due to bias effects on new fingerprint readings for unknown locations. By default, mean effects are removed to remove possible bias effects due to readings measured by different devices with different hardware.
    • removeMeansFromFingerprintReadings

      protected boolean removeMeansFromFingerprintReadings
      True indicates that mean effects are removed from located fingerprints and from new fingerprints whose location is unknown. By default, this is disabled.
  • Constructor Details

    • FingerprintPositionEstimator

      protected FingerprintPositionEstimator()
      Constructor.
    • FingerprintPositionEstimator

      protected FingerprintPositionEstimator(FingerprintPositionEstimatorListener<P> listener)
      Constructor.
      Parameters:
      listener - listener in charge of handling events.
    • FingerprintPositionEstimator

      protected FingerprintPositionEstimator(List<? extends RssiFingerprintLocated<? extends RadioSource,? extends RssiReading<? extends RadioSource>,P>> locatedFingerprints, RssiFingerprint<? extends RadioSource,? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<P>> sources)
      Constructor.
      Parameters:
      locatedFingerprints - located fingerprints containing RSSI readings.
      fingerprint - fingerprint containing readings at an unknown location for provided located fingerprints.
      sources - located radio sources.
      Throws:
      IllegalArgumentException - if provided non located fingerprint is null, located fingerprints value is null or there are not enough fingerprints or readings within provided fingerprints (for 2D position estimation at least 2 located total readings are required among all fingerprints, for example 2 readings are required in a single fingerprint, or at least 2 fingerprints at different locations containing a single reading are required. For 3D position estimation 3 located total readings are required among all fingerprints).
    • FingerprintPositionEstimator

      protected FingerprintPositionEstimator(List<? extends RssiFingerprintLocated<? extends RadioSource,? extends RssiReading<? extends RadioSource>,P>> locatedFingerprints, RssiFingerprint<? extends RadioSource,? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<P>> sources, FingerprintPositionEstimatorListener<P> listener)
      Constructor.
      Parameters:
      locatedFingerprints - located fingerprints containing RSSI readings.
      fingerprint - fingerprint containing readings at an unknown location for provided located fingerprints.
      sources - located radio sources.
      listener - listener in charge of handling events.
      Throws:
      IllegalArgumentException - if provided non located fingerprint is null, located fingerprints value is null or there are not enough fingerprints or readings within provided fingerprints (for 2D position estimation at least 2 located total readings are required among all fingerprints, for example 2 readings are required in a single fingerprint, or at least 2 fingerprints at different locations containing a single reading are required. For 3D position estimation 3 located total readings are required among all fingerprints).
  • Method Details

    • getSources

      public List<RadioSourceLocated<P>> getSources()
      Gets located radio sources.
      Returns:
      located radio sources.
    • setSources

      public void setSources(List<? extends RadioSourceLocated<P>> sources) throws com.irurueta.navigation.LockedException
      Sets located radio sources.
      Parameters:
      sources - located radio sources.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
    • getUseSourcesPathLossExponentWhenAvailable

      public boolean getUseSourcesPathLossExponentWhenAvailable()
      Indicates whether path loss exponent of provided sources must be used when available (if true), or if fallback path loss exponent must be used instead.
      Returns:
      true to use path loss exponent of provided sources when available, false otherwise.
    • setUseSourcesPathLossExponentWhenAvailable

      public void setUseSourcesPathLossExponentWhenAvailable(boolean useSourcesPathLossExponentWhenAvailable) throws com.irurueta.navigation.LockedException
      Specifies whether path loss exponent of provided sources must be used when available (if true), or if fallback path loss exponent must be used instead.
      Parameters:
      useSourcesPathLossExponentWhenAvailable - true to use path loss exponent of provided sources when available, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
    • getUseNoMeanNearestFingerprintFinder

      public boolean getUseNoMeanNearestFingerprintFinder()
      Indicates which fingerprint finder is used. True indicates that mean effects are removed to find nearest located fingerprints based on RSSI readings. False indicates that RSSI readings are directly used, which might be inaccurate due to bias effects on new fingerprint readings for unknown locations. By default, mean effects are removed to remove possible bias effects due to readings measured by different devices with different hardware.
      Returns:
      indicates which fingerprint finder is used.
    • setUseNoMeanNearestFingerprintFinder

      public void setUseNoMeanNearestFingerprintFinder(boolean useNoMeanNearestFingerprintFinder) throws com.irurueta.navigation.LockedException
      Specifies which fingerprint finder is used. True indicates that mean effects are removed to find nearest located fingerprints based on RSSI readings. False indicates that RSSI readings are directly used, which might be inaccurate due to bias effects on new fingerprint readings for unknown locations. By default, mean effects are removed to remove possible bias effects due to readings measured by different devices with different hardware.
      Parameters:
      useNoMeanNearestFingerprintFinder - indicates which fingerprint finder is used.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
    • isMeansFromFingerprintReadingsRemoved

      public boolean isMeansFromFingerprintReadingsRemoved()
      Indicates whether mean effects are removed from fingerprints. True indicates that mean effects are removed from located fingerprints and from new fingerprints whose location is unknown. By default, this is disabled.
      Returns:
      true to remove mean effects, false otherwise.
    • setMeansFromFingerprintReadingsRemoved

      public void setMeansFromFingerprintReadingsRemoved(boolean removeMeansFromFingerprintReadings) throws com.irurueta.navigation.LockedException
      Specifies whether mean effects are removed from fingerprints. True indicates that mean effects are removed from located fingerprints and from new fingerprints whose location is unknown. By default, this is disabled.
      Parameters:
      removeMeansFromFingerprintReadings - true to remove mean effects, false otherwise.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
    • isReady

      public boolean isReady()
      Indicates whether estimator is ready to find a solution.
      Specified by:
      isReady in class BaseFingerprintPositionEstimator<P extends com.irurueta.geometry.Point<?>,FingerprintPositionEstimatorListener<P extends com.irurueta.geometry.Point<?>>>
      Returns:
      true if estimator is ready, false otherwise.
    • internalSetSources

      private void internalSetSources(List<? extends RadioSourceLocated<P>> sources)
      Internally sets located radio sources.
      Parameters:
      sources - located radio sources.
      Throws:
      IllegalArgumentException - if provided value is null.