Class SecondOrderNonLinearFingerprintPositionEstimator2D
java.lang.Object
com.irurueta.navigation.indoor.fingerprint.BaseFingerprintPositionEstimator<com.irurueta.geometry.Point2D,FingerprintPositionEstimatorListener<com.irurueta.geometry.Point2D>>
com.irurueta.navigation.indoor.fingerprint.FingerprintPositionEstimator<com.irurueta.geometry.Point2D>
com.irurueta.navigation.indoor.fingerprint.NonLinearFingerprintPositionEstimator<com.irurueta.geometry.Point2D>
com.irurueta.navigation.indoor.fingerprint.NonLinearFingerprintPositionEstimator2D
com.irurueta.navigation.indoor.fingerprint.SecondOrderNonLinearFingerprintPositionEstimator2D
public class SecondOrderNonLinearFingerprintPositionEstimator2D
extends NonLinearFingerprintPositionEstimator2D
2D position estimator based on located fingerprints containing only RSSI readings and
having as well prior knowledge of the location of radio sources associated to those
readings.
This implementation uses a second-order Taylor approximation over provided located
fingerprints to determine an approximate position for a non-located fingerprint using
a non-linear solving algorithm.
An initial position can be provided as a starting point to solve the position,
otherwise the average point of selected nearest fingerprints is used as a starting
point.
-
Field Summary
Fields inherited from class com.irurueta.navigation.indoor.fingerprint.NonLinearFingerprintPositionEstimator
DEFAULT_PROPAGATE_FINGERPRINT_POSITION_COVARIANCE, DEFAULT_PROPAGATE_FINGERPRINT_RSSI_STANDARD_DEVIATION, DEFAULT_PROPAGATE_PATHLOSS_EXPONENT_STANDARD_DEVIATION, DEFAULT_PROPAGATE_RADIO_SOURCE_POSITION_COVARIANCE, DEFAULT_TYPE, FALLBACK_RSSI_STANDARD_DEVIATION, TINY_RSSI_STDFields inherited from class com.irurueta.navigation.indoor.fingerprint.FingerprintPositionEstimator
removeMeansFromFingerprintReadings, sources, useNoMeanNearestFingerprintFinder, useSourcesPathLossExponentWhenAvailableFields inherited from class com.irurueta.navigation.indoor.fingerprint.BaseFingerprintPositionEstimator
DEFAULT_MAX_NEAREST_FINGERPRINTS, DEFAULT_MIN_NEAREST_FINGERPRINTS, DEFAULT_PATH_LOSS_EXPONENT, estimatedPositionCoordinates, fingerprint, listener, locatedFingerprints, locked, maxNearestFingerprints, minNearestFingerprints, nearestFingerprints, pathLossExponent -
Constructor Summary
ConstructorsConstructorDescriptionConstructor.SecondOrderNonLinearFingerprintPositionEstimator2D(FingerprintPositionEstimatorListener<com.irurueta.geometry.Point2D> listener) Constructor.SecondOrderNonLinearFingerprintPositionEstimator2D(List<? extends RssiFingerprintLocated<? extends RadioSource, ? extends RssiReading<? extends RadioSource>, com.irurueta.geometry.Point2D>> locatedFingerprints, RssiFingerprint<? extends RadioSource, ? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<com.irurueta.geometry.Point2D>> sources) Constructor.SecondOrderNonLinearFingerprintPositionEstimator2D(List<? extends RssiFingerprintLocated<? extends RadioSource, ? extends RssiReading<? extends RadioSource>, com.irurueta.geometry.Point2D>> locatedFingerprints, RssiFingerprint<? extends RadioSource, ? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<com.irurueta.geometry.Point2D>> sources, com.irurueta.geometry.Point2D initialPosition) Constructor.SecondOrderNonLinearFingerprintPositionEstimator2D(List<? extends RssiFingerprintLocated<? extends RadioSource, ? extends RssiReading<? extends RadioSource>, com.irurueta.geometry.Point2D>> locatedFingerprints, RssiFingerprint<? extends RadioSource, ? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<com.irurueta.geometry.Point2D>> sources, com.irurueta.geometry.Point2D initialPosition, FingerprintPositionEstimatorListener<com.irurueta.geometry.Point2D> listener) Constructor.SecondOrderNonLinearFingerprintPositionEstimator2D(List<? extends RssiFingerprintLocated<? extends RadioSource, ? extends RssiReading<? extends RadioSource>, com.irurueta.geometry.Point2D>> locatedFingerprints, RssiFingerprint<? extends RadioSource, ? extends RssiReading<? extends RadioSource>> fingerprint, List<? extends RadioSourceLocated<com.irurueta.geometry.Point2D>> sources, FingerprintPositionEstimatorListener<com.irurueta.geometry.Point2D> listener) Constructor. -
Method Summary
Modifier and TypeMethodDescriptionprotected doubleevaluate(int i, double[] point, double[] params, double[] derivatives) Evaluates a non-linear multi dimension function at provided point using provided parameters and returns its evaluation and derivatives of the function respect the function parameters.getType()Gets type of position estimator.protected DoublepropagateVariances(double fingerprintRssi, double pathlossExponent, com.irurueta.geometry.Point2D fingerprintPosition, com.irurueta.geometry.Point2D radioSourcePosition, com.irurueta.geometry.Point2D estimatedPosition, Double fingerprintRssiVariance, Double pathlossExponentVariance, com.irurueta.algebra.Matrix fingerprintPositionCovariance, com.irurueta.algebra.Matrix radioSourcePositionCovariance) Propagates provided variances into RSSI variance of non-located fingerprint reading.Methods inherited from class com.irurueta.navigation.indoor.fingerprint.NonLinearFingerprintPositionEstimator2D
create, create, create, create, create, create, create, create, create, create, create, create, getEstimatedPosition, getNumberOfDimensionsMethods inherited from class com.irurueta.navigation.indoor.fingerprint.NonLinearFingerprintPositionEstimator
estimate, getChiSq, getCovariance, getFallbackRssiStandardDeviation, getInitialPosition, isFingerprintPositionCovariancePropagated, isFingerprintRssiStandardDeviationPropagated, isPathlossExponentStandardDeviationPropagated, isRadioSourcePositionCovariancePropagated, setFallbackRssiStandardDeviation, setFingerprintPositionCovariancePropagated, setFingerprintRssiStandardDeviationPropagated, setInitialPosition, setPathlossExponentStandardDeviationPropagated, setRadioSourcePositionCovariancePropagatedMethods inherited from class com.irurueta.navigation.indoor.fingerprint.FingerprintPositionEstimator
getSources, getUseNoMeanNearestFingerprintFinder, getUseSourcesPathLossExponentWhenAvailable, isMeansFromFingerprintReadingsRemoved, isReady, setMeansFromFingerprintReadingsRemoved, setSources, setUseNoMeanNearestFingerprintFinder, setUseSourcesPathLossExponentWhenAvailableMethods inherited from class com.irurueta.navigation.indoor.fingerprint.BaseFingerprintPositionEstimator
getEstimatedPosition, getEstimatedPositionCoordinates, getFingerprint, getListener, getLocatedFingerprints, getMaxNearestFingerprints, getMinNearestFingerprints, getNearestFingerprints, getPathLossExponent, isLocked, setFingerprint, setListener, setLocatedFingerprints, setMinMaxNearestFingerprints, setPathLossExponent, totalReadings
-
Constructor Details
-
SecondOrderNonLinearFingerprintPositionEstimator2D
public SecondOrderNonLinearFingerprintPositionEstimator2D()Constructor.
-
-
Method Details
-
getType
Gets type of position estimator.- Specified by:
getTypein classNonLinearFingerprintPositionEstimator<com.irurueta.geometry.Point2D>- Returns:
- type of position estimator.
-
evaluate
protected double evaluate(int i, double[] point, double[] params, double[] derivatives) Evaluates a non-linear multi dimension function at provided point using provided parameters and returns its evaluation and derivatives of the function respect the function parameters.- Specified by:
evaluatein classNonLinearFingerprintPositionEstimator<com.irurueta.geometry.Point2D>- Parameters:
i- number of sample being evaluated.point- point where function will be evaluated.params- initial parameters estimation to be tried. These will change as the Levenberg-Marquardt algorithm iterates to the best solution. These are used as input parameters along with point to evaluate function.derivatives- partial derivatives of the function respect to each provided parameter.- Returns:
- function evaluation at provided point.
-
propagateVariances
protected Double propagateVariances(double fingerprintRssi, double pathlossExponent, com.irurueta.geometry.Point2D fingerprintPosition, com.irurueta.geometry.Point2D radioSourcePosition, com.irurueta.geometry.Point2D estimatedPosition, Double fingerprintRssiVariance, Double pathlossExponentVariance, com.irurueta.algebra.Matrix fingerprintPositionCovariance, com.irurueta.algebra.Matrix radioSourcePositionCovariance) Propagates provided variances into RSSI variance of non-located fingerprint reading.- Specified by:
propagateVariancesin classNonLinearFingerprintPositionEstimator<com.irurueta.geometry.Point2D>- Parameters:
fingerprintRssi- closest located fingerprint reading RSSI expressed in dBm's.pathlossExponent- path-loss exponent.fingerprintPosition- position of closest fingerprint.radioSourcePosition- radio source position associated to fingerprint reading.estimatedPosition- position to be estimated. Usually this is equal to the initial position used by a non-linear algorithm.fingerprintRssiVariance- variance of fingerprint RSSI or null if unknown.pathlossExponentVariance- variance of path-loss exponent or null if unknown.fingerprintPositionCovariance- covariance of fingerprint position or null if unknown.radioSourcePositionCovariance- covariance of radio source position or null if unknown.- Returns:
- variance of RSSI measured at non located fingerprint reading.
-