Class PositionEstimator<P extends com.irurueta.geometry.Point<?>,R extends Reading<? extends RadioSource>,L extends PositionEstimatorListener<? extends PositionEstimator<?,?,?>>>

java.lang.Object
com.irurueta.navigation.indoor.position.PositionEstimator<P,R,L>
Type Parameters:
P - a Point type.
R - a Reading type.
L - a PositionEstimatorListener type.
Direct Known Subclasses:
MixedPositionEstimator, RangingAndRssiPositionEstimator, RangingPositionEstimator, RssiPositionEstimator

public abstract class PositionEstimator<P extends com.irurueta.geometry.Point<?>,R extends Reading<? extends RadioSource>,L extends PositionEstimatorListener<? extends PositionEstimator<?,?,?>>> extends Object
Base class for position estimators using located radio sources and their readings at an unknown location (i.e. a non located fingerprint). These kind of estimators can be used to determine the position of a given device by getting readings at an unknown location of different radio sources whose locations are known.
  • Field Details

    • sources

      protected List<? extends RadioSourceLocated<P extends com.irurueta.geometry.Point<?>>> sources
      Located radio sources used for lateration.
    • fingerprint

      protected Fingerprint<? extends RadioSource,? extends R extends Reading<? extends RadioSource>> fingerprint
      Fingerprint containing readings at an unknown location for provided located radio sources.
    • listener

      protected L extends PositionEstimatorListener<? extends PositionEstimator<?,?,?>> listener
      Listener to be notified of events raised by this instance.
    • estimatedPositionCoordinates

      protected double[] estimatedPositionCoordinates
      Estimated inhomogeneous position coordinates.
  • Constructor Details

    • PositionEstimator

      protected PositionEstimator()
      Constructor.
    • PositionEstimator

      protected PositionEstimator(L listener)
      Constructor.
      Parameters:
      listener - listener in charge of handling events.
  • Method Details

    • getSources

      public List<RadioSourceLocated<P>> 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

      public Fingerprint<RadioSource,Reading<RadioSource>> getFingerprint()
      Gets fingerprint containing readings at an unknown location for provided located radio sources.
      Returns:
      fingerprint containing readings at an unknown location for provided located radio sources.
    • setFingerprint

      public void setFingerprint(Fingerprint<? extends RadioSource,? extends R> fingerprint) throws com.irurueta.navigation.LockedException
      Sets fingerprint containing readings at an unknown location for provided located radio sources.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
      IllegalArgumentException - if provided value is null.
    • getListener

      public L getListener()
      Gets listener to be notified of events raised by this instance.
      Returns:
      listener to be notified of events raised by this instance.
    • setListener

      public void setListener(L listener) throws com.irurueta.navigation.LockedException
      Sets listener to be notified of events raised by this instance.
      Parameters:
      listener - listener to be notified of events raised by this instance.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
    • getEstimatedPositionCoordinates

      public double[] getEstimatedPositionCoordinates()
      Gets estimated inhomogeneous position coordinates.
      Returns:
      estimated inhomogeneous position coordinates.
    • getEstimatedPosition

      public void getEstimatedPosition(P estimatedPosition)
      Gets estimated position and stores result into provided instance.
      Parameters:
      estimatedPosition - instance where estimated position will be stored.
    • 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.
    • isReady

      public abstract boolean isReady()
      Indicates whether estimator is ready to find a solution.
      Returns:
      true if estimator is ready, false otherwise.
    • isLocked

      public abstract boolean isLocked()
      Returns boolean indicating whether this estimator is locked because an estimation is already in progress.
      Returns:
      true if estimator is locked, false otherwise.
    • estimate

      public abstract void estimate() throws com.irurueta.navigation.LockedException, com.irurueta.navigation.NotReadyException, PositionEstimationException
      Estimates position based on provided located radio sources and readings of such radio sources at an unknown location.
      Throws:
      com.irurueta.navigation.LockedException - if estimator is locked.
      com.irurueta.navigation.NotReadyException - if estimator is not ready.
      PositionEstimationException - if estimation fails for some other reason.
    • getEstimatedPosition

      public abstract P getEstimatedPosition()
      Gets estimated position.
      Returns:
      estimated position.
    • getPositions

      public abstract P[] getPositions()
      Gets known positions of radio sources used internally to solve lateration.
      Returns:
      known positions used internally.
    • getDistances

      public abstract 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.
    • internalSetSources

      protected void internalSetSources(List<? extends RadioSourceLocated<P>> sources)
      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.
    • internalSetFingerprint

      protected void internalSetFingerprint(Fingerprint<? extends RadioSource,? extends R> fingerprint)
      Internally sets fingerprint containing readings at an unknown location for provided located radio sources.
      Parameters:
      fingerprint - fingerprint containing readings at an unknown location for provided located radio sources.
      Throws:
      IllegalArgumentException - if provided value is null.