Dual round trip time mitigation for wireless local area network devices
12181564 ยท 2024-12-31
Assignee
Inventors
Cpc classification
H04W56/0055
ELECTRICITY
International classification
Abstract
A method and devices are disclosed for geo-location of wireless local area network (WLAN) devices. According to one aspect, a method for determining a corrected round trip times (RTT) resulting from communication with a WD is provided. The WD is configured with one or two short interframe spacings (SIFS). The method includes performing RTT measurements at successive times. The method includes determining a presence of one or two modes based at least in part on peaks of a kernel density estimation (KDE) surface. The KDE surface is determined from the RTT measurements. When there is only one mode, a corrected RTT is determined based on the RTT measurements and a first SIFS. When there are two modes, a corrected RTT is determined based on the RTT measurements and the first SIFS plus an SIFS offset (), being based at least in part on a difference between the two modes.
Claims
1. A method in a first wireless device (WD) for determining a corrected round trip times (RTT) resulting from communication with a second WD, the second WD being configured with one or two short interframe spacings (SIFS), the method comprising: performing a plurality of RTT measurements (RTT.sub.i) at successive times during a time period, T; and determining a presence of one or two modes based at least in part on peaks of a kernel density estimation (KDE) surface, the KDE surface being determined from the plurality of RTT measurements, and: when there is only one mode, then determining a corrected RTT based at least in part on the plurality of RTT measurements and a first SIFS; and when there are two modes, then determining a corrected RTT based at least in part on the plurality of RTT measurements and the first SIFS plus an SIFS offset (), being based at least in part on a difference between the two modes.
2. The method of claim 1, wherein the SIFS offset is based at least in part on an average of previously determined SIFS offsets when there are two modes.
3. The method of claim 1, wherein, when there is only one mode and when |RTT.sub.peakTsTOF|<|RTT.sub.peakTsTOF|, then the corrected RTT is determined as RTT.sub.peakTs, and otherwise, then the corrected RTT is determined as RTT.sub.peakTs, where RTT.sub.peak is a peak RTT of the one mode, Ts is an offset corresponding to the first SIFS, is the SIFS offset, and TOF is a time of flight.
4. The method of claim 1, wherein determining the corrected RTT includes minimizing a sum of squared residuals, each squared residual being based at least in part on a difference between an RTT.sub.i and a total travel time, the total travel time being based at least in part on a target location parameter, , determined by setting a gradient of the sum of squared residuals to zero.
5. The method of claim 4, wherein a residual R(rtt).sub.i is based at least in part on calculating R(rtt).sub.i=[(RTT.sub.i.sup.OFF)+TOFi], where the subscript i denotes an i.sup.th RTT measurement of the plurality of RTT measurements and an i.sup.th time of flight TOF.sub.i, and .sup.OFF is determined as Ts when there is only one mode and .sup.OFF is determined as Ts when there are two modes.
6. The method of claim 1, wherein, when there are two modes, the corrected RTT is determined as RTT.sub.peak.sup.OFF, where .sup.OFF is equal to Ts for a first mode of the two modes and .sup.OFF is equal to Ts for a second mode of the two modes.
7. The method of claim 6, further comprising determining whether to use .sup.OFF=Ts or .sup.OFF=Ts for corrected RTT determination is based at least in part on a numerical fitting process.
8. The method of claim 1, wherein the KDE surface is determined by a superposition of kernel functions weighting each of the plurality of RTT measurements.
9. The method of claim 8, wherein the kernel functions are Gaussian.
10. The method of claim 1, wherein the time period T is selected to be less than the SIFS offset .
11. A first wireless device (WD) configured to determine a corrected round trip time (RTT) resulting from communication with a second WD, the second WD being configured with one or two short interframe spacings (SIFS), the first WD being configured to: perform a plurality of RTT measurements (RTT.sub.i) at successive times during a time period, T; and determine a presence of one or two modes based at least in part on peaks of a kernel density estimation (KDE) surface, the KDE surface being determined from the plurality of RTT measurements, and: when there is only one mode, then determine a corrected RTT based at least in part on the plurality of RTT measurements and a first SIFS; when there are two modes, then determine a corrected RTT based at least in part on the plurality of RTT measurements and the first SIFS plus an SIFS offset (), being based at least in part on a difference between the two modes.
12. The first WD of claim 11, wherein the SIFS offset is based at least in part on an average of previously determined SIFS offsets when there are two modes.
13. The first WD of claim 11, wherein, when there is only one mode and when |RTT.sub.peakTsTOF|<|RTT.sub.peakTsTOF|, then the corrected RTT is determined as RTT.sub.peakTs, and otherwise, then the corrected RTT is determined as RTT.sub.peakTs, where RTT.sub.peak is a peak RTT of the one mode, Ts is an offset corresponding to the first SIFS, is the SIFS offset, and TOF is a time of flight.
14. The first WD of claim 11, wherein determining the corrected RTT includes minimizing a sum of squared residuals, each squared residual being based at least in part on a difference between an RTT.sub.i and a total travel time, the total travel time being based at least in part on a target location parameter, , determined by setting a gradient of the sum of squared residuals to zero.
15. The first WD of claim 14, wherein a residual R(rtt).sub.i is based at least in part on calculating R(rtt).sub.i=[(RTT.sub.i.sup.OFF)+TOFi], where the subscript i denotes an i.sup.th RTT measurement of the plurality of RTT measurements and an i.sup.th time of flight TOF.sub.i, and .sup.OFF is determined as Ts when there is only one mode and .sup.OFF is determined as Ts when there are two modes.
16. The first WD of claim 11, wherein, when there are two modes, the corrected RTT is determined as RTT.sub.peak.sup.OFF, where .sup.OFF is equal to Ts for a first mode of the two modes and .sup.OFF is equal to Ts for a second mode of the two modes.
17. The first WD of claim 16, wherein the first WD is configured to determine whether to use .sup.OFF=Ts or .sup.OFF=Ts for corrected RTT determination is based at least in part on a numerical fitting process.
18. The first WD of claim 11, wherein the KDE surface is determined by a superposition of kernel functions weighting each of the plurality of RTT measurements.
19. The first WD of claim 18, wherein the kernel functions are Gaussian.
20. The first WD of claim 11, wherein the time period T is selected to be less than the SIFS offset .
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1) A more complete understanding of the present disclosure, and the attendant advantages and features thereof, will be more readily understood by reference to the following detailed description when considered in conjunction with the accompanying drawings wherein:
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
DETAILED DESCRIPTION
(12) In one embodiment of the present disclosure, a single, mobile wireless measuring station 110 is used. Wireless measuring station 110 may be ground based or airborne. The present disclosure provides methods and devices that detect the presence of a target station 120 that has dual SIFS values, i.e., SIFS modes, causing dual RTT values. The time difference between the modes is identified and then used in the minimization of the difference between the measured RTT and the TOF calculation, where the calculated TOF is twice the propagation time for a packet to be sent between the wireless measuring station 110 and the estimated location of the target station 120.
(13) Referring again to the drawing figures in which like reference designators refer to like elements, there is shown in
RTT=(T2T1)+(T3T2)+(T4T3)=(T4T1)=td+SIFS+td(1) Hence, RTT=(T4T1SIFS)
RTT=2 td+SIFS or RTT=TOF+SIFS(2)
(14) Equation (2) is a simplified equation that is included to provide an understanding of the basic concept of the ranging transmission method. Note that the duration of the transmitted packet and the response packet is not accounted for in equation (2). Note also that in practice, it is common that the timestamp of a packet is set to coincide with the end of the packet at the point where the frame check is completed.
(15)
(16) Target station 120 transmits the response packet 224 at time Te 323. Assuming that the response packet 224 is an ACK or an RTS packet in reply to the received ranging packet 212, time Te 323 ideally will be at a time t.sub.SIFS 332 after time Td 322, where t.sub.SIFS 332 is the SIFS time as defined in the IEEE 802.11 standard. At time Tf 313, wireless measuring station 110 starts to receive the response packet 224. At time Tg 324, target station 120 completes the transmission of the response packet 224 and at time Th 314, wireless measuring station 110 completes receiving the response packet 224. Note that the time differences (TbTa), (TdTc), (TfTe) and (ThTg) are all equal and have the value td which is the propagation time for the ranging packet and response packet to travel between the two stations.
(17) At wireless measuring station 110, the time of a packet at the point when the frame check has completed, may be recorded. Hence, the time for the transmission TOD of ranging packet 212 that is recorded is Tc 312, and the time that is recorded for the reception TOA of the response packet 224 is Th 314. In order to calculate the value of td, it is desirable to know the duration tr 334 of the response packet 224. Calculating the duration tr 334 is straightforward, as the wireless measuring station 110 may monitor the details of the response packet such as data rate and length. In practice, therefore, wireless measuring station 110 may measure the RTT from equation (3):
RTT=ThTctr(3)
And may calculate the value of td from expression (4):
td=(RTTtSIFS)/2(4)
and hence the corresponding distance:
D=td*c(5)
(18) Ranging packets 212 may be transmitted either continuously or in bursts separated by time Tp 350.
(19)
(20) In the case that there is a single wireless measuring station 110, as may be the case when the station is mobile or even airborne, then, as depicted in
(21) As mentioned previously, the packet exchange may be any pair of packets where an automatic response packet is sent. Commonly used packets in Wi-Fi include an RTS/CTS exchange and a Data (null)/Ack exchange.
(22) From equation (3):
RTT=2 td+t.sub.SIFS(5)
where td is the propagation time 331
(23) RTT measurements, in the general sense, will exhibit variations due to noise, in the case of weak signal strengths, and, in part, the timing accuracy of the clock at target station 120 and the timing accuracy of the clock at wireless measuring station 110. Also, as discussed above, the turnaround time t.sub.SIFS 332 may not be constant, or indeed equal to the SIFS value specified in the Standard.
(24) In order to derive an estimated position for target station 120, the determination of a best fit to the RTT measurements is required. A more complete understanding of the present disclosure, and the attendant advantages and features thereof, will be more readily understood by first describing the classical method for fitting the RTT measurements to a target position by use of minimization of the summation of the squared residuals (SSR). The method for fitting the RTT measurements to a target position by use of minimization of the summation of the squared residuals (SSR) is known to one skilled in the art and hence the method is described only generally.
(25) Assume there are N measurements with index i, of the RTT (RTT.sub.i) from the wireless measuring station 110 to the target station 120. For an arbitrary target location, the RTT may be modelled by a function f(x.sub.i, ) where vectors x.sub.i are the known locations of the mobile wireless measuring station 110, latitude, x.sub.i.sup.LAT, and longitude, x.sub.i.sup.LON, and altitude, x.sub.i.sup.ALT, and where parameter vector defines the estimated location of the target station 120 in terms of latitude, .sup.LAT, and longitude, .sup.LON, and altitude, .sup.ALT, plus other parameters that may include a turnaround offset, .sup.OFF, to be determined, where .sup.OFF corresponds to the packet turnaround time of the target station 120.
(26) The target location and offset, .sup.LAT, .sup.LON, .sup.ALT, and offset .sup.OFF, may be determined by first defining a squared residual, SR(rtt).sub.i. SR(rtt).sub.i is the square of the difference between the measurement of RTT.sub.i, and the computation of total travel time, (x.sub.i, ):
SR(rtt).sub.i=[RTT.sub.i(x.sub.i,)].sup.2(6)
where [RTT.sub.i(x.sub.i, )] is the residual, R(rtt).sub.i defined as the difference of RTT.sub.i, from the computed distance multiplied by the factor (2/c) and modified by offset to convert that distance to a model round trip time:
(27)
(28) It may be noted that the speed of light is in the units of geographic distance divided by the units of RTT. For example, if latitude and longitude are used for location and microseconds are used for RTT, then c=0.0027027 degrees/microsecond. Longitude distances are scaled by the cosine of the latitude to account for spherical coordinates. All distances are sufficiently small to use planar approximation.
(29) If the errors are Gaussian, then the best value for the target location parameters, , may be obtained by minimizing the sum of the squared residuals SSR(rtt)=.sub.iSR(rtt).sub.i which is defined by setting the gradient of the SSR to zero:
0=.sub.(.sub.iSR.sub.i)=2.sub.i[RTT.sub.i(x.sub.i,.sub.i)][.sub.
(30) A Jacobian J.sub.i may be defined as J.sub.i=.sub.(x.sub.i, ). The Jacobian J.sub.i may be utilized to define the direction to the minimum, known as the Steepest Descent method. The method may be utilized to define the direction and step size to the minimum, known as the Gauss-Newton method, or may be utilized to define the end stage direction and step size to the minimum, which may be referred to as the minimum conditions, known as the Levenberg-Marquardt method.
(31) Once this minimum is found, then the confidence ellipse, known as the CEP, may be found using the Jacobian J.sub.i evaluated with the parameter values determined by the fit. In the first step, the Hessian H.sub. may approximately be defined by
H.sub.=.sub.i[J.sub.i].sup.TJ.sub.i(9)
followed by a correlation matrix .sub. defined as the inverse of the Hessian H.sub.:
.sub.=H.sub..sup.1(10)
Then, a confidence ellipse, comprising length, width and orientation , may be defined for the resulting location, as per Table 1:
(32) TABLE-US-00001 TABLE 1 Location Confidence Ellipse parameters Tan (2 ) = 2 * .sub.01/(00 11); Length.sup.2 = .sub.00 Cos() Cos() + .sub.11 Sin() Sin() + 2 .sub.01 Cos() Sin() Width.sup.2 = .sub.11 Cos() Cos() + .sub.00 Sin() Sin() 2 .sub.01 Cos() Sin()
(33) As discussed above, a standard technique to determining the best fit to function, (x.sub.i, ), is by utilization of the method of minimization of sum of squared residuals, SSR, also known as the least squared residuals. For non-linear functions, such as (x.sub.i, ), there are various iterative methods that may be utilized including those known as Steepest Descent, Gauss-Newton, and Levenberg-Marquardt. These methods are known to one skilled in the art.
(34)
(35)
(36) The histogram 610 for 10 to 15 seconds shown in
(37) The histograms as depicted in
(38) KDEs may produce a smooth PDF suitable for analysis of the RTT results. A range of kernel functions may be used but a common kernel is the standard normal function, Gaussian. The bandwidth of each data point being evaluated encompasses other data points in its neighborhood, each weighted by their own kernel functions. The bandwidth centered upon the data point being evaluated defines the region of a newly weighted mean being calculated, which may be utilized to shift the data point towards the direction of highest density. This procedure may be executed for every data point. The quantity of modes in a density distribution is dependent on the bandwidth of the kernel function implemented. For large bandwidths, the density distribution contains a single or few modes, while smaller bandwidths may seek out more modes. For example, a bandwidth, i.e., a standard deviation, , of 0.3 s for the Gaussian distribution KDE is suitable to cater for the expected jitter in the RTTs from a Wi-Fi AP. In the following descriptions, the general term KDE is used together with modes and peaks, but it should be understood that these terms may encompass techniques such as non-parametric mean shift clustering.
(39)
(40) In
(41) The peak RTT values 711, 721, 722, 731, 741, and 742, may be determined by several methods based upon the application of KDE. It may be assumed that in the case of dual SIFS modes, the peaks will not be closer than 2. The selection of =0.3 s bandwidth for the Gaussian kernel is compatible with this expectation that the peaks due to different modes will not be closer than 2.
(42) In a case where a target station 120 is exhibiting dual SIFS, over a long period of, for example, 3 to 5 seconds, there is a greater chance that the two RTT modes are present, whereas over a short period, say 64 ms, it is more likely that a single RTT mode is present. As discussed above with reference to
(43) The residual R(rtt).sub.i for the ith RTT, from equations (6) and (7) is:
(44)
Rearranging: R(rtt).sub.i=[(RTT.sub.i.sup.OFF)+TOFi](12)
(45) where TOFi is the estimated time of flight TOF between the mobile wireless measuring station 110 and the target station 120 when RTTi measurement is recorded (as discussed above with reference to
(46) In cases where the target station 120 is exhibiting dual SIFS values, as discussed above with reference to
i.e.: .sub.1.sup.OFF=Ts or .sub.2.sup.OFF=Ts+(13) where Ts is the lower SIFS value and is the offset difference between the dual RTT modes.
(47) All minimization methods, for example Levenberg Marquardt, minimize the difference between the measured RTT.sup.OFF and the TOF, equation (12), where the TOF is determined by the distance between the known location of the wireless measuring station 110 and the estimated location of the target station 120, times 2/c. In some circumstances, however, as discussed above with reference to
(48) For each single burst of ranging packets 212 and response packets 214, a KDE analysis may then result in a single or dual RTT(s).sub.peak. Having first established a value for the RTT mode difference , by analysis of RTTs over a long period, say 3 seconds, the short single burst RTT(s).sub.peak may then be minimized during the fitting process and repeated each time a fit is performed, for one of the following two cases: 1) When two RTT(s).sub.peak modes are observed:
a. Smaller RTT.sub.peak, use RTT=RTT.sub.peakTs(14)
b. Larger RTT.sub.peak, use RTT=RTT.sub.peakTs(15) 2) When one RTT.sub.peak mode is present:
If |RTT.sub.peakTsTOF|<|RTT.sub.peakTsTOF|(16) then use RTT=RTT.sub.peakTs else use RTT=RTT.sub.peakTs
For each burst of RTTs, therefore, if only one RTT mode is present, as per 2), then by determining the smaller residual, the correct value for .sup.OFF may be used in the minimization process. The difference value, , is the average over the entire data set and the choice of whether to use .sub.1.sup.OFF=Ts, or .sub.2.sup.OFF=Ts+, is made by the fitting process.
(49)
(50) In some embodiments, the wireless transmitter 810 includes an RF transmitter 811 and processing circuitry 820 that includes processor 821, and memory module 822. The RF transmitter 811 may perform the functions of modulation, as described in IEEE 802.11-2020 and amplification for the transmission of the Wi-Fi packets via antenna 814. In some embodiments the processing circuitry 820 and/or the processor 821 may comprise integrated circuitry for processing and/or control, e.g., one or more processors and/or processor cores and/or FPGAs (Field Programmable Gate Array) and/or ASICs (Application Specific Integrated Circuitry) configured to execute programmatic software instructions. In some embodiments the functions of the RF transmitter 811 may be performed by processing circuitry 820. The processing circuitry 820 may be configured to control any of the methods and/or processes described herein and/or to cause such methods, and/or processes to be performed, e.g., by the RF transmitter 811. The memory module 822 may be configured to store data, programmatic software code and/or other information described herein. In some embodiments, the software may include instructions that, when executed by the processing circuitry 820, causes the processing circuitry 820 to perform the processes described herein with respect to the wireless transmitter 810.
(51) In some embodiments, the wireless receiver 850 includes an RF front end 851, an RF receiver 852, processing circuitry 854 that includes a processor 855 and a memory module 856. The RF front end 851 may perform the usual functions of an RF receiver front end such as low noise amplification, filtering and frequency down conversion so as to condition the received signal suitable for inputting to the RF receiver 852. The RF receiver 852 may perform the functions of demodulation of the Wi-Fi packet received via antenna 857. In some embodiments wireless transmitter 810 and wireless receiver 850 may share the same antenna array together with the appropriate RF switches, combiners and splitters.
(52) In some embodiments the RF receiver 852 and/or the processing circuitry 854 may comprise integrated circuitry for processing and/or control, e.g., one or more processors and/or processor cores and/or FPGAs (Field Programmable Gate Array) and/or ASICs (Application Specific Integrated Circuitry) configured to execute programmatic software instructions. In some embodiments the functions of the RF receiver 852 may be performed by the processing circuitry 854. The processing circuitry 854 may be configured to control any of the methods and/or processes described herein and/or to cause such methods, and/or processes to be performed, e.g., by the wireless receiver 850. The memory module 856 is configured to store data, programmatic software code and/or other information described herein. In some embodiments, the software may include instructions that, when executed by the processing circuitry 854, causes the processing circuitry 854 to perform the processes described herein with respect to the wireless receiver 850.
(53) According to this embodiment of the disclosure, the wireless receiver 850 may be configured to measure and monitor an input signal's attribute, such as may include one or more of a signal transmitted by wireless transmitter 810, data and control packets, and the response signal, including control packets, transmitted by an access point or station that may be based upon the IEEE 802.11-2020 Standard. Such packets may include data null, ACK, RTS and CTS packets. The memory module 856 may store instructions for executing any method mentioned in the IEEE 802.11-2020 Standard, input signals, and results of processing of the processor 855, signals to be outputted and the like. Processing circuitry 854 may output to the general purpose processor 880 attributes of the received packets 224 such as RTT.
(54) According to an embodiment of the disclosure, the RF transmitter 811 may be configured to transmit signals and the processing circuitry 820 may be configured to prepare the transmitted signal attributes based upon the IEEE 802.11-2020 Standard. Such transmitted packets may include data packets, control packets and management packets. Such control packets may include RTS packets. The memory module 822 may store instructions for executing any method mentioned in the specification, input signals, and results of processing of the processor 821, signals to be outputted and the like.
(55) According to another embodiment of the disclosure, the wireless receiver 850 may be configured to receive the transmissions of another wireless communications device, e.g., target station 120, and the processing circuitry 854 may be configured to monitor an attribute of the transmissions of the other wireless communication device and determine the received times of packets from the other wireless communication device, as discussed above with reference to
(56) According to an embodiment of the disclosure, the wireless transmitter 810 may be configured to transmit bursts 451 of packets to another wireless communication device, as described in
(57) According to an embodiment of the disclosure, a general purpose processor 880 may be used to control the operations of the wireless communication device 800 and in particular the wireless transmitter 810 and wireless receiver 850. The general purpose processor 880 may provide an interface to a user via a keyboard, mouse and display allowing a user to select the attributes of the target, wireless target station 120, control the start and stop of the transmissions of ranging packets 212 and perform the calculations described herein for the correction of RTTs from a target station 120 that is employing more than one SIFS value. The general purpose processor 880 may also carry out the various calculations as described in this disclosure, such as determining a location for the target station 120 based upon the resulting RTTs, and may also prepare the measurement results for disclosure to an operator or user. In some embodiments the general purpose processor 880 may comprise integrated circuitry for processing and/or control, e.g., one or more processors and/or processor cores and/or FPGAs (Field Programmable Gate Array) and/or ASICs (Application Specific Integrated Circuitry) configured to execute programmatic software instructions and may include a memory module to execute programmatic code stored in the general purpose processor or another device. It is also noted that the elements of the wireless communication device 800 may be included in a single physical device/housing or may be distributed among several different physical devices/housings.
(58) According to an embodiment of the disclosure, a platform location module 860 may be used to input, via the data bus 890, to the general purpose processor 880 and/or the processing circuitry 820 and/or 854 the location of the platform that is carrying the wireless communication device 800. The platform location module 860 may comprise navigation equipment such as a GPS receiver and/or a gyro and may provide both the location and heading of the wireless communication device 800 to the general purpose processor 880, and processing circuitries 820 and 854. The location and heading of the wireless communication device 800, together with the RTTs may be used by the general purpose processor 880 to calculate and display the location of the target, i.e., wireless target station 120.
(59)
(60) Process 900 may start at step 901 where a timer t is initialized. At step 902, the position of the wireless measuring station 110 is recorded together with time. The position and time may be provided by a GPS in the platform location module 860. The data may be stored in a memory module 822, and/or 856 and/or general purpose processor 880. At step 903, as discussed above with reference to
(61) If, at step 907, time T has expired then at step 909, as discussed above with reference to
(62) If, at step 910, it is determined that there is only a single mode/peak present for both the current time T and previous times T, then at step 912, the residuals, R(rtt), are determined as defined in equations (11) and (12) and the squared residuals calculated as discussed above with reference to equations (6) and (7). At step 914, the sum of squared residuals is calculated. It may be determined, at step 915, if the minimum conditions have been met, i.e., the end stage direction and step size is at a minimum, and if not, the Levenberg-Marquardt non-linear fitting scheme may be performed at step 917 to determine a next set of values for the parameters. After completion of the calculations in step 917, the minimization process returns to steps 912 and 914. The Levenberg-Marquardt non-linear fitting scheme and the minimization process may be carried out in the general purpose processor 880. The Levenberg-Marquardt non-linear fitting scheme and the minimization process is known.
(63) If, at step 915, the minimum conditions are met, then at step 919, the confidence ellipse, CEP, may be calculated and, if it meets certain criteria, for example size and confidence, displayed. The calculation and display of the CEP may take place in the general purpose processor 880 of which a display might form part. The method then returns to step 901.
(64) If the target station does not exhibit dual RTT modes, then process 900 will continue through steps 901 to 909. If, however, at step 910, dual RTT modes are observed then at step 911, the offset value A may be estimated and recorded and the process moves to
(65) At step 1001, timer t is initialized. At step 1005, the position of the wireless measuring station 110 is recorded, a burst of ranging packets 212 transmitted, the TODs recorded, the corresponding response packets 214 received and the TOAs recorded. The RTTs are derived and stored. Step 1005 is the same as steps 902, 903, 904 and 905. At step 1006, similar to step 909, the set of RTTs is examined, the KDE and corresponding modes/peaks calculated and at step 1007, a determination is made as to if there is just one mode and corresponding peak, similar to step 910. However, in contrast to 910 which involves bursts over time T, 1006 involves a single burst. If, at step 1007, two peaks are derived, then at step 1008 both peaks, [RTT.sub.peak larger] and [RTT.sub.peak smaller] are noted. If at step 1007, there is just one peak derived, then at step 1009 that RTT.sub.peak is noted. At step 1010, the RTT(s).sub.peak from steps 1008 or 1009 are stored together with time and the position of wireless measuring station 110 that was recorded in step 1005 for the single burst. At step 1012, the timer t is checked and if t<T then the process returns to step 1005 and another burst of ranging packets 212 is sent. The list of time, RTT(s).sub.peak, and wireless measuring station 110 position is updated in step 1010 until at step 1012, the timer t is equal to or greater than T. The list may be stored in the general purpose processor 880. If, at step 1012, t>T then at step 1014 the complete list of RTTs stored at step 1005 is examined and the KDE and its peaks calculated. At step 1016, if only a single peak is present then, at step 1020, the value for the offset is unchanged. If, however, at step 1016, two peaks are present, then the offset .sub.i is calculated and at step 1019, the average value, .sub.ave, for the offsets is calculated using all the values of .sub.i previously measured. The individual values for .sub.i may be stored together with the time and RTTs such that an average .sub.ave, may be calculated. The lists, the KDE calculations and the calculation of .sub.ave may take place in the general purpose processor 880. Once the (new) value for .sub.ave has been established, at steps 1019 or 1020, then the process advances to
(66) At step 1101, the complete list of time, RTTs.sub.peak, .sub.ave, and wireless measuring station 110 position is inputted. For each discrete burst, at step 1102, it is checked if two RTT(s).sub.peak, as determined at steps 1007, 1008 and 1009, are present. If two RTT(s).sub.peak are present, then at step 1106, the larger RTT.sub.peak is determined and, as discussed above with reference to equations (14) and (15), at step 1105, RTT=RTT.sub.peak.sub.ave. For the smaller RTT.sub.peak, at step 1107, RTT=RTT.sub.peak. If at step 1102, only a single RTT.sub.peak is present, then at step 1104, as discussed above with reference to equation (16), a check is made if |RTT.sub.peakTsTOF|<|RTT.sub.peakTsTOF|. If true, then at step 1107, RTT=RTT.sub.peak, if false, then at step 1105 RTT=RTT.sub.peak.sub.ave. At step 1110 the residuals, R(rtt), are determined as defined in equations (11) and (12) using either the RTT.sub.peak or the RTT.sub.peak.sub.ave values for each time and x.sub.i parameters for the wireless measuring station 110 and set of values for the parameters, and the squared residuals calculated as discussed above with reference to equations (6) and (7). At step 1112, the sum of squared residuals is calculated. It may be then determined, at step 1114, if the minimum conditions have been met and if not, the Levenberg-Marquardt non-linear fitting scheme may be performed, at step 1116, to determine a next set of values for the parameters. After completion of the calculations in step 1116, the minimization process returns to steps 1110 and 1112. The Levenberg-Marquardt non-linear fitting scheme and the minimization process may be carried out in the general purpose processor 880.
(67) If, at step 1114, the minimum conditions are met, then at step 1118, the confidence ellipse, CEP, may be calculated and, if it meets certain criteria, displayed. The calculation and display of the CEP may take place in the general purpose processor 880 of which a display might form part. The method then returns to
(68) The longer the time T, the better the possibility that, if dual RTT modes are present, then two peaks will be calculated by the KDE process. However, the time T also sets the time between calculations of the location and updates for the RTT offset , hence T should not be too long. Furthermore, the time T cannot be so long as there to be significant changes in the RTTs (must be less than the offset difference ) due to changing TOF due to changing position of the wireless measuring station. An example value for T is 3 seconds.
(69) In process 900, the adjustment value, , is an average over the entire data set rather than in interim value which may be uncertain at the beginning of the data run and the choice of whether to use RTTTOF or RTTTOF) is made by the fitting process. With other known methods, if data collection starts with a single valued offset and does not exhibit dual values for an initial period, then there will be no reference RTT for correction of the initial period and that data will be lost to the previous dual RTT method. Moreover, the correction for the early data will be made on the basis of RTT difference defined by a small subset of the entire run and will therefore be less accurate.
(70) With process 900, the SIFS offset correction is a full data average over all the data that is ready to process, rather than as an ongoing moving average to RTT. The standard deviation of the correction may be used to decide if the process is valid. Also, if there is a long gap between the data points without there being sufficient dual values recorded to decide the correct offset to use, doing this at fitting time allows the fitting process to try both offsets and then find the value that yields the lowest error.
(71)
(72) In some embodiments, the SIFS offset is based at least in part on an average of previously determined SIFS offsets when there are two modes. In some embodiments, when there is only one mode and when |RTT.sub.peakTsTOF|<|RTT.sub.peakTsTOF|, then the corrected RTT is determined as RTT.sub.peakTs, and otherwise, then the corrected RTT is determined as RTT.sub.peakTs, where RTT.sub.peak is a peak RTT of the one mode, Ts is an offset corresponding to the first SIFS, A is the SIFS offset, and TOF is a time of flight. In some embodiments, determining the corrected RTT includes minimizing a sum of squared residuals, each squared residual being based at least in part on a difference between an RTT.sub.i and a total travel time, the total travel time being based at least in part on a target location parameter, , determined by setting a gradient of the sum of squared residuals to zero. In some embodiments, a residual R(rtt).sub.i is based at least in part on calculating R(rtt).sub.i=[(RTT.sub.i.sup.OFF)+TOFi], where the subscript i denotes an i.sup.th RTT measurement of the plurality of RTT measurements and an i.sup.th time of flight TOFi, and .sup.OFF is determined as Ts when there is only one mode and .sup.OFF is determined as Ts when there are two modes. In some embodiments, when there are two modes, the corrected RTT is determined as RTT.sub.peak.sup.OFF, where .sup.OFF is equal to Ts for a first mode of the two modes and .sup.OFF is equal to Ts for a second mode of the two modes. In some embodiments, the method includes determining whether to use .sup.OFF=Ts or .sup.OFF=Ts for corrected RTT determination is based at least in part on a numerical fitting process. In some embodiments, the KDE surface is determined by a superposition of kernel functions weighting each of the plurality of RTT measurements. In some embodiments, the kernel functions are Gaussian. In some embodiments, the time period T is selected to be less than the SIFS offset .
(73) As will be appreciated by one of skill in the art, the concepts described herein may be embodied as a method, data processing system, and/or computer program product. Accordingly, the concepts described herein may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects all generally referred to herein as a circuit or module. Furthermore, the disclosure may take the form of a computer program product on a tangible computer usable storage medium having computer program code embodied in the medium that may be executed by a computer. Any suitable tangible computer readable medium may be utilized including hard disks, CD ROMs, optical storage devices, or magnetic storage devices.
(74) Some embodiments are described herein with reference to flowchart illustrations and/or block diagrams of methods, systems and computer program products. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
(75) These computer program instructions may also be stored in a computer readable memory that may direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart and/or block diagram block or blocks.
(76) The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.
(77) It is to be understood that the functions/acts noted in the blocks may occur out of the order noted in the operational illustrations. For example, two blocks shown in succession may in fact be executed substantially concurrently or the blocks may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
(78) Computer program code for carrying out operations of the concepts described herein may be written in an object oriented programming language such as Java or C++. However, the computer program code for carrying out operations of the disclosure may also be written in conventional procedural programming languages, such as the C programming language. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
(79) While the above description contains many specifics, these should not be construed as limitations on the scope, but rather as an exemplification of several embodiments thereof. Many other variants are possible including, for examples: the use of transmissions in a burst or continuous transmissions, time between updates to the RTT offset, the averaging of the RTT offset, time between calculations of CEP, the method used to determine the KDEs, selection of a bandwidth parameter , the details of the minimization scheme used for the RTT fitting process. Accordingly, the scope should be determined not by the embodiments illustrated, but by the claims and their legal equivalents.
(80) It will be appreciated by persons skilled in the art that the present invention is not limited to what has been particularly shown and described herein above. In addition, unless mention was made above to the contrary, it should be noted that all of the accompanying drawings are not to scale. A variety of modifications and variations are possible in light of the above teachings without departing from the scope of the following claims.