Class PositionEstimatorHelper

java.lang.Object
com.irurueta.navigation.indoor.position.PositionEstimatorHelper

public class PositionEstimatorHelper extends Object
Utility class that converts located radio sources and fingerprints into positions, distances and distance standard deviations that can be used to solve the lateration problem.
  • Constructor Details

    • PositionEstimatorHelper

      private PositionEstimatorHelper()
      Constructor to prevent instantiation.
  • Method Details

    • buildPositionsAndDistances

      public static <P extends com.irurueta.geometry.Point<?>> void buildPositionsAndDistances(List<? extends RadioSourceLocated<P>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, List<P> positions, List<Double> distances)
      Builds positions and distances from provided located radio sources and fingerprint readings. Notice that positions and distances lists might not have the same size as provided sources list or fingerprint readings list if not all radio sources between sources and fingerprint readings match. If no sources, fingerprint readings, positions and distances are provided, this method makes no action.
      Type Parameters:
      P - a Point type.
      Parameters:
      sources - located radio sources to obtain positions and other parameters.
      fingerprint - fingerprint containing ranged RSSI readings.
      positions - list where extracted positions will be stored.
      distances - list where extracted distances will be stored.
    • buildPositionsDistancesAndDistanceStandardDeviations

      public static <P extends com.irurueta.geometry.Point<?>> void buildPositionsDistancesAndDistanceStandardDeviations(List<? extends RadioSourceLocated<P>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, boolean useRadioSourcePositionCovariance, double fallbackDistanceStandardDeviation, List<P> positions, List<Double> distances, List<Double> distanceStandardDeviations)
      Builds positions, distances and standard deviations from provided located radio sources and fingerprint readings. Notice that positions, distances and standard deviations lists might not have the same size as provided sources list or fingerprint readings list if not all radio sources between sources and fingerprint readings match. If no sources, fingerprint readings, positions, distances and standard deviations are provided, this method makes no action.
      Type Parameters:
      P - a Point type.
      Parameters:
      sources - located radio sources to obtain positions and other parameters.
      fingerprint - fingerprint containing ranged or RSSI readings.
      useRadioSourcePositionCovariance - true to take into account radio source position covariance, false otherwise.
      fallbackDistanceStandardDeviation - distance standard deviation to be assumed when it cannot be determined.
      positions - list where extracted positions will be stored.
      distances - list where extracted distances will be stored.
      distanceStandardDeviations - list where extracted standard deviations of distances will be stored.
      Throws:
      IllegalArgumentException - if provided distance standard deviation fallback is negative.
    • buildPositionsDistancesDistanceStandardDeviationsAndQualityScores

      public static <P extends com.irurueta.geometry.Point<?>> void buildPositionsDistancesDistanceStandardDeviationsAndQualityScores(List<? extends RadioSourceLocated<P>> sources, Fingerprint<? extends RadioSource,? extends Reading<? extends RadioSource>> fingerprint, double[] sourceQualityScores, double[] fingerprintReadingsQualityScores, boolean useRadioSourcePositionCovariance, double fallbackDistanceStandardDeviation, List<P> positions, List<Double> distances, List<Double> distanceStandardDeviations, List<Double> distanceQualityScores)
      Builds positions, distances and standard deviations from provided located radio sources and fingerprint readings. Notice that positions, distance and standard deviations lists might not have the same size as provided sources list or fingerprint readings list if not all radio sources between sources and fingerprint readings match. If no sources, fingerprint readings, positions, distances and standard deviations are provided, this method makes no action.
      Type Parameters:
      P - a Point type.
      Parameters:
      sources - located radio sources to obtain positions and other parameters.
      fingerprint - fingerprint containing ranged or RSSI readings.
      sourceQualityScores - quality scores corresponding to each provided located radio source. The larger the score value the better the quality of the sample. If null, no quality scores will be stored.
      fingerprintReadingsQualityScores - quality scores corresponding to each reading within provided fingerprint.
      useRadioSourcePositionCovariance - true to take into account radio source position covariance, false otherwise.
      fallbackDistanceStandardDeviation - distance standard deviation to be assumed when it cannot be determined.
      positions - list where extracted positions will be stored.
      distances - list where extracted distances will be stored.
      distanceStandardDeviations - list where extracted standard deviations of distances will be stored.
      distanceQualityScores - list where extracted quality scores will be stored. If null, quality scores will be ignored.
      Throws:
      IllegalArgumentException - if provided distance standard deviation fallback is negative.
    • computeDistanceRanging

      private static Double computeDistanceRanging(RangingReading<? extends RadioSource> reading)
      Obtains distance for a ranging reading.
      Parameters:
      reading - a ranging reading.
      Returns:
      distance to reading source or null if not available.
    • computeDistanceRanging

      private static Double computeDistanceRanging(RangingAndRssiReading<? extends RadioSource> reading)
      Obtains distance for a ranging reading.
      Parameters:
      reading - a ranging reading.
      Returns:
      distance to reading source or null if not available.
    • computeDistanceRssi

      private static <P extends com.irurueta.geometry.Point<?>> Double computeDistanceRssi(RadioSourceLocated<P> locatedSource, RssiReading<? extends RadioSource> reading)
      Obtains distance for an RSSI reading.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      reading - an RSSI reading.
      Returns:
      estimated distance or null if not available.
    • computeDistanceRssi

      private static <P extends com.irurueta.geometry.Point<?>> Double computeDistanceRssi(RadioSourceLocated<P> locatedSource, RangingAndRssiReading<? extends RadioSource> reading)
      Obtains distance for a ranging and RSSI reading.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      reading - a ranging and RSSI reading.
      Returns:
      estimated distance or null if not available.
    • computeDistanceRssi

      private static <P extends com.irurueta.geometry.Point<?>> Double computeDistanceRssi(RadioSourceLocated<P> locatedSource, double rxPower)
      Obtains distance.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      rxPower - ;
      Returns:
      estimated distance or null if not available.
    • computeDistanceAndStandardDeviationRanging

      private static void computeDistanceAndStandardDeviationRanging(RangingReading<? extends RadioSource> reading, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation for a ranging reading.
      Parameters:
      reading - a ranging reading.
      positionStandardDeviation - position standard deviation, or null if not available.
      result - array containing distance and its standard deviation, in such order.
    • computeDistanceAndStandardDeviationRanging

      private static void computeDistanceAndStandardDeviationRanging(RangingAndRssiReading<? extends RadioSource> reading, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation for a ranging reading.
      Parameters:
      reading - a ranging reading.
      positionStandardDeviation - position standard deviation, or null if not available
      result - array containing distance and its standard deviation, in such order.
    • computeDistanceAndStandardDeviationRanging

      private static void computeDistanceAndStandardDeviationRanging(double distance, Double distanceStandardDeviation, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation.
      Parameters:
      distance - a distance.
      distanceStandardDeviation - distance standard deviation.
      positionStandardDeviation - position standard deviation.
      result - array containing distance and its standard deviation, in such order.
    • computeDistanceAndStandardDeviationRssi

      private static <P extends com.irurueta.geometry.Point<?>> void computeDistanceAndStandardDeviationRssi(RadioSourceLocated<P> locatedSource, RssiReading<? extends RadioSource> reading, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation for an RSSI reading.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      reading - an RSSI reading.
      positionStandardDeviation - position standard deviation, or null if not available.
      result - array containing distance and its standard deviation, in such order.
    • computeDistanceAndStandardDeviationRssi

      private static <P extends com.irurueta.geometry.Point<?>> void computeDistanceAndStandardDeviationRssi(RadioSourceLocated<P> locatedSource, RangingAndRssiReading<? extends RadioSource> reading, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation for a ranging and RSSI reading.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      reading - a ranging and RSSI reading.
      positionStandardDeviation - position standard deviation, or null if not available.
      result - array containing distance and its standard deviation, in such order.
    • computeDistanceAndStandardDeviationRssi

      private static <P extends com.irurueta.geometry.Point<?>> void computeDistanceAndStandardDeviationRssi(RadioSourceLocated<P> locatedSource, double rxPower, Double rxPowerStandardDeviation, Double positionStandardDeviation, Double[] result)
      Obtains distance and its standard deviation.
      Type Parameters:
      P - a Point type.
      Parameters:
      locatedSource - a located source, that must also have power information.
      rxPower - received power expressed in dBm's.
      rxPowerStandardDeviation - received power standard deviation.
      positionStandardDeviation - position standard deviation.
      result - array containing distance and its standard deviation, in such order.