Indoors, location technologies such as GPS (Global Positioning System) may not work, or may be too slow and inaccurate to be useful for navigation. Other technologies are being developed and deployed to assist with indoor navigation, including radio-based and acoustic-based solutions.
For a more complete understanding of the present disclosure, reference is now made to the following description taken in conjunction with the accompanying drawings.
One example of an indoor navigation solution is the Cricket Indoor Location System developed by the Massachusetts Institute of Technology. Cricket uses a set of ceiling-mounted “beacons” which each periodically broadcast location information in a radio frequency (RF) pulse containing a message, and also emit an ultrasonic pulse. Based on the difference in time-difference-of-arrival (TDOA) between the RF and ultrasonic pulses, a listening device may determine its distance to the beacon. By collecting the beacon location information for multiple beacons and calculating distances to those beacons, a listening device can triangulate its own position.
Cricket uses an active-beacon/passive-listener architecture. A virtue of having passive listeners is that the system is scalable with respect to the number of listening devices (i.e., receivers), making system performance independent of the number of listeners in an environment. Also, since the listening devices are not tracked by the system, the privacy of users of the listening devices is protected.
Each active beacon periodically transmits a radio frequency (RF) pulse containing a message including beacon-specific information, such as a unique beacon identifier (“beacon ID”), the beacon's spatial coordinates (e.g., geographic coordinates, Cartesian coordinates, etc.), and information identifying the physical space associated with the beacon (e.g., a room identifier). The beacon begins transmission of an ultrasonic pulse simultaneously with transmission of the RF pulse. The duration of the ultrasonic pulse is longer than the RF pulse, but the ultrasonic pulse does not ordinarily carry any beacon-identifying nor coordinate information. A listening device can determine its own location to within a few centimeters by triangulating its position based on the spatial coordinates included in the RF pulses of three or more beacons and the calculated TDOA distances to those beacons.
A problem that occurs with the Cricket system is that if beacon transmissions are uncoordinated, a listening device may receive multiple RF pulse transmissions in succession, followed by the ultrasonic pulses, with no way to determine which ultrasonic pulse originated with which beacon. Solutions to this problem have been based on use of distributed scheduling to control when beacons transmit, including having each beacon sense whether another beacon is transmitting (RF carrier sensing) before transmitting themselves, timing out if another beacon's transmission is detected, and randomizing transmission times (thereby reducing chances of concurrent beaconing). A similar decentralized scheduling scheme has been used with Ethernet, where the coordination strategy is commonly known as “carrier sense multiple access with collision detection” (CSMA/CD). Another solution for scheduling Cricket beacons is to use time-division-multiple-access (TDMA), where each beacon is assigned a different time to transmit.
In Cricket, as in Ethernet, implementation of distributed scheduling must accommodate a lack of centralized transmission coordination, and the scalability issues that arise as the number of transmitters increases. Using CSMA/CD and/or TDMA, the beacons transmit one after another serially, waiting a sufficient time to allow a prior beacon's acoustic pulse to fade before transmitting the next RF/acoustic beaconing pulses. This acoustic-serial implementation assures that a received acoustic pulse is readily associated with a received RF pulse, but it slows system performance in large-scale beacon deployments.
Scaling the infrastructure for real-world commercial deployments, a 10,000 square foot datacenter might require hundreds of beacons for listening devices to track themselves throughout the datacenter. In any given region of the datacenter, beacons may wind up waiting multiple seconds for other beacons to complete their transmissions before transmitting themselves. The result is that listening devices in the region may not have location updates for multiple seconds, resulting in poor tracking performance.
One solution to improve scalability would be to use multiple ultrasonic/acoustic frequencies to better differentiate beacons. Another solution would be to encode data over the ultrasonic/acoustic channel to provide indicia associating the acoustic channel with the corresponding RF pulse originating from a same beacon. However, on their own, these solutions have inherent limitations since the number of acoustic channels and the amount of data encodable over each channel is limited by the abilities of hardware, such as the ability of the speakers/transducers used by the beacons to transmit such signals and the ability of the microphones used by the listening devices to capture such signals. Encoding data over the acoustic channel is further complicated by multiple acoustic reflections of a same acoustic pulse potentially being received at the listening device out-of-phase, creating interference that can corrupt encoded data. While such shortcomings can be overcome, they increase the audio processing complexity and computational load placed on the listening devices, necessitating a more expensive processor and reducing listening device battery life.
The scheduling algorithm selects (130) a random “active” beacon. Beacons may have four statuses: “active selected” (a beacon selected to transmit RF and acoustic pulses), “active unselected” (a beacon available for selection), “timed-out” (a beacon that has not yet been selected in the current cycle of the schedule and is temporarily inactive), and “retired” (a beacon that has already been selected in the current cycle of the schedule that is inactive until the next cycle of the schedule). Initially, at the start of each cycle, all beacons are active.
A “timed-out” beacon is prohibited from transmitting its RF and acoustic pulses for the duration of its time out period. A “retired” beacon, having already transmitted its RF and acoustic pulses, will not transmit again until the next cycle of the scheduling algorithm which begins after every other beacon with an RF range that overlaps the RF range of the retired beacon has broadcast its pulses in the current cycle. As will be described further below, autonomously self-scheduling beacons may continuously monitor RF transmissions to detect the RF pulses from other beacons for scheduling purposes even when they are “inactive” (i.e., timed-out or retired).
Whether the RF range of one beacon overlaps the RF range of another beacon may be determined based on whether a location exists where a listening device in the system might be able to detect RF pulses from both beacons. Similarly, whether the acoustic range of one beacon overlaps the acoustic range of another beacon may be determined based on whether a location exists where a listening device in the system might be able to detect acoustic pulses from both beacons.
In the example in
The ranges of cones of propagation may be mapped by sampling to account for room acoustics to allow for more precise approximation, but for the purposes of demonstrating the system architecture, a simple cone is used, with every beacon having a same cone radius. For example, sampling may be used to determine the maximum distance from each beacon where an acoustic pulse from the respective beacon transitions from being detectable to not being detectable, and the longest/furthest maximum distance may be set as the range/radius of each cone of propagation. A set of Cartesian axes 102 are included in the figures to illustrate relative orientations there between.
The selected beacon 110a simultaneously begins transmission (132) of an RF pulse and an acoustic pulse. The scheduling algorithm times out (134) each beacon whose acoustic cone of propagation 112 overlaps (e.g., cone overlap 230 in
The acoustic pulse may be ultrasonic or audible, and unless expressly stated otherwise, the terms “ultrasonic,” “acoustic,” and “audible” pulses may be used interchangeably herein, since even though ultrasound has advantages (e.g., component cost, propagation properties, less susceptibility to interference due to ambient noise, shorter wavelength facilitating shorter pulses), any frequency of sound that will propagate in the medium (e.g., air) between the beacon 110 and the listening device 120 may be used—e.g., infrasonic (below 20 Hz), acoustic (between 20 Hz and 20 kHz), or ultrasonic (above 20 kHz).
The status of the selected beacon is changed (136) from “active selected” to “retired.” Having transmitted its pulses, the beacon will remain retired until after all the other beacons having RF-range overlap with the retired beacon have been selected. The system 100 waits 138 for a next available RF timeslot (or advances to the next time slot if pre-calculating a schedule). While multiple acoustic pulses may be propagating simultaneously, only one RF pulse is propagating from beacons that have overlapping RF propagation ranges (which may be modelled as cones, spheres, etc.) at a time, using time division multiplexing (TDM) timeslots. With the next timeslot, the schedule reactivates (140) all of the non-retired beacons that have been timed out longer than the maximum time of flight (tTOF) for an acoustic pulse in the environment.
The maximum time of flight (tTOF) of an acoustic pulse is a predetermined value for the system 100 based on the longest duration any acoustic pulse can be detected by a listening device in the system. The value depends on the magnitude/amplitude of the acoustic pulses emitted by each beacon 110, the distance between a receiver (e.g., a listening device) and the emitting beacon, the acoustic-reception sensitivity of the listening devices 120, a detection threshold of a filter used by a listening device to reject weak acoustic signals (e.g., classifying a received acoustic pulse as “detected” only while the pulse's magnitude is above the threshold), and the ambient acoustics of the environment.
The maximum time of flight (tTOF) of an acoustic pulse is a predetermined value for the system 100 because during normal operation, beacons will receive no feedback from the listening devices indicating whether a pulse was or was not received. The value may be selected based on the anticipated or pre-measured sensitivities of listening devices to be used in the system, and/or a receiver sensitivity value may be periodically broadcast (e.g., in an RF pulse between cycles of the beacons) instructing listening devices to set their detection sensitivity to a particular value. If the receiver sensitivity value is periodically broadcast, all the beacons in the system may be instructed to simultaneously emit an acoustic pulse, allowing each listening device to use the magnitude of the first received acoustic pulse to calibrate its own detection sensitivity, with the next cycle beginning after the maximum time of flight tTOF.
The microphone(s) on each listening device 120 has a particular sensitivity, and an acoustic pulse received by the microphone(s) is input into the detection threshold filter. When a signal magnitude of a received incoming acoustic pulse exceeds the threshold of the filter, the acoustic pulse is “detected” by the listening device. When the signal magnitude of the received incoming pulse falls below this cutoff threshold of the filter, the pulse is no longer “detected” by the listening device 120 (e.g., even if picked up by a microphone of a listening device, the acoustic pulse is rejected as too weak and not used for TDOA processing). The threshold of the filter may be a tunable value (e.g., an adjustment made in hardware or software), and may be preset on each listening device and/or set in accordance with system calibration parameters. The maximum time of flight tTOF for a system 100 is the largest sum of the time it takes for a pulse to travel to any arbitrary location in the system, and the time it takes for the pulse to decay below a listening device's detection cutoff threshold at that location.
An error margin may be added into the maximum time of flight tTOF to prevent the possibility that the combination of fading pulses from two different beacons could possibly be detected in-phase by a listening device as an acoustic pulse, even though the magnitude of each individual signal is below the listening device's detection cutoff threshold (e.g., two acoustic pulses combining at a point in space to have the characteristics of one pulse of greater magnitude than either pulse possesses individually).
In some ambient environments, an echo of an acoustic pulse may have sufficient magnitude to be above the pulse-detection threshold of the filter of a listening device. To reduce or eliminate this potential problem, listening devices may be configured to differentiate between an acoustic pulse and the echoes (reflections) of the acoustic pulse. Most any echo discrimination technique may be used. For example, a listening device may use multiple microphones together with an acoustic source localization echo discrimination technique (e.g., comparing the amplitude and phase of sound waves received on multiple microphones to distinguish between a main pulse and its echo). Another example of an echo discrimination technique that a listening device may include is time-domain cue detection, which detects time-separation pitch, rise time, and duration differences to differentiate the main pulse from its echo (an echo discrimination technique most commonly used with SONAR). However, if the listening devices are not configured to differentiate between an incoming acoustic pulse and that pulse's echoes, this problem can be addressed by lengthening the duration of the acoustic pulses, and/or by increasing the maximum time of flight of an acoustic pulse tTOF to include the time needed for both an acoustic pulse and its echoes to die down, such that secondary reflections from an acoustic pulse are provided sufficient time to fall below the filter's detection threshold within the maximum time of flight duration.
As will be described further below, each listening device 120 may receive multiple RF pulses prior to receiving an acoustic pulse. The listening device 120 determines which of the preceding RF pulse matches the acoustic pulse using combinatorial techniques. By timing-out beacons for the maximum time of flight (tTOF) of an acoustic pulse if the beacon's acoustic cone of propagation overlaps a selected beacon's acoustic cone, the listening device 120 will never receive more than one acoustic pulse at a time without regard to the listening device's location—even though there may be multiple acoustic pulses propagating within the system 100 at a same time. As a result, the scheduling algorithm is scalable to deployments with a very large number of beacons. Since multiple acoustic pulses may be propagating simultaneously, the scheduling algorithm can rapidly cycle through all the beacons, providing the listening device with rapid updates.
The number of RF pulses that a listening device 120 may receive prior to an acoustic pulse varies based on the listening device's location in the system 100 and the selection scheduling of nearby beacons (which may be random). The upper limit on the number of RF pulses per acoustic pulse depends on, among other things, the time difference between the duration of a time division multiplexing (TDM) timeslot afforded to each RF pulse and the maximum time of flight of an acoustic pulse tTOF. This difference impacts how many RF timeslots correspond to the duration that a beacon will remain timed-out, and therefore directly affects the probability of when a beacon proximate to a listening device 120 will transmit.
If a listening device does not discriminate between a main acoustic pulse and that pulse's echoes, and an echo has sufficient magnitude and duration to be detected as a discrete pulse by the receiver of the listening device (i.e., received as a separate pulse after the main acoustic pulse and being received at a magnitude above the receiver's detection filter threshold), and the listening device attempts to pair the echo with an RF pulse, then the time difference of arrival calculations performed by the listening device may fail. Whether this is an issue in a particular system depends upon (among other things) the duration of each acoustic pulse, the maximum magnitude of an echo in the system, and the acoustic pulse-detection filter threshold of each receiver. Lengthening the duration of the acoustic pulses to overlap with its own echoes can eliminate this problem by assuring that echoes of any consequential magnitude will not be discrete from the main pulse. Another echo mitigation solution to reduce and/or eliminate the false detection of echoes as acoustic pulses (for TDOA purposes) is to reduce each listening device's filter detection threshold below the maximum magnitude that an echo in the system may have without overlapping the main acoustic pulse, and/or to reduce the magnitude of each acoustic pulse emitted by the beacons so that a maximum magnitude that an echo in the system may have without overlapping the main acoustic pulse will be below each receiver filter detection threshold.
A system-timing benefit if each listening device performs echo discrimination to ignore acoustic echoes is that shorter-duration acoustic pulses may be used, thereby reducing the maximum time of flight (tTOF) of an acoustic pulse and the corresponding beacon time-out durations. Reducing tTOF speeds up how quickly beacons may broadcast in succession, thereby reducing the average time each listening device will need to identify its own location. Speeding up how quickly beacons broadcast in succession also reduces the average number of combinatorial computations a listening device may need to perform to pair an RF pulse with an acoustic pulse by reducing the average number of RF pulses received per acoustic pulse.
Modifications to the architecture may be made to further decrease the time it takes to cycle through all the beacons. For the purpose of demonstration, the example in
Also, while all the acoustic pulses are identical in the examples, multiple different acoustic frequencies might be used to further increase the speed of a cycle through all of the beacons. In such an implementation, the maximum time of flight of an acoustic pulse tTOF for each acoustic frequency might be different (due to differences in propagation characteristics). Beacon timeouts would be specific to an acoustic frequency, such that a beacon might have different time out durations at each frequency, and might be active in one frequency while timed out in another. When a beacon 112 transmits its RF pulse, in addition to the unique identifier, timestamp, geographic coordinates, and location identifier (e.g., room identifier), the beacon's RF pulse would also indicate which acoustic frequency it broadcast on, allowing a listening device 120 to pair received RF pulses with the corresponding received acoustic pulse of the identified frequency.
In
In
In the example in
Between the fifth and sixth RF timeslots, the timeouts expire on Beacons T 110t and U 110u. In
Between the ninth and the tenth timeslots, the time outs on Beacons D and I expire, such that Beacons B, C, D, and I are active. In
Between the thirteen and fourteenth RF timeslots, the time outs on Beacons D, N, and U expire. In
TDOA systems measure the distance between two points using signals with different speeds that traverse the same path between two points. If a transmitter simultaneously broadcasts a first signal at a velocity v1 and a second signal at a velocity v2, a receiver can calculate its distance d from the transmitter according to:
where t is the difference in time of arrival between the two signals at the receiver.
The speed of sound in dry air at a temperature of 20° Celsius (68° Fahrenheit) is approximately 343.2 meters per second. In comparison, a radio frequency (RF) signal travels at the speed of light, which is approximately 3×108 meters per second. Given the large difference between the speed of sound and the speed of light, the reciprocal of the speed of light can be approximated as zero, in which case equation [1] can be expressed as:
d≈t·vSound [2]
where vSound is the speed of sound in the ambient (e.g., 343.2 meters per second). Thus, the distance from the transmitter is approximately proportional to the time difference of arrival (the “approximate” being due to eliminating the miniscule contribution of the speed of light to the result in equation [1]).
Referring to
The central controller checks (626) its index to determine whether all beacons 110 have transmitted their pulses. If not (626 “No”) the central controller waits (632) for the next RF timeslot and reactivates (634) each non-retired beacon whose acoustic timeout has expired, updating the index of beacons. Based on the index of beacons, the central controller determines (636) whether there are any active beacons. If there are no active beacons (636 “No”), this means that all beacons are either retired or in a time-out. The central controller then waits (632) for the next RF timeslot, reactivates (634) beacons whose time outs have expired, and checks again. When there are active beacons (636 “Yes”), the central controller selects (612) a next random active beacon to transmit.
The process continues in a loop until all beacons have transmitted (626 “Yes”). At that point, the central controller waits (640) for the first RF timeslot that occurs at or after the expiration of all of the timeouts, and reactivates all beacons (644), resetting the status of all beacons in the index to “active.”
The difference between
Each RF pulse has a maximum time-of-flight less than duration of an RF timeslot. In view of the brevity needed for an RF timeout, while additional RF-timeout processing steps may be performed to provide an RF timeout and then reactivate RF-overlapping beacons upon the next RF timeslot, such steps would amount to “bookkeeping” steps internal to how step 628 keeps track of whether a beacon has or has not RF-overlapped with a selected beacon during the current timeslot. The determination (628) as to whether there are active beacons whose RF cone of propagation did not overlap all previous RF cones in this timeslot is therefore functionally equivalent to having an RF timeout assigned to beacons that have an RF cone of propagation which overlaps that of a selected beacon (as is done with the acoustic cones), but where the timeout period expires by the next RF timeslot.
The RF cone of propagation distance may be determined by manual measurements, and should be set equal to or greater than the distance at which an RF detection filter of the most sensitive listening device in the system will detect the RF pulse from the beacon with the strongest RF signal. Whether an RF cone of one beacon overlaps that of another may be determined based on whether the distance between the beacons is less than twice the RF cone of propagation distance.
The scheduling device then selects (712) selects a random active beacon, and assigns (720) the timeslot to the selected beacon. The selected beacon's status is changed (722) in the index to “retired.” A timeout is set (724) in the index for each beacon whose acoustic cone of propagation overlaps the selected beacon, where the timeout is for at least the duration of the maximum time of flight (tTOF) of an acoustic pulse. A determination (726) is made as to whether all beacons in the system have been selected based on the index.
If beacons remain to be selected (726 “Yes”), the scheduling device proceeds to the next RF timeslot (732) and updates the index to reactivate (734) those beacons whose timeouts will have expired. The scheduling device then determines (736) whether there are active beacons listed in the index. If not (736 “No”), the scheduling device advances to the next timeslot (732), reactivates (734) non-retired beacons whose timeouts will have expired, and tries again. If there are active beacons (736 “Yes”), the scheduling device loops back and selects (712) another active beacon.
This process of assigning beacons continues until all beacons have been selected (726 “Yes”). The scheduling device then sets (740) a beacon cycle to restart after an expiration of all timeouts, rounded up in units of RF timeslots to a time of the next RF timeslot following expiration of all timeouts. A schedule comprising the RF timeslot assignments is then distributed (744) to the beacons 110. The schedule may be a single schedule for all beacons indicating which timeslot is assigned to which beacon, or a beacon-specific schedule may be distributed to each beacon instructing that beacon which timeslot is assigned to it. Each beacon in a pre-scheduled system may maintain its own “clock” synchronized with the RF synchronization 308 based on transmitted RF time or timing signals (e.g., a common time reference).
Similar to the difference between
In
Autonomous operation utilizes carrier sensing and collision detection techniques, similar to those implemented with conventional Cricket. Each beacon maintains an index indicating the status of every other beacon in the system 100. Each beacon may determine its distance from each other beacon based on location information provided by the other beacons in their RF pulses and/or during initialization. Beacons may store and reuse inter-beacon distance information, and maintain a list of which beacons have acoustic cones of propagation overlapping its own.
A preset constant may be used by each beacon as the radius of the acoustic cone of propagation of every beacon in the system. As an alternative, the acoustic cone of propagation of a beacon may be measured when a beacon is added to the system, and the beacon configured to transmit its acoustic cone of propagation radius in the initialization RF message announcing itself to other beacons when added to the system and/or to include the radius in the information included in its RF pulse (510).
The beacon waits (810) for the next RF timeslot. Each beacon may maintain its own “clock” synchronized with the RF synchronization 308, synchronizing with transmitted signals (e.g., a common time reference). The beacon checks (812) to see if an RF carrier is sensed, indicating that another beacon is transmitting. If no other beacon is transmitting (812 “No”), the beacon checks (814) to see if its own status if “retired.” If it is retired (814 “Yes”), it loops back to wait (810) for the next RF timeslot. If the beacon is not retired (814 “No”), it check (816) to see if it is timed out, or a timeout has expired. If it is timed-out, it loops back to wait (810) for the next RF timeslot.
If the beacon is not timed out (816 “No”), the beacon transmits (820) its RF and acoustic pulse, while continuing to sense for RF collisions with other beacons. If no collision is detected, the RF pulse and acoustic pulse are transmitted to completion, and the beacon notes (822) that it is now retired in its own index.
If carrier sensing does detect an RF collision (830 “Yes”), the beacon suspends (834) transmission of both its RF and acoustic pulses. Collision detection occurs quickly enough that a listening device 120 should not interpret the suspended pulses as actual “detected” pulses, and/or the listening device may require a minimum RF and acoustic pulse duration before the pulse is classified as “detected.” Each listening device may also discard information from any RF pulse that terminates before it conveys an entirety of its beacon-specific information (e.g., beacon ID, spatial coordinates, room identifier, etc.). After suspending (834) transmission, the beacon waits (836) a random fraction of the RF timeslot and then determines (838) whether enough time remains in the current RF timeslot that it could transmit an entirety of its RF pulse before the timeslot ends. If enough time does remain (838 “Yes”), the process loops back (to step 812) and tries again in the same RF timeslot. If not enough time remains in the current RF timeslot (838 “No”), the process loops back (to step 810) to wait for the next RF timeslot.
If another RF carrier is sensed (812 “Yes”) prior to the beacon attempting to transmit (820), the identity of the transmitting beacon is indexed (842). If the RF pulse terminates before it conveys an entirety of its beacon-specific information, the RF pulse may be ignored (parallel to how the listening devices discard partial RF pulses). The beacon also checks (844) to see whether it is retired. Even when retired, a beacon continues to monitor the transmission of other beacons so that it may determine when all other beacons have transmitted. If it not retired (844 “No”), it checks (846) to see whether its own acoustic cone of propagation overlaps that of the transmitting beacon. Whether there is acoustic cone overlap may be determined by comparing the distance between beacons with a preset value corresponding to the radius of the acoustic cone of propagation. If the distance between beacons is less than twice the cone radius, a determination is made that there is acoustic overlap (846 “Yes”), and the beacon sets (848) its own timeout for at least the time of flight of an acoustic pulse tTOF.
If the beacon determines (844 “Yes”) that it is retired after indexing (842) the beacon ID of another beacon, or determined (846 “No”) that its own acoustic cone of propagation does not overlap with that of a transmitting beacon, or set its own timeout (848), the beacon checks (850) the index to determine whether all beacons have transmitted during the current cycle of the scheduling algorithm. If they have not (850 “No”), the process loops back to wait (810) for the next RF timeslot. If they have (850 “Yes”), waits 852 for at least the duration of the time of flight (tTOF) of an acoustic pulse before beginning a new cycle of the scheduling algorithm and resets (854) its index, resetting all beacons to “active.”
As each beacon involved in the RF collision (830) should be suspending its own transmission, the colliding RF beacon need not be indexed (842). Also, although illustrated as discrete steps, RF carrier and collision sensing (e.g., 812, 830) may be continuous. So for example, while the beacon is waiting the random fraction of an RF timeslot (step 836), if a new RF pulse is detected (step 812), that pulse may be indexed (step 842). In other words, waiting the random fraction of the RF timeslot (836) controls whether the beacon will attempt to transmit its own RF and acoustic pulses (820), rather than controlling its ability to monitor what other beacons are doing.
As discussed above, a threshold of an acoustic signal filter of each listening device serves as a cutoff as to whether an acoustic pulse is or is not “detected.” The listening devices may include a corresponding RF filter to determine whether a signal magnitude of a received RF pulse exceeds a cutoff threshold, to determine whether or not an RF pulse is “detected.” Whether an RF pulse falls above or below this threshold may be used to define an RF signal detectability range (e.g., cone of propagation) of a beacon.
However, in a system using a beacon autonomously implementing the process in
Referring to
In the alternative to using spatial coordinates to determine RF cone overlap, the beacon in
As mentioned above, although the detectability range of the RF emission propagation patterns of beacons are described as “cones” for the purpose of demonstrating the processes in
In
d2=dPlanar2+ΔZ2 [3]
where ΔZ is the difference in height between the beacon 110 and the microphone(s) of the listening device 120 used to detect acoustic pulses. Thus, the distance dPlanar from the beacon is:
dPlanar=√{square root over (d2−ΔZ2)} [4]
However, the height of the listening device's microphone may not be fixed, and the height of the floor or ceiling may vary. If the vertical separation AZ varies, any inaccuracy will carry into the distance calculations and triangulation results. Therefore, triangulation will typically be more robust if a location of the listening device relative to the beacon 1010 is determined based on the overlap of the measured TDOA distances 1042 from multiple beacons.
The TDOA distance “d” values may be used to determine and prune/eliminate candidate locations prior to triangulation. The distance between any two beacons is known or readily calculable. For example, if a first beacon is located at spatial coordinates X1, Y1, Z1 and a second beacon is located at spatial coordinates X2, Y2, Z2, the distance between beacons equals:
d12=√{square root over ((X1−X2)2+(Y1−Y2)2+(Z1−Z2)2)} [5]
Since the distance between beacons is known, whether an acoustic cone of propagation of one beacon overlaps that of the other may be determine by comparing twice the maximum radius of the cone of propagation rCoP 1048 to the beacon-to-beacon distance d12 (i.e., Equation [5]). A determination that the acoustic cones of propagation are overlapping may be based on the distance d12 between beacons being less than twice the maximum radius rCoP of an acoustic cone of propagation.
If a candidate distance (e.g., measured TDOA distance d1 1042) is greater than a maximum cone boundary-edge distance dCoP 1046 of the acoustic cone of propagation 112, logically the candidate beacon was not the origin of the acoustic pulse. In
Triangulation techniques may then be used to determine which candidate beacons from each set are the source of the acoustic pulse in the respective set. Using a combinatorial process, every combination of beacons remaining in the candidate sets may be combined and tested, with each combination including a beacon from each set. If there are three or more candidate sets, in an ideal system there will be a single unique match resulting from one of the combinations.
Each combination may be tested for violations of the triangle inequality, and eliminated if violated. The triangle inequality states that for any triangle, the sum of the lengths of any two sides must be greater than or equal to the length of the remaining side. For example, a candidate distance from the first set to Beacon 1 is d1 and a candidate distance from the second set to Beacon 2 is d2. The two beacons and the candidate location of the listening device form a triangle, with the third side being the distance between the beacons d12. If d1 is 266 cm, d2 is 160 cm, and the inter-beacon distance d12 is 50 cm, the resulting triangle violates the triangle inequality, since 266 cm>160 cm+50 cm. Therefore, any combination including both Beacon 1 and Beacon 2 can be eliminated as a potential solution.
Referring to
In an ideal system with no measurement error, if a candidate beacon is actually the source of the acoustic pulse, then the listening device will be located at the perimeter of the hemisphere 1260 of that beacon. Therefore, using two candidate beacons, a candidate location of the listening device can be determined based on where the hemispheres overlap, such that the candidate location will be along the edge of overlap region 1263 where the hemispheres intersect.
To demonstrate, if the vertical height of the listening device's microphone (ZMicrophone) is known in the spatial coordinate system used by the beacons, then there are two candidate locations 1250a and 1250b along the edge 1262 where the hemispheres intersect. At height ZMicrophone an intersection of the cross-sections of the d1 hemisphere 1261a and d2 hemisphere 1261b occurs within an overlap region 1264, with the candidate locations 1250a and 1250b being along the edge of that overlap region 1264. However, if ZMicrophone is not known, then what can be determined from the locations of the two beacons and the two candidate TDOA distances is that the candidate locations are along the edge of overlap 1263 of the hemisphere overlap region 1262 at an unknown height. This range of locations if further refined by adding candidate beacons and TDOA distances from additional sets, determining where the hemispheres of the beacons from the different sets intersect.
The hemisphere 1360r having the radius of candidate TDOA distance dr and the hemisphere 1360i having the radius of the candidate TDOA distance di overlap (1362ri). The hemisphere 1460n having the radius of candidate TDOA distance dn and the hemisphere 1360i having the radius of the candidate TDOA distance di overlap (1462ni). The hemisphere 1460n having the radius of candidate TDOA distance dn and the hemisphere 1360r having the radius of the candidate TDOA distance dr overlap (1462nr). All three hemispheres intersect at candidate location 1450.
In comparison, exploring the combination of Beacons E, I, and N (not illustrated), the hemisphere having the radius of the candidate TDOA distance de overlaps with the TDOA hemisphere 1360i around Beacon I, but does not overlap with the TDOA hemisphere 1460n around Beacon N. As one combination of candidate distance sets result in a candidate location 1450 whereas the other combination does not, the received acoustic pulse in the first candidate distance set 942a is determined to have originated from Beacon R, and the candidate location 1450 is determined to be the location of the listening device. As discussed above, based on application of rules, it had already been determined that the acoustic pulse in the second candidate distance set 942b originated from Beacon I and that the acoustic pulse from the third candidate distance set 942c originated from Beacon N.
Determining if and where the hemispheres in a combination of TDOA distances overlap may be determined based on algebraic geometry. This may be performed using a non-linear least squares solver, where each of the hemispheres in a combination is expressed as constrained equations using the spatial coordinates of each beacon and the candidate TDOA distance to that beacon. So for three candidate beacons, there are three sets of XYZ spatial coordinates (known beacon spatial coordinates), three radii (candidate TDOA distances), and one set of XYZ spatial coordinates to be solved for as a quadratic equation that corresponds to the spatial location of the candidate location 1450 where the hemispheres intersect. For verification, after solving for a combination, the output of the solver for that combination can be plugged back into the system of equations and should produce the three TDOA candidate distance values for that combination. If the result does not produce the three TDOA candidate distance values, the result is invalid. Residual error may also be calculated if the result is not exact.
In practice, the TDOA distance calculated to the beacon that was the actual origin of an acoustic pulse in a candidate set may not be accurate. In addition, if the listening device is in motion, that change in position introduces another source of inaccuracy between sets. As a result, the system may not always produce an “exact” solution, which is why a non-linear least squares solver has advantages, over conventional algebraic geometry. Specifically, non-linear least squares solvers refine parameters over multiple iterations to produce a result that is an optimized approximation, such that the solver is tolerant of errors in the data.
Each combination of beacons from the selected candidate distance sets (e.g., combinations from sets 942a to 942c) can be run through the solver. If a single exact solution is produced, that can be selected as the location 1450 of the listening device. However, if there is no exact solution, the solution producing the smallest error may be compared to a confidence threshold value. If the smallest error is less than the confidence threshold value, that combination may be selected as the solution. If the smallest error is greater than the confidence threshold value, another set of candidate distances (e.g., 942d) may be added so that each combination includes four candidate beacons, and the solver calculations run again. This process of adding additional candidate beacon sets continues until either an exact solution is found, or a solution is found with an error below the confidence threshold value.
As candidate distance sets are added, older candidate distance sets may be deleted to eliminate “stale” data. Data within a specific time window may be regarded as “fresh,” and older data falling outside the time window may be regarded as “stale.” The time window may be, for example, a set duration based on the maximum rated of speed of the listening device. The duration of the time window may also be determined dynamically based an approximate or maximum velocity of the listening device since the time the data was collected (based, for example, on inertial navigation data), since distance data will become stale faster as the speed of the listening device increases. A limit may also be set as to how many sets may be used to determine the listening device's location. If after several iterations of the solver (adding sets), no solution has been found, it may be because a TDOA distance in a set is not even close to correct. The process of discarding stale and excess data over time will eventually delete the set containing the corrupt data, such that the problem eventually self-corrects.
Another criteria for validating a solution may be based on a map of the installation. If geometrically, a solution is on the wrong side of a wall, that solution can be discarded. This determination may be based on both the outer perimeter of the installation/facility where the beacons are located, and information about the room(s) where the beacons in a combination are located. As noted above, the information included in each RF pulse may include a room identifier indicating what “room” or space the beacon is located within. If, for example, the beacons in a combination are all in Room 1, but a solution based on where the candidate hemispheres overlap is on the other side of a wall in Room 2, that answer (while perhaps geometrically correct based on the intersection of hemispheres) can be discarded. Likewise, the map may also define navigable areas where a listening device may be, and locations outside those areas may be discarded
A special case can occur when the height ZMicrophone of a listening device's microphone is known in the system's spatial coordinates, and after the listening device collects two candidate distance sets, a determination is made that there is only one candidate beacon in each set. Having one candidate beacon in a set can occur because there was only one RF pulse before an acoustic pulse or due culling of other candidates in the set by rule (e.g., as discussed with
If an RF pulse has not been detected and received (1514 “No”) or has been detected and received (1514 “Yes”) and conveyed beacon-specific information stored (1516), the listening device 120 determines (1518) whether an acoustic pulse has been detected and received. As noted above, if a duration of an acoustic pulse is less than a minimum duration, the acoustic pulse is identified as an echo, and/or the energy of the acoustic pulse falls below an acoustic detection filter threshold of the listening device, such an acoustic pulse is disregarded (i.e., results in 1518 “No”).
If no acoustic pulse has been received (1518 “No”), the process loops back to step 1514, continually repeating this loop until an acoustic pulse is received. If an acoustic pulse is received (1518 “Yes”), the time of arrival of the acoustic pulse is stored for the candidate set. The candidate set is output for rule-based culling (to block 1630 in
The candidate TDOA distance d may be calculated 1632 for an RF pulse in the candidate set based on the time difference of arrival with the set's acoustic pulse, as discussed in connection with Equation [2]. If the height of the of the device's microphone is known, then the distance dPlanar between the listening device and the candidate beacon may also be calculated based on Equation [4], but the process is illustrated to work in a system where the height of the microphone is unknown.
The candidate distance d for the candidate beacon is compared (1634) with a maximum distance limit of the acoustic cone of propagation (e.g., dCoP 1046 in
The candidate distance d may also be compared (1636) with a minimum distance threshold R2, and removed (1642) from the set if it is below that threshold. The distance threshold R2 is based on there being a minimum separation between the listening device and a beacon. For example if the height of the ceiling 216 is much higher than the highest position a microphone of a listening device under a Beacon is expected to ever be, the difference in ceiling height and that highest position may be used to set threshold R2. Among other things, this rule helps cull candidate beacons that are distant from the actual location of the listening device, where that beacon's RF pulse is received immediately before the acoustic pulse.
If the listening device knows its prior location (1638 “Yes”), the candidate distance d may also be compared (1640) with a sum of the distance the listening device was from the candidate beacon at the prior location (applying equation [5]) and the maximum possible distance the listening device might have travelled in the intervening time since it was at that prior location. If the candidate distance d from the beacon is greater than that sum (1640 “Yes”), the beacon can be removed (1642) from the set.
How the maximum possible distance a listening device might have travelled in the intervening time may be calculated in a variety of different ways. A value for the maximum possible distance may be based, for example, on a maximum rated speed of travel of the listening device (e.g., the top speed of an order fulfillment robot, forklift, etc.), where the maximum rated speed is a static value. If the listening device is a handheld device, the maximum possible distance may be based on the maximum rated speed of the fastest vehicle in the facility, the maximum speed of someone running, etc. If the listening device monitors its own speed and/or has inertial navigation capabilities (e.g., determining its own rate of motion based in part on accelerometer and/or gyroscope data), then the maximum possible distance may be based dynamically on motion data in the intervening time.
After all the culling rules are applied (e.g., 1634-1640) and/or a candidate beacon is removed (1642) from the set, a determination 1644 is made as to whether there are additional candidate beacons in the candidate set to check. If so (1644 “Yes”), the process repeats for the next RF pulse in the set (1646). Otherwise, the culled set is stored and output (1648) for application of triangulation techniques (to step 1750 in
In
As noted above, “stale” sets falling outside of a rolling time window TWindow may be deleted (1752). Excess sets may also be deleted in a first-in-first-out manner (e.g., keeping no more than six sets at a time). A determination (1754) is made as to whether there are at least a defined “M” number of stored culled sets. For conventional three-point triangulation, “M” will be three. If higher location accuracy is needed, a higher number may be selected (e.g., four or five). If the height of the microphone (ZMicrophone) is known for the listening device in the spatial coordinates of the system. then “M” may be two (providing for the special case where two candidate locations can be reduced to a single location using map data if one location appears in a wrong room, beyond a wall, etc.) If the minimum number of “fresh” sets is not available (1754 “No”), the process waits for a new set (returning to step 1750).
Otherwise (1754 “Yes”), the process generates a combination of beacons from the prioritized sets. For example, referring back to the discussion of
A determination (1758) is made as to whether any pair of beacons in the combination violates the triangle inequality based on the candidate distances to each beacon (based on Equation [2]) and the actual spatial distance between beacons (based on Equation [5]). Combinations that violate the triangle inequality may be cached so that the occurrence of the same pairings in other combinations may be used to eliminate those combinations from consideration without the need to check other pairing in the combination.
A determination (1760) as to whether the acoustic pulses from the beacons in a combination could potentially be received at a location based on a comparison of the room identifier information beacons may include in their RF pulses. If, for example, a beacon in a combination is located in a room that is not connected to the room where the other beacons in the combination are located, the combination may be discarded based on the lack of acoustic proximity. This situation may occur, for example, where two rooms are separated by a solid wall with no connecting passageway, and RF pulses are included in a combination from opposite sides of the wall, suggesting that one of the two RF pulses was received through the wall. As such, an assumption is made that the walls are sufficiently sound-dampening that an acoustic pulse cannot be heard through the solid wall. This means that one of the two beacons is not part of the solution. Data indicating whether there is acoustic proximity between rooms may be loaded into the listening devices with the mapping data, identifying which rooms are and are not proximate in terms of acoustic propagation. This acoustic proximity data may also be indexed by beacon.
If no violations of the triangle inequality are found (1758 “No”) and the room locations of the beacons does not eliminate the combination (1760 “Yes”), a determination (1762) is made as to whether there is a point where all of the TDOA distances from the beacons in the combination intersect. This determination (1762) may be made, for example, using a non-linear least squares solution solver, inputting the spatial coordinates for each beacon in the combination and the candidate distance d to each beacon, and receiving a location and an error value as output.
The error value corresponds to the degree of separation between these intersection points used to formulate the solution (e.g., mean deviation or standard deviation). For example, if there are beacons from four candidate data sets in a combination, the hemispheres from some beacons may intersect at a first point, and the hemispheres from some beacons may intersect at a second point. The spatial location output as the solution is a combination of these points (e.g., an average), with the error value indicating the deviation.
The error value produced by the non-linear least squares solver is compared (1764) to a confidence threshold value R3. If the error is greater than or equal to the threshold R3 (1764 “No”), the combination can be discarded, as it is not close enough to an exact solution that it is reliable as the location of the device. The confidence threshold value R3 is set based on how much error is tolerable in the location results, and may be set differently for different devices depending upon their role in the system.
The candidate location produced by the non-linear least squares solver may also be tested to determine (1766) whether it is a valid location based on map data. For example, if the candidate location occurs outside the installation or in a different room than the beacons in the set (e.g., due to the hemispheres intersecting beyond a wall) and/or outside defined navigable areas, then the location can be discarded (1766 “No”).
If the location is valid (1766 “Yes”) and the error is within the confidence threshold value R3, the location and its error value are stored (1768) in memory. After the location is stored or a combination is discarded, the process checks (1770) whether there are additional combinations to explore. If there are (1770 “Yes”), the combination analysis repeats for the next combination (1772). Otherwise, a determination (1774) is made as to whether there is at least one stored location. If there is not (1774 “No”) at least one stored location, this indicates that all of the combinations were discarded, the process loops back to wait for another culled set (step 1750). However, if there is at least one stored location (1774 “Yes”), then the stored candidate location having the smallest error is selected and output as the location of the listening device.
Various optimizations of this process may be added. For example, if a location produced by the solver (step 1762) has no error or a very small error (e.g., less than a value R4, where R4<<R3), such that it is approximately an “exact” solution, the process may output that location as the answer without exploring any further combinations.
A listening device may periodically or continually determine its location. Once a location is determined, the listening device may start over with a new set of candidate distances, or use one or more recent sets from a previous location determination to update location.
The speed of sound varies with temperature and humidity. As known in the art, these variable may be accounted for when determining the time difference of arrival.
Inter-beacon distances based on beacon spatial coordinates may be determined once and then stored in table to reduce the processing load on listening device. After determining the inclusion of certain beacons in a combination results in the discarding of the combination (e.g., due to violating the triangle inequality), the beacon pairings that result in the combination being invalid may be temporarily cached and used to eliminate other combinations.
The beacon 110 includes input/output device interfaces 1802. A variety of components may be connected through the input/output device interfaces 1802, including the acoustic transmitter 1812 (e.g., an ultrasonic transducer) and RF antenna(s) 1814. If the system 100 uses multiple frequencies of acoustic pulses, beacons may have multiple acoustic transmitters 1812 for different frequencies. Circuitry such as an RF transceiver and transducer driver are included in the I/O device interfaces 1802. A thermometer 1872 and a hygrometer 1874 may also be included so that the size of the acoustic cones of propagation used to determine cone overlap (e.g., 230) and the maximum time of flight of an acoustic pulse tToF can periodically be adjusted for changes to the acoustic propagation properties of the ambient environment due to changes in ambient temperature and humidity.
The beacon 110 may include an address/data bus 1824 for conveying data among components of the beacon 110. Each component within the beacon 110 may also be directly connected to other components in addition to (or instead of) being connected to other components across the bus 1824.
The beacon 110 may include one or more controllers/processors 1804, that may each include a central processing unit (CPU) for processing data and computer-readable instructions, and a memory 1806 for storing data and instructions. The memory 1806 may include volatile random access memory (RAM), non-volatile read only memory (ROM), non-volatile magnetoresistive (MRAM) and/or other types of memory. The beacon 110 may also include a data storage component 1808, for storing data and controller/processor-executable instructions (e.g., instructions to perform the algorithms and processes illustrated in
Computer instructions for operating the device 110 and its various components may be executed by the controller(s)/processor(s) 1804, using the memory 1806 as temporary “working” storage at runtime. The computer instructions may be stored in a non-transitory manner in non-volatile memory 1806, storage 1808, or an external device. Alternatively, some or all of the executable instructions may be embedded in hardware or firmware in addition to or instead of software.
The beacon 110 and/or the central scheduler/controller 1810 further include a scheduling module 1830 that controls beacon transmission scheduling. The scheduling module 1830 may be a component of a central scheduler/controller 1810 (that communicates scheduling information to the beacon 110 via a wireless communication channel), may be a component of each individual beacon 110, or distributed there between.
An RF synchronization clock 1832 maintains the RF synchronization signal 508. The timeout counter(s) 1833 are used to determine whether a beacon is timed out due to acoustic cone of propagation overlap, and also may be used when timing out for a fraction of an RF timeslot (836).
An RF pulse overlap detection engine 1834 and an RF carrier sensing and collision detection engine 1835 are used when the beacon is operating autonomously, as discussed in with
The overlap determination engine 1836 calculates, stores, and/or looks up the spatial distances between beacons, and uses these spatial distances to determine whether there is RF and acoustic cone overlap.
As part of a central scheduler/controller 1810 (e.g.,
Indexing and scheduling storage is used to maintain the index of beacon status used for scheduling, to store schedules received from a central scheduler/controller 1810, and/or to store beacon and system constants, such as beacon-specific information to be included in an RF pulse (e.g., a beacon's spatial coordinates, Beacon ID, room assignment, etc.), a system map indicating features such as room and installation boundaries in spatial coordinates, a table providing the radii of the acoustic cones of propagation and the maximum time of flight of an acoustic pulse tToF indexed by ambient temperature and pressure, etc.
The listening device 120 includes input/output device interfaces 1902. A variety of components may be connected through the input/output device interfaces 1902, including the microphone(s) 1912 and RF antenna(s) 1914. Circuitry such as an RF transceiver and microphone amplifier are included in the I/O device interfaces 1902. A thermometer 1972 and a hygrometer 1974 may also be included so that the velocity of the speed of sound (vSound in Equation [2]) and other propagation-related values (e.g., dCoP, rCoP, tTOF) can periodically be adjusted for changes to the acoustic propagation properties of the ambient environment due to changes in ambient temperature (based on thermometer data) and humidity (based on hygrometer data). An inertial measurement unit (IMU) (not illustrated) may also be included to collect information about movement of the listening device 120, including components such as a three-axis accelerometer, a three-axis gyroscope, a magnetometer, etc.
The listening device 120 may include an address/data bus 1924 for conveying data among components of the listening device 120. Each component within the listening device 120 may also be directly connected to other components in addition to (or instead of) being connected to other components across the bus 1924.
The listening device 120 may include one or more controllers/processors 1904, that may each include a central processing unit (CPU) for processing data and computer-readable instructions, and a memory 1906 for storing data and instructions. The memory 1906 may include volatile random access memory (RAM), non-volatile read only memory (ROM), non-volatile magnetoresistive (MRAM) and/or other types of memory. The listening device 120 may also include a data storage component 1908, for storing data and controller/processor-executable instructions (e.g., instructions to perform the algorithms and processes illustrated in
Computer instructions for operating the device 120 and its various components may be executed by the controller(s)/processor(s) 1904, using the memory 1906 as temporary “working” storage at runtime. The computer instructions may be stored in a non-transitory manner in non-volatile memory 1906, storage 1908, or an external device. Alternatively, some or all of the executable instructions may be embedded in hardware or firmware in addition to or instead of software.
The listening device 120 and/or the distributed processor 1920 further include a triangulation module 1930 that determines the position of the listening device 120. The triangulation module 1930 may be a component of the listening device 120, the distributed processor 1920 (that communicates with the listening device 120 via a wireless radio communication channel), or distributed across there between, such as in the example of the listening device 120 is a wearable computing device that connects to a more powerful computer for processing (i.e., distributed processor 1920).
The triangulation module 1930 may include an acoustic filter 1931 and an RF filter 1932. An acoustic pulse received via the microphone(s) 1916 may be input into the acoustic filter 1931, which applies a cutoff threshold to the acoustic pulse to classify the acoustic pulse as “detected” or not detected. Similarly, in a system where the range of an RF pulses from some beacons do not overlap the range of RF pulses from other beacons, an RF pulse received via the antenna(s) 1914 may be input into the RF filter 1931, which applies a cutoff threshold to classify the RF pulse as “detected” or not detected. An echo discrimination filter 1933 may process a received acoustic pulse (either before, after, or in parallel with the acoustic filter 1931) to differentiate between an acoustic pulse and the echoes (reflections) of the acoustic pulse.
A candidate set assembly engine 1934 performs the processes illustrated in and discussed in connection with
A heuristic set culling engine 1936 performs the processes illustrated in and discussed in connection with
The listening device 120 may also include an inertial navigation engine (not illustrated) that receives motion data from the IMU and determines a direction and speed of movement of the listening device 120. In addition or as an alternative to any stored maximum speed of the listening device 120, velocity data from the inertial navigation engine may be used to determine the maximum possible distance that the listening device 120 may have travelled (referring to step 1640 in
The concepts disclosed herein may be applied within a number of different devices and computer systems, including, for example, handheld computer devices, wearables, order-fulfillment robots, active “tags” attached to pallets, etc.
The above aspects of the present disclosure are meant to be illustrative. They were chosen to explain the principles and application of the disclosure and are not intended to be exhaustive or to limit the disclosure. Many modifications and variations of the disclosed aspects may be apparent to those of skill in the art. Persons having ordinary skill in the field of computers and TDOA navigation systems should recognize that components and process steps described herein may be interchangeable with other components or steps, or combinations of components or steps, and still achieve the benefits and advantages of the present disclosure. Moreover, it should be apparent to one skilled in the art, that the disclosure may be practiced without some or all of the specific details and steps disclosed herein.
Although the TDOA navigation system 100 has been described using ultrasonic/acoustic/audible pulses and RF pulses, the operational concepts will work for other pulse types so long as there is a measurable time difference of arrival between pulse types and the beacon information (e.g., beacon ID, coordinates, etc.) can be encoded and conveyed by one of the pulse types. For example, light (e.g., in the visible or RF spectra) may be used instead of RF, with the beacon-specific information encoded (e.g., using pulse-width modulation) in the light pulse. Moreover, the principles can be applied to other propagation media besides air, such as having underwater beacons emit an acoustic pulse together with an information-encoded pulse of blue-green light.
Aspects of the disclosed system may be implemented as a computer method or as an article of manufacture such as a memory device or non-transitory computer readable storage medium. The computer readable storage medium may be readable by a computer and may comprise instructions for causing a computer or other device to perform processes described in the present disclosure. The computer readable storage medium may be implemented by a volatile computer memory, non-volatile computer memory, hard drive, solid-state memory, flash drive, removable disk and/or other media. In addition, one or more engines of scheduling module 1830 or triangulation module 1930 may be implemented as firmware or as a state machine in hardware. For example, at least the scheduler 1837 may be implemented as a state machine by an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), or some combination thereof.
As used in this disclosure, the term “a” or “one” may include one or more items unless specifically stated otherwise. Further, the phrase “based on” is intended to mean “based at least in part on” unless specifically stated otherwise.
Entry |
---|
Gupta, et al. Low-complexity distributed scheduling algorithms for wireless networks. IEEE/ACM Transactions on Networking (TON) 17, No. 6 (2009): 1846-1859. |
Priyantha. The Cricket Indoor Location System. PhD diss., Massachusetts Institute of Technology, 2005. |
Priyantha, et al. The Cricket Indoor Location System. University Corporation for Atmospheric Research and National Center for Atmospheric Research. Earth Observing Laboratory. In-Situ Sounding Facility. Jan. 8, 2004. http://www.eol.ucar.edu/isf/facilities/isa/internal/CrossBow/PresentationOverheads/Day2—Sect14—Cricket.pdf. Downloaded on Dec. 18, 2014. |
Priyantha, et al. The Cricket Location-Support System. Proceedings of the 6th Annual International Conference on Mobile Computing and Networking, pp. 32-43. ACM, 2000. |
Smith, et al. Tracking Moving Devices with the Cricket Location System. Proceedings of the 2nd International Conference on Mobile systems, Applications, and Services, pp. 190-202. ACM, 2004. |