Main Content

tdoaposest

Estimate target position from TDOA measurements

Since R2024a

    Description

    Estimate target positions from time-difference-of-arrival (TDOA) measurements and anchor positions. Estimate variances of the target positions.

    tgtposest = tdoaposest(tdoaest,tdoavar,anchorpos) estimates the position, tgtposest, of a target from TDOA measurements, tdoaest, at multiple anchors with known positions, anchorpos. tdoavar represents the variance of the time-difference of arrival measurements.

    example

    tgtposest = tdoaposest(___,PropagationSpeed=C) also specifies the signal propagation speed, C.

    [tgtposest,tgtposcov] = tdoaposest(___) returns the target position covariance matrix, tgtposcov.

    Examples

    collapse all

    Estimate TDOA at five anchors with known positions in the presence of multipath by applying the GCC-PHAT algorithm on the received signals from a target. Then, the five anchors generate all TDOA combinations of TDOA estimates at different anchor pairs to form all possible TDOA groups. Finally, the five anchors apply two-step WLLS algorithm on each TDOA group using anchor positions. The data is loaded from the TDOAEstimatorExampleData mat-file, whose variables are listed below:

    Variable

    Definition

    Xtime

    Time-domain received signals

    fs

    Sample frequency

    anchorpos

    Anchor positions

    npow

    Noise power

    tgtpos

    Target positions

    load TDOAEstimatorExampleData

    Configure the TDOA estimator.

    tdoaEstimator = phased.TDOAEstimator(SampleRate=fs, ...
        NumEstimates=2,VarianceOutputPort=true,NoisePower=npow);

    Perform TDOA estimation.

    [tdoaest,tdoavar] = tdoaEstimator(Xtime);

    Generate all TDOA combinations to form all possible TDOA groups.

    tdoaestcell = num2cell(tdoaest,1);
    tdoagrouptable = combinations(tdoaestcell{:});
    tdoagroup = table2array(tdoagrouptable);

    TDOA position estimation.

      tgtposest = tdoaposest(tdoagroup,tdoavar,anchorpos);

    Remove all invalid position estimates.

    tgtposestvalid = tgtposest(:,~isnan(tgtposest(1,:)));

    RMSE of the target position estimates.

    rmsetgtpos = rmse(tgtposestvalid,tgtpos)
    rmsetgtpos = 
    0.1853
    
    disp(['RMS TDOA positioning error = ',num2str(rmsetgtpos),' meters.'])
    RMS TDOA positioning error = 0.1853 meters.
    
    plotTDOASpectrum(tdoaEstimator,AnchorPairIndex=4)

    Figure contains an axes object. The axes object with title TDOA Spectrum, xlabel TDOA (ns), ylabel Power (dB) contains 2 objects of type line. One or more of the lines displays its values using only markers These objects represent TDOA Spectrum, TDOA Estimate.

    Input Arguments

    collapse all

    Estimated time-difference of arrival of signals from a target to any anchor (except the first) with respect to the first anchor, specified as an (L–1)-element real-valued vector. K represents the number of TDOA groups and L represents the number of anchors. Each row of tdoaest represents a TDOA group corresponding to the TDOA's measured at the L–1 anchor pairs for a potential target. The elements in the lth column of tdoaest represents the estimated TDOA's of the lth anchor pair with the first anchor as the reference anchor. Units are in seconds.

    Data Types: single | double

    Variance of estimated time-differences of arrival, specified as a real-valued 1-by-(L–1) vector of positive values or a K-by-(L–1) matrix of positive values. tdoavar represents the variance of TDOA estimation for the L–1 anchor pairs. When tdoavar is a vector, the variance estimates for L–1 anchor pairs are the same for all K TDOA groups. When tdoavar is a matrix, the variance estimates for L–1 anchor pairs are different for different TDOA groups. Units are in seconds-squared.

    Data Types: single | double

    Anchor positions, specified as a Q-by-L real-valued matrix or a Q-by-L-by-K real-valued array representing the position of the L anchors in the Q-dimensional Cartesian space (Q can be 2 or 3).

    When anchorpos is a matrix, the anchor positions are the same for all K TDOA groups. The lth column of anchorpos denotes the position of the lth anchor in the Q-dimensional Cartesian space. When anchorpos is an array, anchor positions can be different for different TDOA groups. Units are in meters.

    Data Types: single | double

    Signal propagation speed, specified as a positive real-valued scalar. Use this argument with the PropagationSpeed name-value pair. Units are in meters per second.

    Example: PropagationSpeed=3e8

    Data Types: single | double

    Output Arguments

    collapse all

    Estimated target positions, returned as a real-valued Q-by-K matrix derived from TDOA measurements where K is the number of targets, Let Q=2 for two-dimensional space and Q=3 for three-dimension space. Units are in meters.

    When there is at least one NaN in the kth row of tdoaest, the kth column of tgtposest is an all-NaN vector. When the kth row of tdoaest is an invalid TDOA group, the kth column of tgtposest is an all-NaN vector as well.

    In the case when the actual values in the input tdoavar are unknown, you should choose tdoavar to be a positive row vector with each element equal to identical small values. A small value does not affect the solution of tgtposest. Choosing tdoavar in this way reduces the statistical TDOA validation method to be almost equivalent to geometric checking of the triangle inequality.

    Target position covariance matrices, returned as a Q-by-Q-by-K array. Each non-NaN page is a real-valued positive semi-definite symmetric Q-by-Q matrix representing the estimated target position covariance derived from TDOA estimates. tgtposcov is calculated through the CRLB of the TDOA position estimator and requires knowledge of tdoavar. When there is at least one NaN in the kth row of tdoaest, the kth page of tgtposcov is an all-NaN matrix. Units are in ㎡eters-squared.

    Data Types: single | double

    Algorithms

    collapse all

    Precision

    This function supports single and double precision for input arguments. If the input argument tdoaest is single precision, the outputs are single precision. If the input argument tdoaest is double precision, the outputs are double precision. The precision of the outputs is independent of the precision of the other arguments.

    Positioning Algorithm

    The function estimates target positions obtained from multiple TDOA measurements. Geometrically, each noise-free TDOA defines a hyperbola or a hyperboloid of paths of constant time differences where a target must lie in the two--dimensional or three-dimensional space. The target position is given by the intersection of multiple hyperbolas or hyperboloids.

    In the presence of TDOA estimation uncertainty, the hyperbolas may not intersect at a single point and, therefore, optimal estimation algorithms are needed to solve for target positions. The tgtposest function uses a two-step weighted linear least squares (WLLS) algorithm to merge the TDOA measurements, tdoaest, and the anchor positions, anchorpos, into the estimated target position tgtposest. The weights used in the WLLS algorithm are calculated from the TDOA measurements, tdoaest, and the TDOA estimation variance, tdoavar. The WLLS algorithm approximates a realization of the maximum-likelihood estimation algorithm and can attain the TDOA position estimation Cramer-Rao lower bound (CRLB) when the TDOA estimation errors are small.

    References

    [1] Zekavat, Seyed A., and R. Michael Buehrer, eds. Handbook of Position Location: Theory, Practice, and Advances. IEEE Series on Mobile & Digital Communication. Hoboken, New Jersey: Wiley-IEEE Press, 2019.

    [2] Molisch, Andreas F. Wireless Communications: From Fundamentals to Beyond 5G. Third edition. IEEE Press. Hoboken, NJ: Wiley-IEEE Press, 2023.

    [3] Chan, Y.T., and K.C. Ho. “A Simple and Efficient Estimator for Hyperbolic Location.” IEEE Transactions on Signal Processing 42, no. 8 (August 1994): 1905–15. https://doi.org/10.1109/78.301830.

    [4] R. Amiri, F. Behnia and A. Noroozi, "An Efficient Estimator for TDOA-Based Source Localization With Minimum Number of Sensors," in IEEE Communications Letters, vol. 22, no. 12, pp. 2499-2502, Dec. 2018.

    [5] Marco Compagnoni et al., "A geometrical–statistical approach to outlier removal for TDOA measurements," in IEEE Transactions on Signal Processing, vol. 65, no. 15, pp. 3960-3975, Aug. 2017

    [6] Jie Xiong, Karthikeyan Sundaresan, and Kyle Jamieson, "ToneTrack: Leveraging Frequency-Agile Radios for Time-Based Indoor Wireless Localization," in Proceedings of the 21st Annual International Conference on Mobile Computing and Networking (MobiCom '15), pp. 537–549, 2015.

    [7] M. Malanowski and K. Kulpa, "Two Methods for Target Localization in Multistatic Passive Radar," in IEEE Transactions on Aerospace and Electronic Systems, vol. 48, no. 1, pp. 572-580, Jan. 2012.

    [8] P. Stoica and J. Li, "Lecture Notes - Source Localization from Range-Difference Measurements," in IEEE Signal Processing Magazine, vol. 23, no. 6, pp. 63-66, Nov. 2006.

    Extended Capabilities

    C/C++ Code Generation
    Generate C and C++ code using MATLAB® Coder™.

    Version History

    Introduced in R2024a

    expand all