Methods for determining location of unknown devices in a synchronized network and related systems
11463971 · 2022-10-04
Assignee
Inventors
Cpc classification
G01S5/00
PHYSICS
G01S5/14
PHYSICS
H04H20/18
ELECTRICITY
G01S5/0263
PHYSICS
International classification
H04H20/18
ELECTRICITY
G01S5/14
PHYSICS
Abstract
Methods for determining a location of an unknown device (UD) from a plurality of known devices (KDs) are provided including receiving, at the UD, periodically broadcasted messages from each of a plurality of KDs. Corresponding arrival time stamp (T.sub.arrival-i-UD) of each periodically broadcasted message from each of the plurality of KDs are recorded. Each of the plurality of KDs are clock synchronized to a common clock source at a master device (MD). A departure time of the periodically broadcasted message from each of the plurality of KDs is known by the UD in master device time units (T.sub.depart-i-md). X, y and z coordinates of a location of each of the KDs is known by the UD. The x, y and z coordinates of an actual location of the UD is calculated using the x, y and z coordinates of each of the KDs, the recorded arrival times (T.sub.arrival-i-UD) of each of the periodically broadcasted messages from each of the plurality of KDs and the known departure times of each of the periodically broadcasted messages (T.sub.depart-i-md) from each of the plurality of KDs.
Claims
1. A method of determining a location of an unknown device (UD) from a plurality of known devices (KDs), the method comprising: receiving, at the UD, periodically broadcasted messages from each of a plurality of KDs; recording a corresponding arrival time stamp (T.sub.arrival-i-UD) of each periodically broadcasted message from each of the plurality of KDs, wherein each of the plurality of KDs are clock synchronized to a common clock source at a master device (MD), wherein a departure time of the periodically broadcasted message from each of the plurality of KDs is known by the UD in master device time units (T.sub.depart-i-md) and wherein x, y and z coordinates of a location of each of the KDs is known by the UD; and calculating the x, y and z coordinates of an actual location of the UD using the x, y and z coordinates of each of the KDs, the recorded arrival times (T.sub.arrival-i-UD) of each of the periodically broadcasted messages from each of the plurality of KDs and the known departure times of each of the periodically broadcasted messages (T.sub.depart-i-md) from each of the plurality of KDs, wherein calculating the x, y and z coordinates of the actual location of the UD further comprises: selecting possible x, y and z coordinates (L.sub.guess) of the location of the UD; calculating a distance (D.sub.i) from the possible location of the UD (L.sub.guess) to each of the plurality of KDs; translating the distances (Di) into corresponding estimated departure times of the periodically broadcasted messages (T.sub.depart-ud-i) in UD clock units from each of the plurality of KDs based on the recorded arrival time stamp (T.sub.arrival-i-UD) of each periodically broadcasted messages from each of the plurality of KDs and the corresponding distance (Di) for each of the plurality of KDs; determining differences in the estimated departure times of the periodically broadcasted messages (T.sub.depart-i-ud) in UD clock units and the known departure time of the periodically broadcasted message from each of the plurality of KDs in master device time units (T.sub.depart-i-md) to provide an error offset; and modifying the possible x, y and z coordinates (L.sub.guess) of the location of the UD based on the error offset to obtain the actual location of the UD.
2. The method of claim 1, wherein the departure time of the periodically broadcasted message from each of the plurality of KDs (T.sub.depart-i-md) is one of embedded in each of the periodically broadcasted messages from each of the plurality of KDs (KD.sub.i) and known a-priori by the UD.
3. The method of claim 1, further comprising repeating the calculating, translating, determining and modifying periodically to refine the actual location.
4. The method of claim 3, wherein the method is based on a gradient descent approach.
5. The method of claim 1, wherein a clock rate of the UD and of the MD are significantly different, the method further comprising: modeling the calculated differences in the estimated departure times of the periodically broadcasted messages (T.sub.depart-i-ud) in UD clock units and the known departure time of the periodically broadcasted message from each of the plurality of KDs in master device time units (T.sub.depart-i-md) as a constant offset (T.sub.offset-const) and a linear term based on clock timing differences of the MD and UD clocks (K.sub.clock-dif); and calculating the error offset using the clock timing differences of the MD and UD clocks (K.sub.clock-dif).
6. The method of claim 1, wherein the plurality of KD are periodically turned on and/or off to conserve power.
7. The method of claim 6, wherein when the plurality of KDs are turned on the plurality of KDs exchange messages for use in synchronizing clocks at the plurality of KDs.
8. The method of claim 1, wherein the plurality of KDs periodically broadcast messages within a predetermined time period.
9. The method of claim 1: wherein periodically broadcasting a message comprises periodically broadcasting a message from each of the plurality of KDs including the x, y, z coordinates of the KDs location; and wherein calculating the x, y and z coordinates of the actual location of the UD comprises calculating the actual location using the x, y, z coordinates of the each of KDs location provided in the periodically broadcasted message.
10. The method of claim 1, further comprising powering down the UD between periodically broadcasted messages to conserver power.
11. The method of claim 1, wherein calculating the actual location of the UD is followed by synchronizing a clock of the UD to the clock of the MD such that both arrival and departure times are known in the MD clock units.
12. The method of claim 11, wherein calculating the actual location of the UD further comprises: calculating distances from the UD to the plurality of KDs directly by determining a difference between arrival and departure times to provide a time of flight; and multiplying the time of flight by the speed of light.
13. The method of claim 12, further comprising determining location using triangulation.
14. A system including a plurality of known devices (KDs) and at least one unknown device (UD), the system comprising: at least one unknown device (UD) configure to: receive periodically broadcasted messages from each of a plurality of KDs; record a corresponding arrival time stamp (T.sub.arrival-i-UD) of each periodically broadcasted message from each of the plurality of KDs, wherein each of the plurality of KDs are clock synchronized to a common clock source at a master device (MD), wherein a departure time of the periodically broadcasted message from each of the plurality of KDs is known by the UD in master device time units (T.sub.depart-i-md) and wherein x, y and z coordinates of a location of each of the KDs is known by the UD; and calculate the x, y and z coordinates of an actual location of the UD using the x, y and z coordinates of each of the KDs, the recorded arrival times (T.sub.arrival-i-UD) of each of the periodically broadcasted messages from each of the plurality of KDs and the known departure times of each of the periodically broadcasted messages (T.sub.depart-i-md) from each of the plurality of KDs, wherein the at least one UD is further configured to calculate the x, y and z coordinates of the actual location of the at least one UD by: selecting possible x, y and z coordinates (L.sub.guess) of the location of the UD; calculating a distance (D.sub.i) from the possible location of the UD (L.sub.guess) to each of the plurality of KDs; translating the distances (Di) into corresponding estimated departure times of the periodically broadcasted messages (T.sub.depart-ud-i) in UD clock units from each of the plurality of KDs based on the recorded arrival time stamp (T.sub.arrival-i-UD) of each periodically broadcasted messages from each of the plurality of KDs and the corresponding distance (Di) for each of the plurality of KDs; determining differences in the estimated departure times of the periodically broadcasted messages (T.sub.depart-i-ud) in UD clock units and the known departure time of the periodically broadcasted message from each of the plurality of KDs in master device time units (T.sub.depart-i-md) to provide an error offset; and modifying the possible x, y and z coordinates (L.sub.guess) of the location of the UD based on the error offset to obtain the actual location of the UD.
15. The system of claim 14, wherein at least one of the plurality of KDs comprise an integrated, highly precise clock such that methods of time synchronization are not performed in coordination of each broadcast message.
16. The system of claim 14: wherein each of the plurality of KDs has a unique identifier (ID); and wherein the UD is configured to lookup the unique ID of each of the plurality of KDs locally or externally to access the x,y,z location of each of the plurality of KDs.
17. The system of claim 14, where the at least one UD and the MD include highly precise clocks.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
DETAILED DESCRIPTION
(16) The present inventive concept will be described more fully hereinafter with reference to the accompanying figures, in which embodiments of the inventive concept are shown. This inventive concept may, however, be embodied in many alternate forms and should not be construed as limited to the embodiments set forth herein.
(17) Accordingly, while the inventive concept is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that there is no intent to limit the inventive concept to the particular forms disclosed, but on the contrary, the inventive concept is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the inventive concept as defined by the claims. Like numbers refer to like elements throughout the description of the figures.
(18) The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the inventive concept. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising,” “includes” and/or “including” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof. Moreover, when an element is referred to as being “responsive” or “connected” to another element, it can be directly responsive or connected to the other element, or intervening elements may be present. In contrast, when an element is referred to as being “directly responsive” or “directly connected” to another element, there are no intervening elements present. As used herein the term “and/or” includes any and all combinations of one or more of the associated listed items and may be abbreviated as “/”.
(19) Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this inventive concept belongs. It will be further understood that terms used herein should be interpreted as having a meaning that is consistent with their meaning in the context of this specification and the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
(20) It will be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element without departing from the teachings of the disclosure. 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.
(21) Although embodiments of the present inventive concept are directed to UWB devices, it will be understood that embodiments of the present inventive concept are not necessarily limited thereto. Other radio frequency bands that can take advantages of inventive concepts discussed herein may be used without departing from the scope of the present inventive concept. For example, embodiments of the present inventive concept may be used by any device capable of including time-stamps as discussed herein.
(22) As discussed above, ultra-wide band (UWB) radio frequency (RF) technology enables RF transmitters and receivers to send and receive signals at precise times. UWB technology can be leveraged for real time location systems using Time-of-Flight (ToF) and Time-difference-of-Arrival (TdoA) technologies. However, synchronization between devices is critical in some of these applications. Thus, some embodiments of the present inventive concept provide both methods to synchronize multiple UWB transceivers so that they all refer to a master clock and to determine location based on the synchronization of these devices as will be discussed below with respect to
(23) Inherent in UWB technology is the ability to create very narrow pulse widths. These pulse widths can be used to establish an arrival time of an RF signal with very high granularity. Some embodiments of the present inventive concept provide methods for synchronizing timing of multiple UWB capable devices for the purpose of Real Time Location Systems (RTLS). As illustrated in
(24) UWB Devices can be described as either being known devices (KD) or unknown devices (UD). In particular, a known device is a device whose location is known. An unknown device is a device whose location is not known.
(25) In some embodiments of the present inventive concept, devices are configured to self-calibrate. Given the devices ability to measure timestamps and consequently measure distances, the devices may be programmed to determine location automatically in accordance with some embodiments of the present inventive concept. Furthermore, devices in accordance with embodiments discussed herein can also calibrate their crystals using timestamps such that optimum signal-to-noise reception may be achieved.
(26) Referring now to
(27) It will be understood that although
(28) As illustrated in
(29) In some embodiments, the T.sub.depart-md may not be included in the message. In these embodiments, T.sub.depart-md is already defined and known by the receiving devices beforehand. Note that T.sub.depart-md is described in MD clock units.
(30) As illustrated, a KD within listening range receives the RF packet that is broadcast and records the arrival time in its own clock units, T.sub.arrival-kd. The time it takes the RF signal to travel from the MD to the KD is T.sub.travel. Typically, T.sub.travel is so small and the difference in timing between the clocks of the MD and KD is so small that it is not necessary specify whether T.sub.travel is measured from the MD or the KD. In some embodiments, they are assumed to be identical.
(31) In some embodiments, T.sub.travel may be calculated as follows. Since typically all KDs' locations are known, the distance between the MD and KD (D md-to-kd) can be calculated as follows:
D.sub.md-to-kd=T.sub.travel×c Eqn. (1)
where c is the speed of light.
(32) In some embodiments, T.sub.travel may be calculated using time-of-flight (ToF) methods between the MD and KD. The arrival time T.sub.arrival-md in MD clock units is calculated based on the travel time T.sub.travel and the departure time T.sub.depart-md as follows:
T.sub.arrival-md=T.sub.depart-md+T.sub.travel Eqn. (2)
(33) The MD sends out periodic broadcasts. The KD receives the periodic broadcasts. The arrival times of the broadcast can be described in a sequence as T.sub.arrival-kd-1 T.sub.arrival-kd-2 . . . T.sub.arrival-kd-n, where the 1, 2 . . . n subscripts describe the individual broadcasts. As discussed above, the arrival time in MD clock units is calculated by the KD:
T.sub.arrival-md-1T.sub.arrival-md-2 . . . T.sub.arrival-md-n Eqn. (3)
(34) From the sequences above, the arrival times (T.sub.arrival-kd-n, T.sub.arrival-md-n) can be used to convert any given time from KD time units to MD time units and vice versa. In some embodiments, just two arrival times are used to do a linear interpolation to convert T.sub.event-kd to or from T.sub.event-md. For example, let Broadcast #1 and Broadcast #2 represent two broadcasts. The equation could be a linear interpolation as follows:
T.sub.event-kd=(T.sub.event-md−T.sub.arrival-md-1)×(T.sub.arrival-kd-2−T.sub.arrival-kd-1)/(T.sub.arrival-md-2−T.sub.arrival-md-1)+T.sub.arrival-kd-1 Eqn. (4)
(35) In some embodiments, the pair (T.sub.event-md-n, T.sub.event-kd-n) can be considered (x.sub.n,y.sub.n) data points and (T.sub.event-md-i, T.sub.event-kd-i) are considered known points on the x-y graph (x.sub.i, y.sub.i). Using the points (x.sub.i, y.sub.i), a fitting function is created (y=F(x)) to calculate T.sub.event-kd. Alternatively, a fitting function (x=G(y)) may also be used to calculate T.sub.event-md. In some embodiments, the fitting function could be a polynomial equation of the n-th degree. At least n+1 broadcasts would be needed to calculate an n-th degree polynomial equation. However, it will be understood that embodiments of the present inventive concept are not limited to this fitting function.
(36) It should be noted that the following expression, M.sub.slope, is very nearly equal to 1 for MD and KD clocks that are very close in frequency:
M.sub.slope=(T.sub.arrival-kd-2−T.sub.arrival-kd-1)/(T.sub.arrival-md-2−T.sub.arrival-md-1) Eqn. (5)
For clocks that differ by just a few parts per million or less, M.sub.slope may have a value of 1.000001. Depending on the representation of this value within the processor, there is a risk that the processor could truncate the small portion and interpret M.sub.slope as just “1”. Alternatively, this would necessitate moving to a 16-, 32-, or 64-bit floating point type significantly increasing the processing of the calculations. Rearranging Eqn. (4) and introducing the following terms, T.sub.dif and T.sub.period-md mitigates truncation error in the calculations. Furthermore, all values can be represented as integers. T.sub.dif is the difference in MD time units versus KD time units for the period of time between the arrivals of successive message packets to the KD. For closely aligned clocks, T.sub.dif will be very small. T.sub.period-md represents the period of time between successive departures of the MD. There is just one multiplication and one division as illustrated below.
T.sub.dif=(T.sub.arrival-kd-2−T.sub.arrival-kd-1)−(T.sub.arrival-md-2−T.sub.arrival-md-1) Eqn. (6)
T.sub.period-md=T.sub.depart-md-2−T.sub.depart-md-1 Eqn. (7)
T.sub.event-kd−T.sub.event-md=T.sub.dif=(T.sub.event-md−T.sub.arrival-md-2)/T.sub.period-md+(T.sub.arrival-kd-2−T.sub.arrival-md-2) Eqn. (8)
(37) In some embodiments, T.sub.period-md is represented by a number that is a fixed power of 2. For example, T.sub.period-md can be 2.sup.16. In doing division as in Eqn. (5) within a microcontroller, this changes a long division calculation with a shift operation and can reduce the number of microcontroller (MCU) instruction cycles for time critical activities.
(38) Referring now to
(39) A KD is chosen to be the Rebroadcast Device (RD). The RD is synchronized with the MD, referred to in
(40) Referring to methods discussed above with respect to
(41) Referring now to
(42)
(43) Referring now to
(44) In some embodiments, the KD uses the broadcasts from both devices. T.sub.depart-rmd-md1 represents the departure time coming from MD1 in RMD time units. T.sub.depart-rmd-md2 represents the departure time coming from MD2 in RMD units. Adjusting for the travel time, T.sub.travel, as was discussed above with respect to Eqn. (2), the KD will have two arrival times from both MDs in both RMD units and in KD units. These can be expressed in (x,y) pairs as follows: (T.sub.arrival-kd-md2, T.sub.arrival-rmd-md2) and (T.sub.arrival-kd-md1, T.sub.arrival-rmd-md1), where T.sub.arrival-kd-md1 represents the arrival time in KD units of the broadcast from MD1 and T.sub.arrival-rmd-md1 represents the arrival time in RMD units of the broadcast from MD1.
(45) As additional broadcasts come in from both MDs, the KD can use the (x,y) pairs to do curve fitting as discussed above with respect to
(46) In some embodiments, the KD can calculate two separate T.sub.event-kd times: one based off of the broadcasts from MD1 and another based on MD2, T.sub.event-kd-md1 and T.sub.event-kd-md2. A combined T.sub.event-final can be calculated based on the combination of T.sub.event-kd-md1 and T.sub.event-kd-md2. In some embodiments, the mathematical or a weighted mean could produce T.sub.event-final. In some embodiments, the weights are chosen based on the estimated accuracy of each of the T.sub.event-kd times. The present inventive concept is not restricted to using just weighted averaging as a method to determine T.sub.event-final. In some embodiments, KD may receive broadcasts from three or more MDs.
(47) Referring now to
(48) In a situation where the known devices (KD) have unfettered access to power, they can remain on all the time listening and transmitting as needed. In these embodiments, the fixed devices stay on most or all the time, and the unknown devices (UD) turn on briefly to transmit a broadcast message, but do not necessarily listen to a response.
(49) Referring now to
(50) The algorithm to determine location based on time stamps using these assumptions will be discussed below. An initial guess of the x,y and z location called L.sub.guess will be determined. In some embodiments, a two dimensional solution could be sought which would only require x and y, but no z. For purposes of simplicity herein, the three dimensional solution will be discussed, however, it will be understood that the methods are also suitable for two dimensions.
(51) A distance, D.sub.i, is calculated from L.sub.guess to each KD.sub.i using the following equation:
D.sub.i=sqrt((x−x.sub.i).sup.2+(y−y.sub.i).sup.2+(z−z.sub.i).sup.2) Eqn. (9)
The travel time based on the speed of light, T.sub.i=D.sub.i/c (c is the speed of light, t.sub.i is the travel time from the UD to KD.sub.i) is calculated. The departure time of the broadcast based on each stationary device's arrival time is calculated as follows:
T.sub.depart-i=T.sub.arrival-i−T.sub.i Eqn. (10)
(52) Under ideal circumstances, if the initial guess is correct and there are no timing errors, the T.sub.depart-i times will all be substantially the same. However, if it is not the case, the error among the T.sub.depart-i is calculated.
T.sub.avg=mean(T.sub.depart-i) Eqn. (11)
where T.sub.avg is the average of all the T.sub.depart-i. The Error function is represented by the following equation:
F.sub.Error=Σ(T.sub.avg−T.sub.depart-i).sup.2 Eqn. (12)
A suitable value of L.sub.guess will make F.sub.Error have a minimum value, for example, L.sub.guess could be the average of all the KDs location and represent the location of the remote device. A variety of iterative methods can be used to determine the minimum. For example, the gradient descent method can be used as an iterative method to determine the minimum. The gradient descent method uses a negative gradient of the function to find the fastest decrease in the error. Amending L.sub.guess based on the gradient descent method and iterating steps discussed above with respect to
(53) Although embodiments of the present inventive concept illustrated in
(54) Methods for calculating location when all known devices broadcast will now be discussed. These methods may be very similar to the methods discussed above with respect to
(55) Using methods to resynchronize clocks discussed above, all KDs are synchronized to a root MD. All KDs periodically broadcast a message. In some embodiments, the departure time of the broadcast in MD clock units, T.sub.depart-i-md, is embedded within the broadcast message. In some embodiments, T.sub.depart-i-md is known or communicated to the UD outside of the broadcast message. Furthermore, the broadcast message contains either the identifier of the KD and/or the location coordinates of the KD. The UD records the arrival time stamp, T.sub.arrival-i-ud, for each received broadcast. An initial guess (L.sub.guess) of the UD's x,y,z location is determined. In some embodiments, the method may be applied in two dimensions where the guess only uses x and y coordinates as discussed above.
(56) The distance, D.sub.i, from the UD to the other KDs may be calculated D.sub.i=sqrt((x−x.sub.i).sup.2+(y−y.sub.i).sup.2+(z−z.sub.i).sup.2) using Eqn. (9) discussed above. The travel time is based on the speed of light, T.sub.i=D.sub.i/c (c is the speed of light, t.sub.i is the travel time from the UD to KD.sub.i) as discussed above. The departure time of the broadcast from KD.sub.i, T.sub.depart-i-ud, is calculated as according to Eqn. (10). The offset, T.sub.i, between the MD master clock and the clock of the UD is calculated as follows:
T.sub.offset-i=T.sub.depart-i-ud−T.sub.depart-i-md Eqn. (13)
Under ideal circumstances, if the initial guess is correct and there are no timing errors, the T.sub.offset-i times will all be substantially the same. This assumes that the clock frequencies of the UD and the MD are also nearly the same. The error among the T.sub.offset-i is calculated as follows:
T.sub.avg=mean(T.sub.offset-i) Eqn. (14)
where T.sub.avg is the average of all the T.sub.depart-I and the Error function is represented as follows:
F.sub.Error=Σ(T.sub.avg−T.sub.offset-i).sup.2 Eqn. (15)
A suitable value of L.sub.guess will make F.sub.Error have a minimum value and represent the location of the remote device. A variety of iterative methods can be used to determine the minimum. For example, the gradient descent method can be used as an iterative method to determine the minimum. The gradient descent method uses a negative gradient of the function to find the fastest decrease in the error. Amending L.sub.guess based on the gradient descent method and iterating operations discussed above will approach a solution. Once a minimum error is reached, a solution may be found. Not only is the x,y,z location of the UD determined, but the offset time of the UD to the MD is also calculated as T.sub.avg of the final iteration.
(57) Methods for calculating location when UD's and MD's clock frequency is slightly off will be discussed. Methods discussed above are used when the UD's and MD's clock frequency is nearly the same or does not offer appreciable difference over the time that the UD receives the broadcasts. In embodiments where this is not the case, these differences should be accounted for. Thus, unlike discussed above, T.sub.offset-i would not be nearly the same for all KD.sub.is, but instead can be modeled as a linear relationship. T.sub.calculated-offset-i is the calculated value of T.sub.offset-i when suitable values for T.sub.offset-const and K.sub.clock-dif are chosen as illustrated in the following equation:
T.sub.calculated-offset-i=T.sub.offset-const+T.sub.depart-i-md×K.sub.clock-dif Eqn. (16)
The difference between the T.sub.offset-i and its associated calculated value T.sub.calculated-offset-i represents the error that is fed into the error function:
F.sub.Error=T.sub.calculated-offset-i−T.sub.offset-i Eqn. (17)
Thus, in Eqns. (13) and (14) a modified error function where T.sub.avg is replaced with T.sub.calculatedoffset-i will be used as illustrated below:
Error function,F.sub.Error=Σ(T.sub.calculated-offset-i−T.sub.offset-i).sup.2 Eqn. (18)
There is more than one way to choose values for T.sub.offset-const and K.sub.clock-dif. In some embodiments, T.sub.offset-const and K.sub.clock-dif are chosen such that the T.sub.calculated-offset-i values are most closely related to T.sub.offset-i. In some embodiments, since T.sub.offset-const and K.sub.clock-dif can be treated as variables in the error function, F.sub.error. T.sub.offset-const and K.sub.clock-dif can be iterated upon just as the x,y, z variables are iterated upon as discussed above.
(58) Methods for calculating location based on time-of-flight with synchronized devices will now be discussed. In some embodiments, using a highly precise, stable clock for both the MD's clock and the UD's clock, the devices can remain synchronized for a long period of time. Once synchronized, a direct calculation of distance can be done. In other words, the UD is synchronized to the MD, so when the UD receives a broadcast, T.sub.arrival-i-md can be calculated directly from T.sub.arrival-i-ud as illustrated by the following equation:
D.sub.from-i-to-UD=(T.sub.arrival-i-md−T.sub.depart-i-md)×C.sub.speed-of-light Eqn. (19)
where D.sub.from-i-to-UD represents the calculated distance from KD.sub.i to UD and C.sub.speed-of-light is the speed of light constant.
(59) In some embodiments, most of the KDs do not have access to ample supply of power. They remain off most of the time. In these embodiments, devices turn on briefly to do a synchronized broadcast of their positions and then quickly turn off. To accomplish this, in some embodiments of the present inventive concept all KDs are programmed to turn on at some specific internal time. Initially they are all synchronized to turn on at or nearly at the same time. When turned on, the KDs perform any of the methods discussed above to synchronize their times. Furthermore, while they are on, each KD transmits a broadcast at a specific time. The broadcast message can include, for example, the x,y,z location of the KD; and the departure time of the broadcast message. In some embodiments, the message does not contain the x,y,z location, but instead includes a unique ID of the KD such that the KD's location could be looked up through an alternate means.
(60) Once synchronized, the KDs sleep until a predefined time in which they wake up and repeat the above described method. During this process, a UD will receive the broadcasts from various KDs. The MD departure time, T.sub.depart-i-md, is embedded in the broadcast message. The UD will have captured the arrival times stamp, T.sub.arrival-i-ud. Therefore, the UD's location can be determined using the methods discussed above.
(61) In some embodiments, the mobile device sleeps during the same period as the stationary devices to conserve power.
(62) In some embodiments of the present inventive concept, a highly precise clock may be used for the MD device, which may further reduce the timing error of the entire system. An example of a highly precise clock could be an atomic clock whose precision is orders of magnitude better than that of a crystal oscillator.
(63) To conserve power, most KDs may only turn on to receive a broadcast message and then rebroadcast it. The master clock device however stays on while other devices may sleep so precise timing can be maintained even while the devices are sleeping.
(64) As discussed above, T.sub.offset-const and K.sub.clock-dif may be calculated and can be used to synchronize the UD with the MD. If the UD and MD both have highly precise clocks, for example, atomic clocks, then the UD can stay synchronized over a long period. When the clock of the UD is already synchronized to the MD, any received broadcasts and their associated transmit and receive timestamps can be used to calculate these values without the need to use TdoA algorithms discussed above. Instead, fewer devices are needed to calculate location based on a direct distance calculation as follows:
Distance=(T.sub.arrival-md−T.sub.depart-md)×C.sub.speed-of-light Eqn. (20)
Using triangulation methods, as few as 2 KDs are typically needed to determine x and y location coordinates and as few as 3 KDs are needed for x, y, and z. This compares favorably to TdoA which typically needs one more device to determine location.
(65) As discussed above, ultra-wide band RF technology enables RF transmitters and receivers to send and receive signals at precise times. UWB technology can be leveraged for real time location systems using Time-of-Flight and Time-difference-of-Arrival technologies. However, synchronization between devices is critical in some of these applications. Thus, some embodiments of the present inventive concept provide both methods to synchronize multiple UWB transceivers so that they all refer to a master clock and to determine location based on the synchronization of these devices.
(66) As discussed above, methods are described to determine the location of UDs. However, once the location of UD is known, it can also be used as a KD and contribute to the pool of KDs used to synchronize and determine location of other UDs. For slowly moving or stationary UDs over a period of time, these UDs can be considered quasi-static. “Moving slowly” is relative, because the UDs are only required to not move appreciably during the period of time they serve as KDs. If the period of time is small, the UDs actually can move quite quickly and still serve as KDs.
(67) As discussed above, some aspects of the present inventive concept may be implemented by a data processing system. The data processing systems may be included in any of the devices discussed herein without departing from the scope of the present inventive concept. For example, the data processing system may be included in the MD and/or KD. Exemplary embodiments of a data processing system 930 configured in accordance with embodiments of the present inventive concept will be discussed with respect to
(68) As discussed above, the memory 936 can include data such as clock and location (x,y,z) information. However, it will be further understood that the memory 936 may further include data signaling errors, or alerts, and other status data. The memory 936 may be accessed for database storage of location data for historical record, and analytics program operations of that data and other transmitted data, for improved decision-making. Thus, the memory is not limited to just clock and location information.
(69) In some embodiments of the inventive concept, the system may also apply a weighting algorithm to arrival and departure time and distance data of each KD to determine location from any of the methods described in this inventive concept. For example, with a priori knowledge of approximate location, a KD to UD RF transmission that has a direct path that goes through walls or thick metallic barriers may not be weighted as much as those KD's that are within the same room as the UD with a clear line of sight. Further, measured parameters such as the received “Total Signal Power”, “First Path Signal Power”, and/or the “First Path Power Ratio” could all be used in weighting the importance of the KD's measured data in the localization algorithms. Further, the system could be calibrated beforehand to determine the relative importance of each KD's data based on location. An example of such a calibration could include taking measurements of a moving device with the stationary KDs in a variety of different locations. Depending how close the measured data of each KD was per location, an appropriate weighting metric could be applied.
(70) Referring now to
(71) Viewing messages passed to and from the UD and KD1, there are three total messages. All timestamps are local to the device itself. It is well known that in sending three messages and recording timestamps that a time-of-flight between the two devices value can be calculated. For example, Message 1 is the message sent from the UD to KD1 with timestamps of T.sub.depart-UD-1 and T.sub.arrival-KD-1. Message #2 is sent from KD1 to UD and has local timestamps of T.sub.depart-KD1-2 and T.sub.arrival-UD2. Finally, Message #3 is sent from UD to KD1 and has local timestamps T.sub.depart-UD-3 and T.sub.arrival-KD1-3. Therefore the time it takes to travel from one device to the next can be described as:
TOF.sub.kd1-ud=[(T.sub.arrival-UD-2−T.sub.depart-UD-1)−(T.sub.depart-KD1-2−T.sub.arrival_KD1-1)+(T.sub.arrival-KD1-3−T.sub.depart-KD1-2)−(T.sub.depart-UD-3−T.sub.arrival-UD-2)]/4 Eqn. (21)
This method is provided for example only. It will be understood that other methods exist for calculating TOF.sub.KD1-UD. One assumption in this calculation is that the clock offsets between KD1 and UD are small enough such that TOF.sub.kd1-ud can represent a true time independent of clock offsets.
(72) Since TOF.sub.kd1-ud is known, then a distance between KD1 and UD can be calculated by the TOF with the speed of light. Further, TOF.sub.KD1-UD can be used to calculate the T.sub.depart-UD-MD in master device units. Given that the KDs syncronize themselves with an MD, the arrival times of all the devices are recorded as T.sub.arrival-KD1-MD, T.sub.arrival-KD2-MD and T.sub.arrival-KD3-MD. The departure time of the UD in MD units can then be determined by subtracting the TOF.sub.KD1-UD:
T.sub.depart-UD-MD=T.sub.arrival-KD1-MD−TOF.sub.KD1-UD Eqn. (22)
Thus, the time of flight for the first message between UD and KD2 and KD2 can also be determined.
TOF.sub.KD2-MD=T.sub.arrival-KD2-MD−T.sub.depart-UD-MD Eqn. (23)
TOF.sub.KD3-MD=T.sub.arrival-KD3-MD−T.sub.depart-UD-MD Eqn. (24)
(73) Distances can be determined, and triangulation algorithms can be used to determine the location of the UD.
(74) The decision with which KD should be chosen to perform TOF with the UD can be made different ways. For example, with some a priori knowledge of approximate location, the KD that is closest to the UD can be chosen. Alternatively, the received signal strength of the KD that is greatest from the initial transmit ping could determine which one to use for TOF. Some transceivers provide the “First Path Signal Power.” Further, the ratio of the “First Path Signal Power” to the “Total Signal Power” (First Path Power Ratio) can also be used in determining which KD to perform Time-of-Flight messaging with.
(75) Referring now to
Δ.sub.Pi-Cj for points Pi{i=1 to 6} and circles Cj{j=1 to 3} Eqn. (25)
A weighting function, “Func”, is applied for each distance, Δ.sub.Pi-Cj. For example, a step function may be applied. For Δ.sub.Pi-Cj below a certain threshold, the weight function, “Func” is increased by one (1) point. The sum of the weighting functions is:
SumFunc(Pi)=Func(Δ.sub.Pi-C1)+Func(Δ.sub.Pi-C2)+Func(Δ.sub.Pi-C3) Eqn. (26)
For the greatest SumFunc(Pi) the solution is chosen as Pi.
(76) It will be understood that Δ.sub.Pi-Cj can be directly calculated for a given KDj and Pi as:
Δ.sub.Pi-Cj=sqrt((x.sub.j−x.sub.Pi).sup.2+(y.sub.j−y.sub.Pi).sup.2)−D.sub.UD-KDj Eqn. (27)
where (x.sub.j, y.sub.j) are coordinates of the KDj, and (x.sub.pi, y.sub.pi) are the coordinates for P.sub.1. An example of a weighting function, Func, could be:
Func(Δ.sub.Pi-Cj)=0 for abs(Δ.sub.Pi-Cj)>1 meter Eqn. (28)
Func(Δ.sub.Pi-Cj)=1 for abs(Δ.sub.Pi-Cj)<=1 meter Eqn. (29)
In this example, the SumFunc(Pi) represents the number of points that are within 1 meter of Pi. Thus, the point with the highest number of neighboring points is chosen which represents the points that are most lumped together.
(77) In some embodiments, the weighting function, Func, could also be weighted per KDi by making it dependent on the RF signal strength of a received signal of the KDi. Some transceivers provide the “First Path Signal Power.” Further, the ratio of the “First Path Signal Power” to the “Total Signal Power” (First Path Power Ratio) can also be used in the weighting function, Func. For example, a “Func” could be:
Func(Δ.sub.Pi-C1)=0 for abs(Dist)>1 meter Eqn. (30)
Func(Δ.sub.Pi-C1)=R1 for abs(Dist)<=1 meter Eqn. (31)
where R1 is the First Path Power Ratio of the received signal from KD1. In this example, some KDs are given greater weight when than other KD is when they have a higher First Path Power Ratio.
(78) An algorithm can also be selective for which circle pairs are used in calculating points. For example, if two KDs have very low “First Path Signal Power”, the algorithm may assume that the distances will not be very accurate, and they could be removed from consideration. Alternatively, for a point that has a very high “First Path Power Ratio,” the algorithm may require that all pairs need to have said circle as one of the pairs. For example, if KD1 and KD2 have very low First Path Signal Power, but KD3 has a very high “First Path Power Ratio”, then points from C1-C2 could be ignored, and only points from C1-C3 and C2-C3 would be considered (i.e. P6, P1, P3, and P4).
(79) Finally, points could be eliminated if they lie outside the area they are expected to be. For example, assume a UD is in a rectangular room mapped to a coordinate system giving the four corners of the room as (0,0) (100,0) (100,100) (0,100). Using the clumped method, two possible points show up as (50,50) and (200,50). It is clear that the point (200,50) can be thrown out because it does not lie in the room. This could also be reflected in the individual weighting functions Func giving it a very low value if the Pi coordinate points are outside of the given area.
(80) Embodiments of the present inventive concept including a point clumping method with time difference of arrival will now be discussed. As discussed above, point clumping may be used when distances are known between the UD and the KDs. In some embodiments, the entire system is synchronized to a master clock. The UD only transmits a ping, and so the system only knows the arrival times, T.sub.arrival-KD-MD, of the ping from each of the KDs. It does not know the distances.
(81) In some embodiments, the distances, D.sub.UD-KDi, need to be determined for each KDi-UD pair. For a known departure time, T.sub.depart-UD-MD, of the UD ping, we have shown that D.sub.UD-KDi, can be calculated as:
D.sub.UD-KDi=(T.sub.arrival-KD1-MD−T.sub.depart-UD-MD)*c.sub.speed-of-light Eqn. (32)
where c.sub.speed-of-light is the speed of light. Consequently, it follows that for a given departure time, T.sub.depart-UD-MD, the Point Clumping Method discussed above may be used. Maximizing function SumFunc(Pi) can also be a function of the departure time T.sub.depart-UD-MD or T.sub.depart for short:
SumFunc(Pi,T.sub.depart) Eqn. (33)
(82) If T.sub.depart is varied through all possible, reasonable values, a 2D array of SumFunc is determined whose two variables are Pi and T.sub.depart. Note that Pi is, in itself, a function of T.sub.depart, since new Pi's are calculated for each value of T.sub.depart. Pi should ideally be written as Pi(T.sub.depart), but for the case of simplicity, we simply write Pi.
(83) In these embodiments, there can be a value for Pi and T.sub.depart that gives the maximum value of SumFunc. For example,
(84) It will be understood that the line-of-sight (LOS) time-of-flight (TOF) of a signal is the direct path an RF signal would take to from one point to another. However, this LOS TOF may be equal to or less than the measured TOF of a transceiver. The measured TOF may be a result of a reflection and therefore would be longer in time than a TOF whose signal represented the direct path of the signal. This can be used in helping to aid the localization effort. For example, referring to
(85) Referring now to
T.sub.depart-tof=T.sub.arrival-KD2-MD−TOF.sub.KD2-UD Eqn. (34); and 6) Depending on the degree of noise from the TOF measurement and the arrival time measurements, a suitable range around T.sub.depart-tof can be chosen for T.sub.depart. Thus, a TOF measurement with one KD can augment the localization for TDOA in the clumping method.
(86) Referring to
(87) Example embodiments are described above with reference to block diagrams and/or flowchart illustrations of methods, devices, systems and/or computer program products. It is understood that a block of the block diagrams and/or flowchart illustrations, and combinations of blocks in the block diagrams and/or flowchart illustrations, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, and/or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer and/or other programmable data processing apparatus, create means (functionality) and/or structure for implementing the functions/acts specified in the block diagrams and/or flowchart block or blocks.
(88) These computer program instructions may also be stored in a computer-readable memory that can 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 instructions which implement the functions/acts specified in the block diagrams and/or flowchart block or blocks.
(89) 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 block diagrams and/or flowchart block or blocks.
(90) Accordingly, example embodiments may be implemented in hardware and/or in software (including firmware, resident software, micro-code, etc.). Furthermore, example embodiments may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
(91) The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non-exhaustive list) of the computer-readable medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, and a portable compact disc read-only memory (CD-ROM). Note that the computer-usable or computer-readable medium could even be paper or another suitable medium upon which the program is printed, as the program can be electronically captured, via, for instance, optical scanning of the paper or other medium, then compiled, interpreted, or otherwise processed in a suitable manner, if necessary, and then stored in a computer memory.
(92) Computer program code for carrying out operations of data processing systems discussed herein may be written in a high-level programming language, such as Java, AJAX (Asynchronous JavaScript), C, and/or C++, for development convenience. In addition, computer program code for carrying out operations of example embodiments may also be written in other programming languages, such as, but not limited to, interpreted languages. Some modules or routines may be written in assembly language or even micro-code to enhance performance and/or memory usage. However, embodiments are not limited to a particular programming language. It will be further appreciated that the functionality of any or all of the program modules may also be implemented using discrete hardware components, one or more application specific integrated circuits (ASICs), or a field programmable gate array (FPGA), or a programmed digital signal processor, a programmed logic controller (PLC), or microcontroller.
(93) It should also be noted that in some alternate implementations, the functions/acts noted in the blocks may occur out of the order noted in the flowcharts. 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. Moreover, the functionality of a given block of the flowcharts and/or block diagrams may be separated into multiple blocks and/or the functionality of two or more blocks of the flowcharts and/or block diagrams may be at least partially integrated.
(94) In the drawings and specification, there have been disclosed exemplary embodiments of the inventive concept. However, many variations and modifications can be made to these embodiments without substantially departing from the principles of the present inventive concept. Accordingly, although specific terms are used, they are used in a generic and descriptive sense only and not for purposes of limitation, the scope of the inventive concept being defined by the following claims.