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 = 1×2
    
        0.1848    0.6516
    
    
    disp(['RMS TDOA positioning error = ',num2str(rmsetgtpos),' meters.'])
    RMS TDOA positioning error = 0.1848     0.65161 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. A TDOA group contains all the TDOAs measured at the L–1 anchor pairs for a potential target. The elements in the lth column of tdoaest represents the estimated TDOAs 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

    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

    expand all

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

    Version History

    Introduced in R2024a

    expand all