Content-based synchronization of similar data packets received by asynchronous wireless receivers
By synchronizing data packets based on their content using asynchronous receivers, the method addresses the challenges of synchronizing similar packets without a common clock, enhancing accuracy and reducing complexity and cost in wireless device location determination systems.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- A D KNIGHT LTD
- Filing Date
- 2022-05-11
- Publication Date
- 2026-05-19
AI Technical Summary
Existing location determination systems for wireless devices face challenges in accurately synchronizing similar data packets received by asynchronous receivers due to the lack of a common clock, leading to increased complexity, cost, and potential mixing of signals from different transmitters.
A method and system for synchronizing data packets based on their content, using asynchronous receivers that calculate identifiers (IDs) from the data packets, establish a common time base, and correlate similar packets, eliminating the need for synchronous receivers and reducing complexity and cost.
This approach enhances accuracy, reliability, and robustness of location determination by correlating data packets based on their content, reducing the need for costly synchronization equipment and infrastructure, and improving receiver deployment efficiency.
Smart Images

Figure 0007862442000001 
Figure 0007862442000002 
Figure 0007862442000003
Abstract
Description
Technical Field
[0001] Related Applications This application claims the benefit of priority of U.S. Provisional Patent Application No. 63 / 187,437, filed May 12, 2021, the entire contents of which are incorporated herein by reference.
Background Art
[0002] In some embodiments, the present invention relates to synchronizing data packets transmitted by a wireless transmitter, and more specifically, but not limited to, synchronizing similar data packets transmitted by a wireless transmitter that are received by a plurality of asynchronous receivers based on the content of the data packets.
[0003] As mobile-based technologies are rapidly and significantly advancing, the deployment of mobile devices is constantly increasing for a wide range of applications, services, systems, platforms, and / or infrastructures ranging from commercially oriented services to agricultural and environmental systems and military applications.
[0004] One such function of mobile-based services and systems relates to location determination, i.e., determining the location of a wireless device. To address this need, various technologies and algorithms have been developed to provide reliable location determination, positioning, and / or tracking solutions for mobile devices.
[0005] These solutions may include satellite-based services, such as a global positioning system (GPS) sensor that can be coupled to a mobile device. Other technologies, such as triangulation, can be based on deploying static receivers configured to receive wireless signals transmitted by a mobile device and aggregating the received data calculated for the received wireless signals to calculate the location of the wireless device.
[0006] Each localization technique inevitably brings its own advantages and limitations, to name just a few, in terms of accuracy, reliability, robustness, cost, and durability. [Overview of the project]
[0007] According to a first aspect of the present invention, a method is provided for synchronizing data packets received by a separate asynchronous receiver from a wireless transmitter, the method comprising using one or more processors, the use of which - Receiving asynchronously for each of each of several data packets transmitted by one or more radio transmitters over one or more radio transmission channels and received by a plurality of separate asynchronous receivers, wherein each of the plurality of IDs is associated with each received data calculated by one of the plurality of receivers. - Correlation between similar data packets received by at least some of multiple receivers based on ID, - Outputting the correlation IDs, combined with the associated received data, to one or more devices configured to jointly process the received data associated with at least a portion of the correlation IDs, This is for the purpose of doing so.
[0008] According to a second aspect of the present invention, a system is provided for synchronizing data packets received from a wireless transmitter by a separate asynchronous receiver, the system comprising one or more processors configured to execute code, the code is A code instruction that asynchronously receives a plurality of identifiers (IDs) for each of each of a plurality of data packets transmitted by one or more radio transmitters over one or more radio transmission channels and received by a plurality of separate asynchronous receivers, wherein each of the plurality of IDs is associated with each received data calculated by one of the plurality of receivers, - A code instruction that correlates similar data packets received by at least some of multiple receivers based on ID, - A code instruction that outputs the correlation ID combined with the associated received data to one or more devices configured to jointly process received data associated with at least a portion of the correlation ID, Includes.
[0009] In the first and / or further embodiments of the second, a similar correlated data packet corresponds to one or more data packets transmitted by one or more wireless transmitters, which are received by at least some of the receivers.
[0010] In the first and / or further embodiments of the second, the received data associated with each received data packet includes, at a minimum, the received signal strength indicator (RSSI) of each received data packet.
[0011] In the first and / or further embodiments of the second, each receiver is further configured to associate each received data packet with the time of arrival (TOA) of each data packet.
[0012] In the first and / or further embodiments of the second, the IDs of at least some of the data packets are temporally unique with respect to preceding and / or subsequent data packets transmitted by one or more wireless transmitters over a predetermined period of time.
[0013] In the first and / or further embodiments of the second, the ID of each of the multiple data packets is calculated based on at least a portion of each data packet.
[0014] In the first and / or further embodiments of the second, at least a portion of each data packet includes one or more fields of each data packet as defined by one or more communication protocols used to transmit each data packet over one or more radio transmission channels.
[0015] In the first and / or further embodiments of the second, the ID of the data packet is further calculated based on one or more network parameters of one or more radio transmission channels.
[0016] In the first and / or further embodiments of the second, the ID of a data packet is further calculated based on the device IDs of one or more wireless transmitters extracted from one or more of the data packets in order to associate one or more data packets with one or more wireless transmitters.
[0017] In the first and / or further embodiments of the second, the IDs of at least some of a plurality of data packets are calculated using one or more arbitrary-length content mapping functions applied to at least some of each data packet, wherein one or more arbitrary-length content mapping functions are part of a group consisting of hash functions, cryptographic hash functions, and CRC functions.
[0018] In the form of an optional embodiment of the first and / or second embodiment, a common time base is established among the multiple receivers based on the reception times of at least some of the correlated data packets.
[0019] In the first and / or further embodiments of the second, at least a portion of the data packets are correlated based on a common time base.
[0020] In the first and / or further embodiments of the second, at least some of the receivers are synchronized based on a common time base.
[0021] In an alternative embodiment of the first aspect and / or the second aspect, a common sampling time base is established for at least a portion of the plurality of receivers based on the common time base, and the common sampling time base defines the sampling time for each of the plurality of wireless transmission channels used by at least one wireless transmitter to transmit a plurality of data packets.
[0022] In a further embodiment of the first aspect and / or the second aspect, one or more devices include an integrated unit of a composite receiver including a plurality of receivers, and the integrated unit is configured to aggregate received data associated with a correlation ID to generate converted received data.
[0023] In a further embodiment of the first aspect and / or the second aspect, one or more devices include a locator system configured to calculate the position of one or more wireless transmitters with respect to at least some of the receivers based on the received data associated with the correlation ID.
[0024] In a further embodiment of the first aspect and / or the second aspect, the position calculated for one or more wireless transmitters is a relative position with respect to at least some of the receivers.
[0025] In a further embodiment of the first aspect and / or the second aspect, the position calculated for one or more wireless transmitters is an absolute position calculated based on a predetermined position of at least some of the receivers.
[0026] In an alternative embodiment of the first aspect and / or the second aspect, one or more of the plurality of receivers are calibrated according to a known position of the wireless transmitter.
[0027] Other systems, methods, features, and / or advantages of the present disclosure will be or become apparent to those of ordinary skill in the art upon examination of the following drawings and detailed description of the invention. All such additional systems, methods, features, and advantages are intended to be included within this description and protected by the accompanying claims.
[0028] Unless otherwise defined, all technical and / or scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Although methods and materials similar or equivalent to those described herein can be used in the practice or testing of the present invention, exemplary methods and / or materials are described below. In case of conflict, the present patent specification, including definitions, will control. In addition, the materials, methods, and examples are illustrative only and not intended to be limiting.
[0029] Embodiments of the methods and / or systems of the present invention may include automatically performing or completing selected tasks. Additionally, depending on the actual instrumentation and equipment of embodiments of the methods and / or systems of the present invention, some selected tasks may be implemented using an operating system, hardware, software, firmware, or a combination thereof.
[0030] For example, hardware for performing a task selected according to an embodiment of the present invention may be implemented as a chip or circuit. As software, a task selected according to an embodiment of the present invention may be implemented as a set of software instructions executed by a computer using any suitable operating system. In exemplary embodiments of the present invention, one or more tasks according to exemplary embodiments of the methods and / or systems described herein are performed by a data processor, such as a computing platform, for executing a set of instructions. Optionally, the data processor includes volatile memory for storing instructions and / or data, and / or non-volatile storage for storing instructions and / or data, such as a magnetic hard disk and / or removable media. Optionally, network connectivity is also provided. A display and / or user input devices such as a keyboard or mouse are also optionally provided.
[0031] In this specification, several embodiments of the present invention are described with reference to the accompanying drawings as merely examples. It is important to emphasize here, with particular detail, that the matters shown are for the purpose of providing a useful reference to the embodiments of the present invention. In this regard, the description with reference to the drawings will make it clear to those skilled in the art how embodiments of the present invention may be put into practice. [Brief explanation of the drawing]
[0032] [Figure 1] Referring here to the drawings, we have a schematic diagram of an exemplary system according to several embodiments of the present invention for synchronizing data packets transmitted by a wireless transmitter and received by multiple asynchronous receivers based on the content of the data packets. [Figure 2] This is a flowchart of an exemplary process performed according to some embodiments of the present invention to generate received data for received data packets transmitted by a wireless transmitter and to synchronize similar data packets based on the content of the data packets. [Figure 3A] This is a schematic diagram of an exemplary data packet structure used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets, according to some embodiments of the present invention. [Figure 3B] This is a schematic diagram of an exemplary data packet structure used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets, according to some embodiments of the present invention. [Figure 4A] This is a schematic diagram illustrating an exemplary reception event sequence of data packets transmitted by a wireless transmitter according to some embodiments of the present invention. [Figure 4B] This is a schematic diagram illustrating an exemplary reception event sequence of data packets transmitted by a wireless transmitter according to some embodiments of the present invention. [Figure 4C] This is a schematic diagram illustrating an exemplary reception event sequence of data packets transmitted by a wireless transmitter according to some embodiments of the present invention. [Figure 5] This is a schematic diagram correlating exemplary event streams generated by multiple asynchronous receivers for data packets transmitted by a wireless transmitter, according to some embodiments of the present invention. [Figure 6] This is a schematic diagram of an exemplary composite receiver constructed from a plurality of asynchronous receivers and an integration unit configured to correlate similar data packets transmitted by a wireless transmitter, which are received by at least some of the receivers, according to some embodiments of the present invention. [Modes for carrying out the invention]
[0033] In some embodiments, the present invention relates to synchronizing data packets transmitted by a wireless transmitter, and more specifically, to synchronizing similar data packets transmitted by a wireless transmitter that are received by multiple asynchronous receivers based on the content of the data packets, without limitation.
[0034] The location of a wireless transmission device can be determined by deploying multiple separate receivers at different locations to receive the wireless signals transmitted by the wireless transmitter, and then calculating the position of the wireless transmitter based on the received wireless signals.
[0035] A wireless transmitter may transmit wireless signals via one or more wireless transmission channels employing one or more wireless transmission technologies, such as cellular transmission, wireless local area network (LAN) transmission (e.g., Wi-Fi), Bluetooth transmission, radio frequency (RF) transmission, and / or similar transmission technologies utilizing one or more frequency bands known in the art.
[0036] Each receiver may be configured to calculate received data for each radio signal, specifically for each data packet carried (modulated, encoded, etc.) by the radio signal transmitted by one of the radio transmitters intercepted by each receiver. The received data, such as the signal strength, angle of arrival (AOA), time of arrival (TOA), and / or similar received signal strength indicators (RSSI) received by the receiver, may be calculated, derived, and / or determined using one or more methods, architectures, and / or embodiments known in the art.
[0037] The position of a radio transmitter can be calculated based on the received radio signal using one or more radio localization methods, techniques, and / or algorithms known in the art, such as triangulation and / or similar methods obtained based on received data calculated for the received radio signal.
[0038] Since the position of a radio transmitter is calculated based on the difference in reception of radio signals (e.g., RSSI, AOA, etc.) at multiple different receivers, the reception difference between receivers should be related to similar radio signals, i.e., signals corresponding to the same radio signal transmitted by the radio transmitter.
[0039] Correlation between similar radio signals is particularly important and, in practice, essential for determining the location of a mobile radio transmitter in operation. This is because, due to the dynamic nature of the mobile radio transmitter's location, each set of similar radio signals corresponds to a specific radio signal transmitted by the transmitter while it was located at a specific location at a particular time. Without proper correlation, signals received by different receivers may correspond to different radio signals transmitted by the transmitter at different times while it was located at different locations.
[0040] According to some embodiments of the present invention, methods, systems, and computer program products are provided for synchronizing and correlating similar radio signals transmitted by a wireless transmitter and received by a plurality of asynchronous receivers that do not share a synchronized clock.
[0041] Specifically, similar data packets carried (modulated, encoded, encapsulated) by radio signals corresponding to one or more identical data packets transmitted by a wireless transmitter can be correlated (synchronized) based on the content of the data packets.
[0042] As previously mentioned, a radio signal transmitted by a radio transmitter is received by multiple receivers, which then carry (modulate, encode, etc.) data packets that can be correlated together based on their content. However, for the sake of brevity, the terms “radio signal” and “data packet” may be used interchangeably throughout this disclosure. For example, a reference to the content of a radio signal may actually refer to the content of a data packet carried by the radio signal. In another example, the reception time of a data packet may actually refer to the reception time of the radio signal carrying the data packet.
[0043] Typically, the content of most data packets transmitted by a wireless transmitter is temporally unique in comparison to the content of preceding and / or succeeding data packets for at least a certain period, e.g., 10, 15, 20 packets and / or similar packets.
[0044] Each asynchronous receiver, which may include one or more antennas configured to receive radio transmission signals transmitted in one or more frequency bands, may further be configured to decode at least partially the data carried by the received radio signal. For example, each receiver may identify at least the raw data bits of a data packet encoded in the received radio signal. However, the receiver may further be configured to divide the raw bits of the data packet into bytes and meaningful fields according to one or more known network protocols and / or communication protocols, specifically according to one or more communication protocols employed by the radio transmitter. Such data packet division may typically involve identifying at least the header and payload of the data packet, including the data fields of the data packet, e.g., source, destination, packet size, packet type, payload description information, and / or similar.
[0045] Therefore, each receiver that receives data packets carried by radio signals transmitted by a radio transmitter may calculate the received data for each received data packet, for example, RSSI, AOA, and / or similar, and may further associate each received data packet with its respective received data. The receiver may further associate each received data packet with its respective reception time, for example, the time of arrival (TOA) indicating the time of reception of each data packet by each receiver.
[0046] Each receiver may further calculate the identifier (ID) of each received data packet based on the content of each data packet and / or part of that data packet, for example, based on payload data, one or more headers, fields, and / or similar as defined by one or more network protocols and / or communication protocols used to transmit each data packet and / or similar. For example, if only low bits are supported, the ID of each received data packet may be calculated based on the low bits of each received data packet and / or part of it. In another example, assuming that the receiver is able to decode the network in the encoding of the network protocols and / or communication protocols, the ID of each received data packet may be calculated based on the values of one or more data fields of each received data packet.
[0047] Furthermore, the receiver may calculate and / or generate IDs for one or more received data packets by applying one or more content mapping functions of arbitrary length, such as cryptographic hash functions, hash functions, cyclic redundancy check (CRC) functions, and / or similar functions, to at least a portion of the content of each data packet.
[0048] Optionally, the ID can also be calculated based on one or more network parameters that indicate the radio transmission channel used by the originating radio transmitter to transmit the data packet.
[0049] Optionally, the ID can also be calculated based on the device ID identified in the received data packet, which indicates the originating wireless transmitter.
[0050] Next, each receiver may transmit the received data calculated for each data packet, along with the ID calculated for each combined received data packet, to one or more synchronization units, such as an integration unit.
[0051] Since most data packets transmitted by wireless transmitters are typically time-unique for at least a specific period, the IDs of these data packets can also be time-unique for at least a specific period.
[0052] Therefore, although data packets are received by multiple different receivers, similar data packets corresponding to the same data packet transmitted by a wireless transmitter can be correlated and synchronized by a synchronization unit based on their IDs; that is, data packets with the same ID can be considered similar data packets and, consequently, correlated together.
[0053] Optionally, the synchronization unit may establish a common time base among at least some of the receivers of multiple receivers based on correlated data packets. Receiving IDs from the receivers, the synchronization unit may determine the reception time of each data packet received at each receiver in order to identify the time difference between the receivers. Thus, the synchronization unit may map each received data packet to the common time base according to the time difference identified for each receiver that received each data packet. Therefore, the common time base may be established based on the timing of reception events at multiple receivers.
[0054] Furthermore, a synchronization unit can correlate one or more similar data packets according to a common time base. For example, data packets received by different receivers may thus be received by the synchronization unit at different times. However, if such data packets are mapped simultaneously to a common time base, these data packets may appear similar. This is because they correspond to the same data packets transmitted by the wireless transmitter at a particular time, and therefore can be correlated together.
[0055] Furthermore, the synchronization unit may establish a common sampling time base for at least some of the receivers based on a common time base. The common sampling time base may define the sampling time and, optionally, the order in which multiple radio transmission channels used by the radio transmitter to transmit data packets are sampled.
[0056] Next, the synchronization unit may output the correlation ID, combined with the associated received data, to one or more devices, systems, services, and / or similar configured to jointly process the received data associated with at least a portion of the correlation ID for one or more applications.
[0057] One such primary application is to calculate and / or determine the location of a radio transmitter based on received data of correlation IDs calculated for similar data packets by multiple separate and asynchronous receivers that receive similar correlated data packets.
[0058] According to some embodiments of the present invention, at least a portion of the receivers used to determine the location of a radio transmitter may be calibrated according to the known location of one or more radio transmitters. The known location of a radio transmitter may be determined, provided, and / or otherwise obtained using one or more other tracking, positioning, and / or location systems, services, platforms, and / or infrastructure, for example, using the Global Positioning System (GPS), map-based services, and / or similar. In particular, the calibration of the receiver may be performed by comparing the received data or converted received data with an expectation of the received data that should be received from the known location of the radio transmitter, or by calculating that location and comparing that location with the known location.
[0059] Another application that could benefit from jointly processing received data associated with at least some of the correlation IDs is instructed to calculate transformed received data based on the received data associated with the correlation IDs. For example, one or more composite receivers may be constructed from multiple asynchronous receivers that do not share a common clock.
[0060] Each receiver may be connected to one or more antennas of the receiver and configured to receive data packets transmitted by one or more wireless transmitters and generate corresponding received data. The receiver may further calculate an ID for each received data packet based on the content of the data packets as described above herein, and associate the calculated received data for each received data packet with the ID of each packet.
[0061] The composite receiver may further include an integration unit configured to correlate similar data packets received by different asynchronous receivers based on their ID in order to calculate the direction of transmission (AOA) and / or similar of the received data packets, for example, by aggregating the received data associated with similar data packets that are correlated, in order to calculate the converted received data.
[0062] Converted received data received from one or more composite receivers can be further correlated based on IDs calculated for similar data packets, and can be used, for example, to calculate the location of a wireless transmitter.
[0063] Correlating similar data packets received by an asynchronous receiver based on the content of the received data packet can offer significant advantages and benefits compared to existing systems and methods for synchronizing similar radio signals transmitted by radio transmitters.
[0064] Firstly, if parts of an existing system do not rely much on synchronous receivers, similar data packets received by different synchronous receivers can be correlated based on their reception timing. Such synchronization of receivers can present significant limitations. One such limitation is the need to use high-end receivers with advanced clock circuits and / or timing mechanisms that support external synchronization. Such high-end receivers are more complex, more expensive, have a higher failure rate, and / or may have similar characteristics. Furthermore, using receivers from different vendors that can support different clock synchronization specifications and / or protocols can be limiting and / or significantly complex, and can increase the cost of receiver deployment. In addition, distributing synchronous clocks between receivers that can be significantly far apart from each other may require a large wiring and cabling infrastructure, which in turn further increases the cost and / or complexity of receiver deployment.
[0065] On the other hand, content-based correlation of similar data packets can be performed using asynchronous receivers, thus completely eliminating the need for any synchronization equipment, infrastructure, and / or similar, which can be highly complex and / or costly, and consequently significantly reducing the complexity and / or cost of receiver deployment. Furthermore, since there is no need to synchronize the receivers, the cost of the receivers is further reduced by the option to use simple, low-end receivers from different vendors.
[0066] Furthermore, even when receivers are synchronized as required by existing methods, at least some of the receivers may, at a given time, receive data packets originating from different, necessarily unrelated radio transmitters for applications such as radio transmitter geolocation, thereby improving the received data of data packets transmitted by radio transmitters and / or similar devices. On the other hand, by correlating data packets based on their content, there is no longer any concern about mixing data packets originating from different radio transmitters. This is because the correlation is content-based rather than time-based, and the content of packets transmitted from different radio transmitters can be inherently different.
[0067] Furthermore, by correlating data packets based on an ID calculated based on the network parameters of the wireless transmission channel used by the wireless transmitter, the probability of mixing data packets received from different wireless transmission channels is reduced, and in some cases, they can be excluded, thus increasing the accuracy, reliability, and / or robustness of similar data packet correlations. Moreover, by calculating based on the device ID of the wireless transmitter and correlating data packets based on those IDs, the probability of mixing data packets transmitted from different wireless transmitters can be reduced, and in some cases, they can be excluded, thus further improving the accuracy, reliability, and / or robustness of similar data packet correlations.
[0068] Furthermore, by using arbitrary-length content mapping capabilities, such as cryptographic hash functions, hash functions, CRC, and / or other such functions to compute IDs, the size of IDs can be significantly reduced, and therefore the computing resources required for ID transmission, ID storage, matching IDs to represent similar data packets, and / or similar, such as processing resources, processing time, storage resources, network resources, and / or similar, can be significantly reduced.
[0069] Whenever successful correlation of similar data packets occurs, a common time base can be established, adjusted, and updated, and used to correlate other data packets that may not contain time-specific data content, thereby further improving the accuracy, reliability, and / or robustness of the correlation. In particular, this may enable the correlation of similar data packets based on reception timing as done by existing methods, while achieving this correlation without requiring complex and / or costly synchronous receivers. Rather, the common clock base can be maintained and updated according to the content-based correlation of time-specific data packets, while the common clock base can be used for time-based correlation of data packets that are not time-specific with respect to preceding and / or succeeding data packets.
[0070] Establishing a common sampling time base can significantly improve the efficiency, reliability, and / or robustness of content-based correlation of similar data packets. This can be particularly advantageous when a receiver may be configured to monitor multiple radio transmission channels used for transmitting data packets. In such a scenario, different receivers may sample different radio transmission channels at different times, which can make it impossible to correlate similar data packets with each other. By commanding each receiver to a specific sampling time and, optionally, a sampling order (reception of data packets) synchronized with the sampling times of other receivers, a synchronization unit can ensure that multiple receivers, and possibly all receivers, are synchronized to the sampling time of the same radio transmission channel.
[0071] Calibrating receivers based on the known locations of wireless transmitters can significantly reduce the complex and / or costly calibration operations required for calibrating receivers as may be required by existing methods. One or more simple wireless transmitters may be deployed to transmit data packets that can be received by receivers and correlated together. Based on correlation data and received data calculated by each receiver for the correlated data packets, the receivers can be easily and simply calibrated. Furthermore, one or more existing services, systems, and / or platforms may be used for calibration, for example, one or more managed all-vehicle systems where each vehicle is equipped with a GPS sensor for recording and reporting its location and capable of transmitting wireless signals that can be received by receivers.
[0072] Before describing in detail at least one embodiment of the present invention, it should be understood that the present invention is not necessarily limited in its application to the structural details and arrangement of components and / or methods described in the following description and / or shown in the drawings and / or examples. Other embodiments of the present invention are possible, or it can be practiced or implemented in various ways.
[0073] As will be understood by those skilled in the art, aspects of the present invention may be embodied as systems, methods, or computer program products. Accordingly, aspects of the present invention may take the form of hardware embodiments as a whole, software embodiments as a whole (including firmware, resident software, microcode, etc.), or embodiments that combine software and hardware embodiments, all of which may generally be referred to herein as “circuits,” “modules,” or “systems.” Furthermore, aspects of the present invention may take the form of computer program products embodied in one or more computer-readable media in which computer-readable program code is embodied.
[0074] Any combination of one or more computer-readable media may be used. A computer-readable storage medium may be a tangible device capable of holding and storing instructions used by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination thereof. A non-exclusive list of more specific examples of computer-readable storage media includes, but are not limited to, portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable program read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital multipurpose disks (DVDs), memory sticks, floppy disks, mechanical encoding devices such as punched cards or raised structures in grooves having instructions stored therein, and any suitable combination thereof. Computer-readable storage media used herein should not be interpreted as primary signals such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., optical pulses through fiber optic cables), or electrical signals transmitted through communication lines.
[0075] Computer program code, including computer-readable program instructions embodied in a computer-readable medium, may be transmitted using any suitable medium, including, but not limited to, wireless, wired, fiber optic cables, RF, or any suitable combination thereof.
[0076] The computer-readable program instructions described herein can be downloaded to each computing / processing device from a computer-readable storage medium, or downloaded to an external computer or external storage device via a network, such as the Internet, a local area network, a wide area network, and / or a wireless network. The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in a computer-readable storage medium within each computing / processing device.
[0077] Computer-readable program instructions for performing the operation of the present invention may be written in any combination of one or more programming languages, and the programming languages include, for example, source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or object-oriented programming languages such as Smalltalk, C++, or similar languages, and conventional procedural programming languages such as the "C" programming language or similar languages.
[0078] Computer-readable program instructions can be executed entirely on a user's computer, partially on a user's computer, partially on a user's computer as a standalone software package, partially on a remote computer, or entirely on a remote computer or server. In later scenarios, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or wide area network (WAN), or it may be connected to an external computer (for example, via the Internet using an Internet service provider). In some embodiments, electronic circuits, including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions by utilizing state information of computer-readable program instructions to personalize the electronic circuit in order to perform aspects of the present invention.
[0079] Aspects of the present invention will be described herein with reference to flowcharts and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present invention. It will be understood that each block in the flowcharts and / or block diagrams, as well as combinations of blocks in the flowcharts and / or block diagrams, can be implemented by computer-readable program instructions.
[0080] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible embodiments of the system, method, and computer program product according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagram may represent a module, segment, or part of an instruction, which contains one or more executable instructions for performing a specified logical function. In some alternative embodiments, the functions represented by the blocks may occur in a different order than those shown in the figures. For example, two blocks shown consecutively may actually be executed substantially simultaneously, or blocks may sometimes be executed in reverse order depending on the related functions. It should also be noted that each block in the block diagram and / or flowchart diagram, as well as combinations of blocks in the block diagram and / or flowchart diagram, can be implemented by a dedicated hardware-based system that performs a specified function or action, or executes a combination of dedicated hardware and computer instructions.
[0081] Figure 1, with reference to the drawing, is a schematic diagram of an exemplary system according to several embodiments of the present invention for synchronizing data packets transmitted by a wireless transmitter and received by multiple asynchronous receivers based on the content of the data packets.
[0082] A synchronization system 100, for example, a server, computing node, cluster of computing nodes, device, apparatus, and / or similar, may be configured to synchronize data packets carried (modulated, encoded, encapsulated, etc.) by radio signals transmitted by one or more radio transmitters 102, which are then received by at least some of a plurality of separate asynchronous receivers 1004, for example, by at least two separate receivers 104 located in different locations.
[0083] A wireless transmitter 102 having one or more wireless interfaces for transmitting wireless signals over one or more wireless transmission channels may transmit wireless signals using one or more frequency bands known in the art, in accordance with one or more wireless transmission technologies, such as cellular transmission, wireless local area network (LAN) transmission (e.g., Wi-Fi), Bluetooth transmission, radio frequency (RF) transmission, and / or similar transmissions. Data carried by the wireless signals transmitted by the wireless transmitter 102, for example, data packets, may be encoded and / or encapsulated in accordance with one or more communication protocols known in the art, such as GSM, CDMA, LTE, WiMAX, IEEE 802.11, and / or similar standards.
[0084] One or more of the wireless transmitters 102 may be stationary devices located in a fixed position, but the wireless transmitters 102 may further include mobile wireless devices that are at least temporarily in operation and / or stationary. Such wireless transmitters 102 may include, for example, mobile devices used by one or more users, such as telephones, tablets, wearable devices (e.g., watches, goggles, tags, etc.). In another example, the wireless transmitters 102 may include one or more vehicle devices, which may be incorporated into, mounted on, attached to, and / or otherwise coupled to one or more manual vehicles and / or at least partially autonomous vehicles, such as cars, trucks, motorcycles, bicycles, trains, trams, drones, unmanned aerial vehicles (UAVs), and / or similar.
[0085] Each of the receivers 104 may include one or more antennas for intercepting radio transmission signals transmitted in one or more frequency bands, and thus may be capable of receiving (intercepting) radio transmission signals from the frequency spectrum. In particular, each of the receivers 104 may be configured to receive data packets carried by radio signals transmitted by one or more radio transmitters 102.
[0086] The receiver 104 may further be configured to decrypt the data contained in the data packet, at least in low-bit format. Optionally, the receiver 104 may be able to split the low bits of the data packet into bytes and meaningful fields according to one or more network protocols and / or communication protocols employed by the wireless transmitter 102. Such splitting of the data packet may typically involve identifying at least the header and payload of the data packet. The header typically includes data fields defined by the communication protocol, such as information related to each data packet, e.g., source (origin node), destination (target node), packet size, packet type, payload information description, and / or similar. The payload may contain data. The data in one or more payloads of a data packet may optionally be encrypted, and in some cases, one or more payloads of a data packet may be empty.
[0087] Each of the receivers 104 may be configured to calculate received data for each received radio signal, specifically for each received data packet transmitted by one of the radio transmitters 102. The received data calculated by the receiver 104 for each received data packet may include, for example, RSSI, angle of arrival (AOA), and / or similar.
[0088] Each of the receivers 104 may apply one or more methods, architectures, and / or embodiments known in the art to calculate, derive, and / or determine the received data. For example, one or more receivers 104 including multiple antennas may calculate the received data for each data packet based on the received parameters (e.g., time, angle, RSSI, etc.) of each of the multiple antennas, which are correlated based on the timing of the receiver 104, as known in the art. Each receiving unit may be connected to one of the multiple antennas of the receiver 104 and may be configured to calculate the respective received data for each received radio signal, specifically for each received data packet carried by the received radio signal. An integrating unit of the receiver 104 may collect and aggregate the received data calculated by the multiple receiving units to calculate the converted received data for each received data packet, for example, with respect to the direction of the originating radio transmitter 102 that transmitted the received radio signal and / or similar.
[0089] Each of the receivers 104 may typically operate based on a local clock, such as a timing mechanism, clock circuit, counter unit, and / or similar, which may be further used to calculate the TOA of the received data and / or a portion thereof, for example, one or more data packets received by each receiver 104.
[0090] However, while each of the receivers 104 may contain a local clock, multiple separate receivers 104 are asynchronous with one another, meaning that a common clock is not shared among the receivers 104 to synchronize their local clocks. Therefore, mechanisms, infrastructure (e.g., beacons, wires, cables, etc.), protocols, and / or similar may be deployed to synchronize, share, distribute, and / or otherwise establish a common clock among the receivers 104.
[0091] Optionally, the location of the receiver 104, for example, its geolocation, is predefined and known to the synchronization system 100.
[0092] The synchronization system 100 may include an input / output (I / O) interface 110 for connecting to and communicating with the receiver 104, a processor 112, and storage for storing data and code (program store).
[0093] The I / O interface 110 may include one or more wired and / or wireless network interfaces for communicating with the receiver 104, such as a local area network (LAN) interface, a wide area network (WAN) interface, a wireless LAN (WLAN) interface, a cellular interface, a controller area network (CAN) bus interface, and / or similar interfaces. The I / O interface 110 may further include one or more wired and / or wireless interconnection communication interfaces, which may employ network topologies, point-to-point topologies, and / or similar topologies, such as serial ports (e.g., RS-232, RS-422, RS-485, etc.), universal serial bus (USB) ports, RF communication channels, dedicated interconnections, etc.
[0094] Therefore, the synchronization system 100 can communicate with the receiver 104v via the I / O interface 210. The communication link connecting the synchronization system 100 to the receiver 104 may employ one or more technologies, topologies, and / or protocols. For example, the I / O interface 110 may connect to one or more networks that can connect to all of the receivers 104, such as a LAN network, a WLAN network, and / or similar networks. In another exemplary deployment, the receiver 104 may be divided into groups, each connected to one of the multiple networks to which the I / O interface 110 is connected, thereby allowing the synchronization system 100 to communicate with the receivers 104 via multiple networks. In another exemplary deployment, the synchronization system 100 may communicate with one or more of the receivers 104 via a dedicated communication channel established between the synchronization system 100 and each of the receivers 104 via the I / O interface 110, such as a serial communication channel, an RF communication channel, and / or similar channels.
[0095] The storage 114 may include one or more processing nodes arranged for parallel processing as a cluster and / or as one or more multi-core processors, either homogeneous or heterogeneous. The storage 114 may include one or more non-temporary, non-volatile persistent memory devices and / or arrays, e.g., ROM, flash arrays, hard drives, solid-state drives (SSDs), magnetic disks, and / or similar for data and / or program storage. The storage 114 may also include one or more volatile memory devices and / or arrays, e.g., RAM devices, cache memory, and / or similar for temporary storage of data and / or program storage. The storage 114 may optionally include one or more networked storage resources accessible via the I / O interface 110, e.g., storage servers, network-attached storage (NAS), and / or similar.
[0096] The processor 112 may execute one or more software modules, such as processes, scripts, applications, agents, utilities, tools, operating systems (OS), drivers, plugins, patches, updates, and / or similar, each of which is stored in a non-temporary medium (program store) such as storage 114 and includes multiple program instructions executed by one or more processors, including the processor 112. The processor 112 may further include, integrate, utilize, and / or facilitate, one or more hardware modules (elements) integrated and / or coupled to the synchronization system 100. Examples of hardware modules include circuits, components, integrated circuits (ICs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), digital signal processors (DSPs), advanced encryption standards (AES) engines, and / or similar.
[0097] Therefore, the processor 112 may execute a packet synchronizer 120 that is utilized by one or more functional modules, such as one or more software modules, one or more hardware modules, and / or a combination thereof.
[0098] The synchronization system 100 may be a separate and independent entity from the receivers 104, such as a server, computing node, cluster of computing nodes, and / or similar connected to multiple receivers 104, but the synchronization system 100 may optionally be integrated into one or more of the receivers 104 so that each of the receivers 104 runs a packet synchronizer 120.
[0099] Optionally, the synchronization system 100, specifically the packet synchronizer 120, may be implemented as one or more cloud-based computing services, platforms, and / or infrastructures, such as Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), and / or similar, such as Amazon Web Services (AWS), Google Cloud, Microsoft Azure, and / or similar.
[0100] Figure 2 is a flowchart of an exemplary process performed according to several embodiments of the present invention to generate received data for received data packets transmitted by a wireless transmitter and to synchronize similar data packets based on the content of the data packets.
[0101] An exemplary process 200 may be performed by at least one of the receivers 104, in particular by a receiver 104 that receives data packets transmitted by one or more radio transmitters 102 via one or more radio transmission channels. Each of such receivers 104 may perform its own process (instance) 200 to calculate received data for each received data packet and transmit the received data and associated (combined) received data packets to the synchronization unit 100.
[0102] An exemplary process 210 may be performed, for example, by a packet synchronizer 120 performed by a synchronization system 100, which receives data packets received by receivers 104 and correlates similar data packets, i.e., data packets transmitted by a particular wireless transmitter 102 and received by multiple receivers 104. In particular, the packet synchronizer 120 may synchronize data packets by correlating similar data packets based on the content of the data packets, which may be unique for at least a predetermined period, such as a period of several seconds (e.g., 3 seconds, 4 seconds, 5 seconds, etc.) and / or a period of several thousand cycles which can be translated into similar lengths.
[0103] For simplicity, processes 200 and 210 are presented for synchronizing data packets transmitted by a single radio transmitter 102 by correlating similar data packets transmitted by the radio transmitter 102 and received by at least some of the receivers 104. However, this should not be interpreted as limiting, for processes 200 and 210 can be extended to synchronize data packets transmitted by multiple radio transmitters 102 by correlating similar data packets transmitted by multiple radio transmitters 102 and received by the receivers 104.
[0104] As shown in 202, the process 200, which may be performed by multiple receivers 104, begins with each receiver 104 receiving one or more data packets transmitted by the radio transmitter 102 via one or more radio transmission channels.
[0105] Inevitably, process 200 can only be initiated and executed by a receiver 104 capable of receiving radio signals transmitted by the radio transmitter 102, specifically, only by an operational receiver 104 within the range of the transmission channel used by the radio transmitter 102 to transmit radio signals carrying data packets.
[0106] The reception of each data packet transmitted by the wireless transmitter 102 can be considered a reception event. Typically, since the wireless transmitter 102 may transmit multiple data packets, the receiver 104 may create a sequence of reception events associated with or corresponding to each of the received data packets transmitted by the wireless transmitter 102.
[0107] When one or more receivers 104 receive data packets transmitted from multiple wireless transmitters 102, the sequence of reception events generated by each receiver 104 may include reception events corresponding to the data packets transmitted from the multiple wireless transmitters 102 that originated from it.
[0108] Each of the receivers 104 may further assign a reception time (timestamp) to each reception event indicating the reception time of each data packet. Based on its local clock, the receiver 104 may calculate, derive, and / or generate the reception time for each received data packet.
[0109] As shown in step 204, each of the receivers 104 may calculate the received data for each received data packet transmitted from the wireless transmitter 102, i.e., for each received event.
[0110] The received data calculated by receiver 104 may include, at a minimum, the RSSI of each received data packet, in particular, the RSSI indicating the signal strength at the receiver of the received radio transmission signal carrying each received data packet.
[0111] However, the received data calculated by one or more receivers 104 for one or more received data packets may further include one or more additional received parameters associated with each received data packet. For example, additional received parameters calculated for one or more of the received data packets (received events) may include the AOA of each data packet received by the antenna array of each receiver 104, in particular the AOA of the received radio transmission signal carrying each data packet. In another example, additional received parameters calculated by one or more receivers 104 for one or more received data packets may include a timestamp, for example, the TOA of each received data packet. Receiver 104 may calculate a TOA known in the art, for example, according to the signal rising edge of the first bit of each data packet. In yet another example, additional received parameters calculated by one or more receivers 104 for one or more received data packets may include the type and / or technology of the transmission channel employed to transmit each received data packet, for example, cellular, Wi-Fi, Bluetooth, and / or similar.
[0112] As shown in step 206, each of the receivers 104 may further calculate an identifier (ID) for each received data packet based on the content of each data packet, or based on at least a portion of the content of each data packet.
[0113] Receiver 104 may apply one or more techniques, methods, and / or algorithms to calculate an ID for each received data packet. However, although different techniques, methods, and / or algorithms may be applied to calculate the data packet ID, all receivers 104 must follow the same technique, method, and / or algorithm for calculating the ID in order to ensure consistency and the ability to correlate similar IDs later.
[0114] For example, suppose one or more of the receivers 104 are unaware of the communication protocol used to encapsulate one or more data packets. In such a case, it may be impossible for at least some of the receivers 104 to parse these data packets, so all of the receivers 104 can therefore calculate an ID for each data packet based on the low bits of each data packet and / or part thereof. For example, a receiver 104 can calculate an ID for a data packet based on the entire bitstream identified in each data packet. In another example, a receiver 104 can calculate an ID for a data packet based on one or more predetermined segments of the low bitstream (bit sequence) identified in each data packet, for example, a predetermined number of initial bits counted from the beginning of each data packet.
[0115] In another example, if the receiver 104 is configured and capable of recognizing one or more network protocols and / or communication protocols used to encode and / or encapsulate one or more data packets, the receiver 104 may calculate an ID for each recognized data packet based on one or more data fields of each data packet defined by each communication protocol used to transmit each data packet over the radio transmission channel.
[0116] Multiple data packets transmitted by a particular wireless transmitter 102 may typically have different contents from one another. Differences in the contents of data packets may arise from different data contained in the data packets or different parameters in their headers.
[0117] Since the content of each data packet transmitted by the transmission device 102 may differ at least slightly (e.g., by 1 bit) from its preceding and / or succeeding data packets, the ID calculated based on the content of each data packet may be temporally unique with respect to the preceding and / or succeeding data packets, at least for a predetermined period of time.
[0118] Optionally, receiver 104 may calculate one or more IDs of data packets based on one or more network parameters of the wireless transmission channel, for example, the WLAN (e.g., Wi-Fi) on which each data packet is received. Network parameters, which may include, for example, a network ID, unique network radio characteristics (UNRC), service set identifier (SSID), network type, network channel, network subchannel, and / or similar, can uniquely identify each wireless transmission channel relative to other wireless transmission channels. Since one or more receivers 104 may receive data packets transmitted over different simultaneous wireless transmission channels, calculating IDs based on network parameters can help further distinguish data packets received from different wireless transmission channels. For example, two wireless networks (e.g., Wi-Fi) using the same transmission channel may have at least partially overlapping coverage areas, thereby allowing one or more receivers 104 to occasionally receive one or more packets transmitted over the first wireless network and one or more packets transmitted over the second wireless network. In such cases, by correlating data packets based on network parameters, it is possible to ensure that correlated packets originate from the same transmitter 102 via the same wireless network.
[0119] Optionally, the receiver 104 may calculate one or more IDs of data packets based on the device ID of the wireless transmitter 102 that transmitted each data packet, such as the media access controller (MAC) address of the wireless transmitter 102, the S / N of the wireless transmitter 102, and / or similar. Since one or more receivers 104 may optionally receive data packets transmitted from multiple different wireless transmitters 102 over the same wireless transmission channel (network), calculating IDs based on device IDs may help further distinguish data packets originating from different wireless transmitters 102.
[0120] Referring now to Figures 3A and 3B, it can be seen that these are schematic diagrams of exemplary data packet structures used to calculate an identifier (ID) for each received data packet in order to correlate similar data packets according to some embodiments of the present invention.
[0121] As shown in Figure 3A, a Wi-Fi MAC frame for encapsulating data packets in a frame, as is known in the prior art, may consist of a header, a frame body, and a frame check sequence (FCS). The header holds information about the frame, the frame body carries the data to be transmitted, and the FCS is calculated for the header and the frame body. The combined binary content of one or more data fields defined by the header may be used to calculate the ID of each data packet (frame), which may be sufficiently unique to other data packets for at least a given period of time. This is because, with a very high probability, the value of this field may not be repeated (recurrence) in subsequent data packets. For example, using the values of the "To Destination System (DS)" field, the "From DS" field, the "Address 1|" field, and the FCS field, a sufficiently unique ID that may be temporally unique for at least a given period of time can be calculated. One or more data fields, specifically those contributing to the uniqueness of each data packet, may be used, for example, by receiver 104 to calculate a unique ID for each data packet.
[0122] As shown in Figure 3B, a Wi-Fi period / ID field known in the art can be constructed from a period value, an association identifier (AID) value, and several reserved values. Since the period value may differ for each data packet transmitted during a predetermined period, the ID of each data packet, which can be calculated based on the period value, can be sufficiently unique for each data packet for at least the predetermined period, i.e., it can be temporally unique for at least the predetermined period. In addition, one or more of these data fields may also be used by the receiver 104 to calculate a unique ID for each data packet, for example.
[0123] Optionally, receiver 104 may apply one or more arbitrary-length content mapping functions, such as cryptographic hash functions, hash functions, CRC functions, and / or similar functions, to calculate an ID for each data packet. This may be done to reduce the size of the IDs calculated for one or more data packets, and thus reduce computing resources, such as processing resources, storage resources, and / or network resources required to transmit, store, and / or process the IDs of the data packets. Receiver 104 may calculate the ID for each data packet by applying an arbitrary-length content mapping function to all the content of each data packet. However, receiver 104 may also calculate the ID for each data packet by applying an arbitrary-length content mapping function to only a portion of the data packet, such as one or more fields, data payload, and / or similar. For example, receiver 104 may calculate an ID for each data packet by applying a hash function to calculate a hash value based on at least a portion of the content of each data packet, such as the data payload, data payload and source address fields, and / or similar. Furthermore, the receiver 104 may utilize one or more hardware modules, such as an AES encryption engine using a known encryption key, to generate hash values that serve as IDs for one or more data packets. This can be particularly advantageous for modern CPUs that include AES acceleration hardware, which can reduce computation time, computing resources, and / or power consumption.
[0124] Therefore, in order to associate each data packet with its respective received data, the reception event created by each receiver 104 for each received data packet may include the respective ID calculated for the received data packet, the received data calculated by each receiver 104 for each data packet, and optionally the reception time for each data packet.
[0125] Referring here to Figures 4A, 4B, and 4C, it can be seen that these are schematic diagrams of exemplary received event sequences of data packets transmitted by a wireless transmitter according to several embodiments of the present invention.
[0126] As shown in Figure 4A, one or more data packets may be carried by a radio transmission signal transmitted by a radio transmitter such as radio transmitter 102. Each data packet may be encoded according to one or more protocols and / or encoding schemes, so that each data packet may be represented as a low-bit stream (bit sequence). Furthermore, each data packet may typically contain one or more data fields defined by the network protocol and / or communication protocol applied by radio transmission 102 to transmit the data packet over the radio transmission channel. For example, each data packet may have a header and a data payload. The header and / or payload may further contain one or more data fields, e.g., source address (origin node), destination address (target node), packet size, packet type, payload information description, and / or similar. The payload, which may contain data, may optionally be encrypted, and in some cases, one or more data payloads of a data packet may be empty.
[0127] The reception of each data packet by each receiver, such as receiver 104, can be defined as its respective reception event E402. For example, at t1, receiver 104 may receive a first data packet D1 and calculate an identifier ID1 for the received data packet D1. Receiver 104 may generate a first reception event E1·402-1 that associates the received data packet D1, specifically identifier ID1, with each received data R1, for example, RSSI. Receiver 104 may further assign the reception time (timestamp) T1 to a reception event E1·402-1 that indicates the reception time of data packet D1, for example, t1. In another example, at t2, receiver 104 may receive a second data packet D2 and calculate an identifier ID2 for the received data packet D2. Receiver 104 may generate a second reception event E2·402-2 that associates the received data packet D2, specifically identifier ID2, with each received data R2. The receiver 104 may further assign the reception time T2 to a reception event E1·402-1 indicating the reception time of data packet D2, for example, t2. In another example, at t3, the receiver 104 may receive a third data packet D3 and calculate an identifier ID3 for the received data packet D3. The receiver 104 may generate a third reception event E3·402-3 that associates the received data packet D3, specifically identifier ID3, with each received data R3. The receiver 104 may further assign the reception time (timestamp) T3 to a reception event E3·402-3 indicating the reception time of data packet D3, for example, t3.
[0128] As shown in Figure 4B, for multiple received data packets transmitted by the wireless transmitter 102, the exemplary received event sequence 404 generated by the receiver 104 may include multiple received events 402, for example, a first received event E1·402-1, a second received event E2·402-2, a third received event E3·402-3, a fourth received event E4·402-4, an nth received event E(n)402-n, and so on.
[0129] Therefore, each received event E(i) that associates each received data packet with its respective received data may include an identifier ID calculated for each data packet D received by receiver 104, each received data R calculated by receiver 104 for each data packet D, and optionally the reception time T of each data packet D. For example, a received event E1·402-1 may include an identifier ID1 calculated for data packet D1, received data R1 associated with data packet D1, and the reception time T1 of data packet D1; a received event E2·402-2 may include an identifier ID2 calculated for data packet D2, received data R2 associated with data packet D2, and the reception time T2 of data packet D2; a received event E3·402-3 may include an identifier ID3 calculated for data packet D3, received data R3 associated with data packet D3, and the reception time T3 of data packet D3; a received event E4·402-4 may include an identifier ID4 calculated for data packet D4, received data R4 associated with data packet D4, and the reception time T4 of data packet D4; and a received event E(n)402-n may include an identifier IDn calculated for data packet Dn, received data Rn associated with data packet Dn, and the reception time Tn of data packet Dn.
[0130] As shown in Figure 4C, another exemplary receive event sequence 404-2 may be generated by a particular receiver 104 for multiple received data packets transmitted by multiple radio transmitters 102, for example, two radio transmitters 102A and 102B. Thus, the receive event sequence 404-2 may include multiple receive events 402 corresponding to data packets originating from radio transmitters 102A and / or radio transmitters 102B. For example, the first receive event E1_A402-1_A, the second receive event E2_A402-2_A, and the third receive event E3_A402-3_A may correspond to the first, second, and third received data packets, respectively, each originating from radio transmitter 102A. Furthermore, the first reception event E1_A402-1_B, the second reception event E2_B402-2_B, and the third reception event E3_B402-3_B may correspond to the first, second, and third received data packets, respectively, and these received data packets are each transmitted from the wireless transmitter 102A.
[0131] Therefore, the first reception event E1_A402-1_A may include the identifier ID1_A calculated for each first data packet D1_A, the received data R1_A calculated for data packet D1_A, and the reception time T1_A of data packet D1_A at a particular receiver 104. The second reception event E2_A402-2_A may include the identifier ID2_A calculated for each second data packet D2_A, the received data R2_A calculated for data packet D2_A, and the reception time T2_A of data packet D2_A at a particular receiver 104. The third reception event E3_A402-3_A may include the identifier ID3_A calculated for each third data packet D3_A, the received data R3_A calculated for data packet D3_A, and the reception time T3_A of data packet D3_A at a particular receiver 104.
[0132] Similarly, the first reception event E2_B402-1_B may include the identifier ID1_B calculated for the first data packet D1_B, the received data R1_B calculated for the data packet D1_B, and the reception time T1_B of the data packet D1_B at a particular receiver 104. The second reception event E2_B402-2_B may include the identifier ID2_B calculated for each second data packet D2_B, the received data R2_B calculated for the data packet D2_B, and the reception time T2_B of the data packet D2_B at a particular receiver 104. The third reception event E3_B402-3_B may include the identifier ID3_B calculated for each third data packet D3_B, the received data R3_B calculated for the data packet D3_B, and the reception time T3_B of the data packet D3_B at a particular receiver 104.
[0133] Refer to Figure 2 again.
[0134] As shown in 208, each of the receivers 104 may transmit an ID calculated for a received data packet to the synchronization system 100, specifically to the packet synchronizer 120. In particular, each of the receivers 104 may transmit to the packet synchronizer 120 each receive event generated for each data packet received from one of the radio transmitters 102, each receive event may include an ID calculated for each data packet, the received data calculated for each data packet, and optionally the reception time for each data packet. Since each of the receivers 104 may receive multiple data packets from the radio transmitters 102, the receivers 104 may actually transmit an event sequence containing multiple receive events to the packet synchronizer 120.
[0135] As described herein, the receiver 104 may communicate with the packet synchronizer 120 via the I / O interface 110, or via one or more wired and / or wireless communication channels and / or communication networks deployed and / or established to connect the receiver 104 and the synchronization system 100.
[0136] As shown in 212, process 210 is performed, for example, by a packet synchronizer 120 performed by a synchronization system 100, and begins with the packet synchronizer 120 receiving IDs calculated for data packets received by the receiver 104 from the wireless transmitter 102. Each of the received data packets calculated by the packet synchronizer 120 for each received data packet may be associated with received data calculated by each of the receiving units 104 for each received data packet.
[0137] In particular, the packet synchronizer 120 can receive from each receiver 104 an event sequence generated by each receiver 104 for data packets received by each receiver 104 from the wireless transmitter 102. As previously stated herein, the received event sequence generated by each receiver 104 may include the respective ID calculated for each data packet, the received data calculated by each receiver 104 for each data packet, and optionally the reception time of each data packet at each receiver 104.
[0138] Since the separate receivers 104 can be asynchronous with each other, the packet synchronizer 120 can asynchronously receive multiple reception event sequences from multiple different receivers 104.
[0139] As shown in 214, the packet synchronizer 120 can synchronize received data packets, specifically by correlating received events among similar data packets received by different receivers 104 based on an ID calculated for the data packet.
[0140] Similar data packets are data packets that correspond to the same data packet transmitted by the wireless transmitter 102 and received by at least some of the receivers 104. This means that a particular data packet transmitted by the wireless transmitter 102 and received by multiple receivers 104 can generate multiple similar data packets for each one received by each of the receivers 104. Note that there can be multiple sets of similar data packets, each set corresponding to one of the multiple data packets transmitted by the wireless transmitter 102. For example, a first data packet transmitted by the wireless transmitter 102 may be received by multiple receivers 104, thereby forming a first set of similar data packets corresponding to the first data packet. A second data packet transmitted by the wireless transmitter 102 may also be received by multiple receivers 104, thereby forming a second set of similar data packets corresponding to the second data packet.
[0141] However, since the receivers 104 are asynchronous with each other and also with the synchronization system 100, data packets received by receiver 104 that correspond to the same data packets transmitted by wireless transmitter 102 can be received asynchronously from receiver 104 by packet synchronizer 120.
[0142] Therefore, the packet synchronizer 120 can use the ID calculated for the received data packet to correlate similar data packets corresponding to the same data packet transmitted by the wireless transmitter 102, and thus synchronize at least some of the similar data packets together. Since the ID is time-unique for at least a predetermined period, the packet synchronizer 120 can successfully correlate similar data packets together.
[0143] In particular, the packet synchronizer 120 can synchronize similar data packets by comparing the IDs of data packets and correlating them with data packets that have the same ID value. Since each ID is calculated based on the content of each data packet, data packets having the same content and therefore the same ID can correspond to the same data packet transmitted by the wireless transmitter 102 and can be correlated together.
[0144] Referring now to Figure 5, it can be seen that this is a schematic diagram correlating exemplary event streams generated by multiple asynchronous receivers for data packets transmitted by a wireless transmitter, according to some embodiments of the present invention.
[0145] As can be seen, a packet synchronizer such as packet synchronizer 120 may receive three event streams 404, in particular event stream 404(i) received from receiver 104(i), event stream 404(j) received from receiver 104(j), and event stream 404(k) received from receiver 104(k). As previously stated herein, event stream 404(i) may include a plurality of events Ex_(i)402-x(i) (x=1,2,3,...) corresponding to data packets received by receiver 104(i), event stream 404(j) may include a plurality of events Ex_(j)402-x(j) corresponding to data packets received by receiver 104(j), and event stream 404(k) may include a plurality of events Ex_(k)402-x(k) corresponding to data packets received by receiver 104(k).
[0146] As can be seen, each event stream 404 contains only the events corresponding to the data packets actually received (intercepted) by each receiver 104. Therefore, if a particular receiver 104 does not receive a particular data packet, that particular receiver 104 may not generate the respective receive event for that particular data packet, and such receive events may obviously not be transmitted to the packet synchronizer 120. For example, seven data packets D(x) to D(x+6) may be transmitted by a wireless transmitter such as the wireless transmitter 102, but receiver 104(i) may receive only five of the seven data packets, for example, receiving data packets D(x), D(x+1), D(x+3), D(x+5), and D(x+6), while failing to receive data packets D(x+2) and D(x+4). In another example, receiver 104(j) may receive only five of the seven data packets, for example, data packets D(x+1), D(x+2), D(x+3), D(x+5), and D(x+6), but not data packets D(x) and D(x+4). In yet another example, receiver 104(k) may receive six of the seven data packets, for example, data packets D(x), D(x+1), D(x+3), D(x+4), D(x+5), and D(x+6), but not data packet D(x+2).
[0147] Therefore, the event stream 404(i) received from receiver 104(i) may include event E1(i)402-1(i) containing ID1(i) calculated for data packet x and each received data R1(i); event E2(i)402-2(i) containing ID2(i) calculated for data packet D(x+1) and each received data R2(i); event E3(i)402-3(i) containing ID3(i) calculated for data packet D(x+3) and each received data R3(i); event E4(i)402-4(i) containing ID4(i) calculated for data packet D(x+5) and each received data R4(i); event E5(i)402-5(i) containing ID5(i) calculated for data packet D(x+6) and each received data R5(i), and so on.
[0148] The event stream 404(j) received from receiver 104(j) may include event E1(j)402-1(j) containing ID1(j) calculated for data packet D(x+1) and each received data R1(j); event E2(j)402-2(j) containing ID2(j) calculated for data packet D(x+2) and each received data R2(j); event E3(j)402-3(j) containing ID3(j) calculated for data packet D(x+3) and each received data R3(j); event E4(j)402-4(j) containing ID4(j) calculated for data packet D(x+5) and each received data R4(j); event E5(j)402-5(j) containing ID5(j) calculated for data packet D(x+6) and each received data R5(j), and so on.
[0149] The event stream 404(k) received from receiver 104(k) includes event E1(k)402-1(k) containing ID1(k) calculated for data packet D(x+1) and each received data R1(k), event E2(k)402-2(k) containing ID2(k) calculated for data packet D(x+1) and each received data R2(k), and event E3(k) containing ID3(k) calculated for data packet D(x+3) and each received data R3(k). This may include events such as 3(k)402-4(k), event E4(k)402-4(k) which includes ID4(k) calculated for data packet D(x+4) and each received data R4(k), event E5(k)402-5(k) which includes ID5(k) calculated for data packet D(x+5) and each received data R5(k), and event E6(k)402-6(k) which includes ID6(k) calculated for data packet D(x+6) and each received data R5(k).
[0150] As is clear, since receivers 104(i), 104(j), and / or 104(k) may be asynchronous with respect to each other, event streams 404(i), 404(j), and 404(k) may be temporally shifted with respect to each other. Furthermore, each of receivers 104(i), 104(j), and / or 104(k) may not receive one or more data packets transmitted by the wireless transmitter 102.
[0151] However, despite the time shift between the receiver 104 and potential missing data packets in one or more of the receivers 104, the packet synchronizer 120 can correlate similar data packets based on their content, particularly based on the ID of the data packet which is calculated based on at least a portion of the content of the data packet.
[0152] For example, packet synchronizer 120 can identify that ID2(i) is equal to ID1(j) and ID2(k). This is because ID1(j) and ID2(k) are all calculated for the same data packet D(x), and therefore event E2(i)402-2(i) can be correlated with event E1(j)402-1(j) and E2(k)402-2(k). In another example, packet synchronizer 120 can identify that ID3(i) is equal to ID3(j) and ID3(k). This is because ID3(j) and ID3(k) are all calculated for the same data packet D(x+3), and therefore event E3(i)402-3(i) can be correlated with event E3(j)402-1(j) and E3(k)402-3(k). In another example, packet synchronizer 120 may identify that ID4(i) is equal to ID4(j) and ID5(k). This is because ID4(j) and ID5(k) are all calculated for the same data packet D(x+5), and event E4(i)402-4(i) can be correlated with event E4(j)402-4(j) and E5(k)402-5(k). In yet another example, packet synchronizer 120 may identify that ID5(i) is equal to ID5(j) and ID6(k). This is because ID5(j) and ID6(k) are all calculated for the same data packet D(x+6), and event E5(i)402-5(i) can be correlated with event E5(j)402-5(j) and E6(k)402-6(k).
[0153] The packet synchronizer 120 can correlate similar packets received by all three receivers 104(i), 104(j), and 104(k), and optionally, it can correlate similar packets received by only two of the receivers 104(i), 104(j), and 104(k). For example, suppose a data packet D(x) is received by receivers 104(i) and 104(k), while receiver 104(j) does not receive it. In such a case, the packet synchronizer 120 can identify that ID1(i) is equal to ID1(k), and can correlate event E1(i)402-1(i) with event E1(k)402-1(k).
[0154] As is clear, since receivers 104(i), 104(j), and 104(k) may not be able to receive one or more different data packets, the events Ex(i), Ex(j), and Ex(k) may be shifted relative to each other, for example, in their indices. For example, since receiver 104(i) does not receive data packets D(x+2) and D(x+4), receiver 104(j) does not receive data packets D(x) and D(x+4), and receiver 104(k) does not receive data packet D(x+2), the events Ex(i), Ex(j), and Ex(k) calculated for the data packets received by receivers 104(i), 104(j), and 104(k) are each shifted relative to each other, for example, and have shifted indices.
[0155] However, since the correlation is performed according to the ID of the data packet calculated based on the content of the data packet, the packet synchronizer 120 can easily recover from such lost and / or index-shifted events and continue the correlation of subsequent sets of similar data packets represented by similar events. For example, as described above herein, the packet synchronizer 120 can identify that ID2(i) is equal to ID1(j) and ID2(k), and can correlate event E2(i)402-2(i) with events E1(j)402-1(j) and E2(k)402-2(k).
[0156] Refer to Figure 2 again.
[0157] Optionally, the packet synchronizer 120 establishes a common time base among at least some of the multiple receivers 104 based on the reception times of the correlated data packets.
[0158] For example, as described above in this specification, each of the receivers 104 may assign a reception time to each reception event corresponding to the reception of a particular data packet, where the reception time represents the reception time of each data packet by each receiver 104. The packet synchronizer 120 may analyze the reception times assigned to correlated data packets, that is, it may analyze correlated reception events by different receivers 104 and establish a common time base according to the reception times of the different receivers 104.
[0159] The packet synchronizer 120 may apply one or more techniques and / or embodiments to establish a common time base. For example, the packet synchronizer 120 may establish a common time base based on timing information received in a received event from one of the selected receivers 104. In another example, the packet synchronizer 120 may establish a common time base based on the local timing mechanism (e.g., clock) of the synchronization system 100.
[0160] After correlating similar reception events received from at least some of the receivers 104, the packet synchronizer 120 can calculate the time shift between the reception times of the correlated reception events corresponding to similar data packets received by at least some different receivers 104, and appropriately identify each of the relative shifts in at least some of the different receivers 104 with respect to a common time base. For example, suppose the packet synchronizer 120 has correlated reception events received from a first receiver 104, a second receiver 104, and a third receiver 104. Furthermore, assuming that the correlated reception events received from the first receiver 104 are assigned by the first receiver 104 with a reception time shifted by +1 clock (period) compared to the common time base, then the correlated reception events received from the second receiver 104 may be assigned by the second receiver 104 with a reception time shifted by +2 clocks compared to the common time base, and the correlated reception events received from the third receiver 104 may be assigned by the third receiver 104 with a reception time shifted by -1 clock compared to the common time base. In such a case, the packet synchronizer 120 can determine that the clock of the first receiver 104 is one clock cycle ahead of the clock of the second receiver 104 and two clock cycles behind the clock of the third receiver 104.
[0161] Furthermore, once the received events corresponding to similar data packets are successfully correlated based on IDs calculated based on the content of similar data packets (step 216), the packet synchronizer 120 can appropriately update and / or adjust the common time base.
[0162] Optionally, after a common time base is established, the packet synchronizer 120 may correlate received events received from different receivers 104 according to (based on) the common time base. For example, according to the common time base, the packet synchronizer 120 may determine that a received event received from the first receiver 104 is one clock cycle earlier than a data packet received from the second receiver 104. In such a case, the packet synchronizer 120 may correlate one or more received events received from the first receiver 104 with each received event received from the second receiver 104 one clock cycle later.
[0163] Correlating received events based on a common time base can significantly improve the performance and / or accuracy of content-based correlation. This is because the packet synchronizer 120 may only need to analyze a significantly small number of received events from the first and second receivers 104 that are temporally close to each other, as derived based on a time difference between the two receivers 104, for example, a clock time difference. Furthermore, by analyzing only a significantly small number of received events from the first and second receivers 104 that are determined to be temporally close based on a common time base, and thus potentially correlated, the computing resources consumed by the packet synchronizer 120 can be significantly reduced.
[0164] Furthermore, correlating data packets based on received events, and consequently on a common time base, may be particularly beneficial for similar data packets transmitted by the wireless transmitter 102 that have content that is not sufficiently unique compared to the content of preceding and / or subsequent data packets transmitted by the wireless transmitter 102. Since the content of these insufficiently unique subsequent data packets is remarkably similar, and in some cases identical, the IDs calculated for these subsequent insufficiently unique data packets may also be identical and / or remarkably identical. Because subsequent data packets (events) may have the same ID, the packet synchronizer 120 may be unable to distinguish consecutive received events with indistinguishable IDs received from the receiver 104, and consequently, may be unable to correlate them based on ID (content). However, in such cases, the packet synchronizer 120 may correlate data packets received from different receivers 104 based on a common time base, specifically, based on the relative shift of the clock associated with the events received from each of the receivers 104, compared to a common time base.
[0165] According to some embodiments of the present invention, the packet synchronizer 120 may further establish a common sampling time base for at least some of the receivers among the plurality of receivers 104 based on a common time base. The common sampling time base may define the sampling time and, optionally, the order in which each of the plurality of radio transmission channels used by one or more radio transmitters 102 to transmit a plurality of data packets is sampled.
[0166] One or more receivers 104 may be configured to monitor and sample multiple radio transmission channels. Multiple radio transmission channels may include, for example, multiple different channels, e.g., multiple different networks (e.g., Wi-Fi, cellular, etc.) to which one or more of the radio transmitters 102 are connected. In another example, multiple radio transmission channels may include multiple subchannels and / or frequency bands that constitute one or more multi-channel communication channels (links). Wi-Fi is one such exemplary multi-channel communication channel, for example, constructed from 16 subchannels that can be used to transmit data between peers. Another example of a multi-channel communication channel is Frequency Division Multiple Access (FDMA), which includes multiple frequency bands that can be allocated for use (communication) by one or more users.
[0167] Therefore, each of the receivers 104 configured to monitor multiple radio transmission channels may, for example, scan the multiple radio transmission channels periodically, continuously, and / or similarly, according to its local clock, and sample, i.e., intercept and / or receive, data packets transmitted through the sampled radio transmission channels at sampling time.
[0168] However, since the receivers 104 are asynchronous with respect to each other, they can also be asynchronous with respect to the sampling time of each of the multiple transmission channels. Therefore, at least some of the receivers 104 may be monitoring (scanning) different radio transmission channels at the same time, which can result in a situation where very few, and possibly none, data packets are received by multiple receivers 104 via the same radio transmission channel. This lack of synchronization can, naturally, lead to the identification of very few similar data packets, which can significantly reduce the efficiency, reliability, and / or robustness of the content-based correlation and synchronization of data packets performed by the packet synchronizer 120. This limitation may inevitably depend on the number of different radio transmission channels sampled by the receivers 104, and the limitation may increase as the number of sampled channels increases.
[0169] To overcome sampling synchronization limitations, the packet synchronizer 120 may establish a common sampling time base that can define the time for sampling each of the multiple radio transmission channels. In particular, the packet synchronizer 120 may establish a common sampling time base based on a common time established for the multiple receivers 104. The packet synchronizer 120 may then instruct one or more of the receivers 104 to sample the multiple radio transmission channels according to the common sampling time base, specifically according to the deviation of each receiver 104 from the common time base.
[0170] The sampling order of multiple radio transmission channels may also be essential for properly synchronizing the sampling of multiple receivers 104. In some embodiments, the sampling order may be predefined and applied to the receivers 104. However, in some embodiments, the packet synchronizer 120 may further instruct the receivers to sample the multiple radio transmission channels according to a common sampling order (scheme) that is predefined and / or can be dynamically adjusted, adapted, and / or modified.
[0171] Therefore, using a common sampling time base to instruct one or more receivers 104 to sample a specific radio transmission channel at a specific sampling time, the packet synchronizer 120 can coordinately synchronize the sampling of multiple radio transmission channels by at least some of the multiple receivers 104. By synchronizing the receivers 104 to scan, monitor, and receive data packets over the same radio transmission channel, the number of similar data packets received by the multiple receivers 104 can be greatly increased, and the efficiency, reliability, and / or robustness of the packet synchronizer 120 can be greatly improved when synchronizing and correlating similar data packets based on their content.
[0172] For example, based on a common sampling base, the packet synchronizer 120 assumes that the sampling time of a particular radio transmission channel by the first receiver 104 is two clock cycles earlier than the sampling time of a particular radio transmission channel by the second receiver 104. In such a case, the packet synchronizer 120 may establish a common sampling time base, for example, according to the clock of the first receiver 104, and simultaneously instruct the second receiver 104 to sample a particular radio transmission channel while the first receiver 104 is sampling that particular radio transmission channel.
[0173] Furthermore, after a common time base is established, the packet synchronizer 120 can synchronize multiple receivers 104 according to (based on) the common time base. As previously stated herein, each receiver 104 may use its own local clock, which is asynchronous with respect to the others. Thus, by using a common time base, the packet synchronizer 120 can synchronize at least some of the receivers 104. Specifically, rather than actually synchronizing the receivers 104 with respect to each other, the packet synchronizer 120 can synchronize data, i.e., synchronize received data calculated for one or more received events that indicate the reception time of a received data packet, received from an asynchronous receiver 104.
[0174] As shown in step 216, the packet synchronizer 120 may output correlation IDs, coupled with associated received data and optionally their reception times, to one or more devices, for example, to processing units, devices, systems, servers, cloud-based services, and / or platforms, and / or similar, configured to process received data associated with at least some of the correlation IDs for one or more applications.
[0175] In particular, the device may be configured to jointly process incoming data associated with at least some of the correlation IDs, meaning that multiple incoming datasets associated with at least some of the correlation IDs may be processed, applied, and / or used together for one or more applications.
[0176] The packet synchronizer 120 may output output data, namely correlation IDs and their associated received data, via one or more interfaces provided by the I / O interface 110. For example, the packet synchronizer 120 may transmit output data to one or more remote devices via one or more network interfaces of the I / O interface 110. In another example, the packet synchronizer 120 may transmit output data to one or more devices connected to one or more interconnection ports of the I / O interface 110.
[0177] In some embodiments, the packet synchronizer 120 may perform a process 210 in real time to correlate and synchronize data packets transmitted by the radio transmitter 102, which are received by at least a portion of the receivers 104. However, according to some embodiments, the received events received from the receivers 104, including the ID of the received data packet associated with each received data, may be stored in, for example, the storage 114 in the synchronization system 100. At any point later, the packet synchronizer 120 may restore, fetch, and / or retrieve the stored received events offline, i.e., retrospectively, and correlate them with received events corresponding to similar packets based on their IDs.
[0178] According to some embodiments of the present invention, the device for receiving received data associated with correlation IDs includes an integrated unit of a composite receiver comprising a plurality of receivers 104. The integrated unit may be configured to aggregate received data associated with at least a portion of correlation IDs that can be converted into correlation data packets in order to calculate, generate, and / or derive the direction (AOA) for receiving the converted received data, e.g., the direction of the originating radio transmitter 102 and / or similar directions.
[0179] Referring now to Figure 6, we can see that this is a schematic diagram of an exemplary composite receiver according to some embodiments of the present invention, which is constructed from a plurality of asynchronous receivers and an integration unit configured to correlate similar data packets transmitted by a wireless transmitter, which are received by at least some of the receivers.
[0180] An exemplary composite receiver 600 may include, for example, a plurality of asynchronous receivers such as receiver 104 and integration unit 602, the integration unit 602 configured to correlate similar data packets transmitted by wireless transmitters such as wireless transmitter 102, which are received by at least a portion of receiver 104.
[0181] The composite receiver 600 may be constructed using one or more architectures, structures, and / or deployments. For example, the composite receiver 600 may be constructed as a single package, a single rack, a box, and / or similar, physically containing multiple receivers 104 and an integration unit 602. However, the composite receiver 600 may employ a distributed architecture in which at least some of the receivers 104 and / or integration units 602 are separate and mechanically uncoupled. In another example, the integration unit 602 may be integrated, coupled, and / or mounted to one or more of the receivers 104.
[0182] The integration unit 602 may receive correlation IDs, their associated received data, and optionally associated received time data from a synchronization system such as the synchronization system 100, and in particular from a packet synchronizer such as the packet synchronizer 120 performed by the synchronization system 100.
[0183] Optionally, the composite receiver 600 and / or the integration unit 602 may integrate and / or include a synchronization system 100. Furthermore, the integration unit 602 may communicate directly with the receiver 104 and facilitate the synchronization system 100 so that the packet synchronizer 120 performs a process 210 to synchronize and correlate similar data packets received by at least some of the receivers 104 based on the content of the received data packets.
[0184] The integration unit 602 may include one or more processors configured to run one or more software modules, and may also utilize one or more hardware modules available in the composite receiver 600. Thus, the integration unit 602 may run one or more functional modules utilized by one or more software modules, one or more hardware modules, and / or a combination thereof. For example, the integration unit 602 may run one or more functional modules for aggregating received data associated with at least a portion of correlation IDs in order to calculate, generate, and / or derive converted received data, such as AOA, i.e., the direction of the transmitting radio transmitter 102 and / or similar directions.
[0185] The composite receiver 600 may output the converted received data calculated by the integration unit 602, along with optionally associated correlation IDs, to one or more devices, services, and / or similar devices configured to use the converted received data for one or more applications. For example, the composite receiver 600 may provide (e.g., transmit) the converted received data to one or more locator systems configured to determine and / or calculate the location of the wireless transmitter 102.
[0186] According to some embodiments of the present invention, the device for receiving received data associated with a correlation ID includes a locator system configured to determine and / or calculate the location of a wireless transmitter 102 based on the received data, specifically the correlated received events, which are calculated by the receiver 104 and associated with at least a portion of the correlation ID.
[0187] Optionally, the locator system may integrate and / or include a synchronization system 100. Furthermore, the integration unit 602 may facilitate the synchronization system 100 so that the locator system can communicate with the receiver 104 and cause the packet synchronizer 120 to perform a process 210 for synchronizing and correlating similar data packets received by at least some of the receivers 104 based on the content of the received data packets. The locator system may also communicate with one or more composite receivers, such as a composite receiver 600, to receive converted received data generated by the composite receiver 600 based on the received data of correlated similar data packets, specifically based on the correlation IDs of similar data packets received by multiple receivers 104 of the composite receiver 600.
[0188] Each correlated received event corresponding to a similar data packet may be received from one of the different receivers 104 and, in turn, associated with each received data depending on the position of the radio transmitter 102 relative to each receiver 104, for example, each RSSI, each AOA, and / or similar.
[0189] The locator system may apply one or more methods, techniques, and / or algorithms known in the art to calculate the position of the radio transmitter 102 based on the received data calculated and received from the receiver 104. For example, the locator system may use one or more triangulation algorithms that use each AOA associated with correlated received events corresponding to similar data packets to calculate the position of the radio transmitter 102.
[0190] Optionally, the locator system may receive converted received data from one or more composite receivers 600 and may be configured to calculate the position of the wireless transmitter 102 based on the converted received data, for example, the orientation of the wireless transmitter 102 and / or similar orientations known in the art.
[0191] The position of the wireless transmitter 102 calculated by the locator system may be a relative position and / or an absolute position.
[0192] If the actual location (geolocation) of receiver 104 is unavailable to the locator system, the locator system may be able to calculate only the relative position of the radio transmitter 102 with respect to receiver 104, and in particular, only the relative position of the radio transmitter 102 with respect to at least some of the receivers 104 that received the correlated received events used to calculate the position of the radio transmitter 102. Such calculation of relative position can be very efficient for calculating the relative positions between multiple separate radio transmitters 102. For example, the relative positions between two radio transmitters 102 coupled to two different vehicles can be calculated. In another example, the relative positions between two separate radio transmitters 102 can be calculated, one coupled to a vehicle and the other associated with a pedestrian. The locator system can first calculate the relative position of each radio transmitter 102 with respect to at least some of the receivers 104, specifically with respect to the receivers 104 that received similar data packets and generated their respective received events that were successfully correlated together by the locator system. Next, the locator system can calculate the relative position between the two wireless transmitters 102 based on the relative positions of the two wireless transmitters 102 compared to the receiver 104.
[0193] If the actual location (geolocation) of receiver 104 is available to the locator system, the locator system can calculate the absolute location of wireless transmitter 102 based on the absolute locations of at least some of the receivers of receiver 104 that have received correlated reception events corresponding to similar data packets.
[0194] According to some embodiments of the present invention, at least a portion of the receivers, in particular, capable of calculating AOA received data used by a locator system to determine the location of the radio transmitter 102, can be calibrated according to a known location of the radio transmitter 102. Such receivers, referred to later herein as AOA-enabled receivers, may include, for example, a composite receiver 600. In another example, the AOA-enabled receiver may include one or more receivers 104, each including an antenna array, and thus capable of calculating AOA for data packets received from the radio transmitter 102, as is known in the art.
[0195] The location of the wireless transmitter 102 may be provided externally to one or more locator systems and / or AOA-enabled receivers using one or more methods and / or techniques. For example, one or more GPS sensors may be coupled with the wireless transmitter 102 (e.g., incorporated, mounted, attached, etc.) to report its location, specifically the geolocation of the wireless transmitter 102. The location of the wireless transmitter 102, which may be recorded by the wireless transmitter 102 itself and / or by one or more tracking systems configured to track the wireless transmitter 102, may be provided (e.g., transmitted) to one or more locator systems and / or AOA-enabled receivers. In another example, the location, e.g., the map coordinates of a waypoint where the wireless transmitter 102 is currently located and / or a similar location, may be reported to one or more locator systems and / or AOA-enabled receivers.
[0196] Based on the known position of the radio transmitter 102, which can be referred to as "ground truth" combined with received data calculated by an AOA-compatible receiver, one or more locator systems and / or AOA-compatible receivers may calibrate receiver 104 at the position of that ground truth.
[0197] For example, a locator system properly supported by AOA-enabled receivers is assumed to be configured to determine the position of the radio transmitter 102 based on AOA. In such a case, at least some of the AOA-enabled receivers, specifically those within range of the radio transmitter 102, can receive radio signals transmitted by the radio transmitter 102 while they are located at a known position. Each of the AOA-enabled receivers can then be calibrated according to the AOA of each received radio signal transmitted by the radio transmitter 102, compared to the known position of the radio transmitter 102.
[0198] Furthermore, the position of the wireless transmitter 102 may be known at multiple locations, thus providing multiple "ground truth" points. For example, the wireless transmitter 102 may move between multiple known locations where it is at least temporarily stationary. In another example, the positions of multiple wireless transmitters 102 may be known, specifically, the positions where the wireless transmitter 102 is at least temporarily stationary are known. Using multiple known (ground truth) locations to calibrate an AOA-enabled receiver can significantly improve calibration accuracy.
[0199] Furthermore, one or more existing services, systems, platforms, and / or infrastructure may be used to calibrate AOA-enabled receivers. For example, calibration may be performed according to the known location of one or more vehicles among one or more managed all-vehicles operated by an operator. Such managed all-vehicles may include one or more public transport services, such as buses, trains, trams, taxis, and / or similar vehicles. In another example, managed all-vehicles may include autonomous vehicle services, such as self-service car rentals, self-service scooter rentals, self-service bicycle rentals, and / or similar services.
[0200] Each of the vehicles in such a controlled fleet typically includes one or more GPS sensors, thus facilitating means for establishing the vehicle's known location and one or more mobile data network modules, such as a wireless transmitter 102, for transmitting wireless signals that can be used for calibration. Furthermore, at least some of the vehicles in the controlled fleet can be at least temporarily stationary for at least a predetermined period of time sufficient to obtain a location accurate enough for calibration, e.g., parked, unused, stopped at a bus stop, stopped at a gas station, stopped at a charging post, and / or similar conditions. While the vehicles are stationary, GPS coordinates can be accumulated, and an average of the accumulated GPS coordinates for the vehicles can be calculated to improve the accuracy of the vehicle's known location to within a few meters. Furthermore, each of the vehicles in the fleet may be assigned a unique ID to identify each vehicle among a plurality of vehicles in the fleet.
[0201] In particular, the positions of all vehicles while stationary may be shared and / or provided to AOA-enabled receivers, for example, transmitted to those AOA-enabled receivers via one or more networks, for example, via the Internet using one or more data sharing protocols known in the art and / or any other predetermined data protocols. Furthermore, while it is also possible for all vehicles to transmit their positions to AOA-enabled receivers, in some deployments, the positions of all vehicles may be provided to only a limited number of AOA-enabled receivers, or optionally to a single AOA-enabled receiver that can distribute the known vehicle positions while fixing them to other receivers 104.
[0202] One or more AOA-enabled receivers, specifically those within the transmission range of one or more stationary vehicles of the entire fleet, may receive radio signals transmitted from each stationary vehicle and calibrate based on received data calculated for the received radio signals, compared with the known location of each stationary vehicle identified by its ID. The AOA-enabled receivers may calibrate to ground truth, for example, by applying one or more calibration schemes described herein based on AOA and / or similar.
[0203] Optionally, by sharing the determined locations of all vehicles (as described in process 210), the synchronization system 100 using AOA-enabled receivers can contribute to returning the determined locations to the operators of all managed vehicles, which may enable the operators to track those vehicles more accurately. The synchronization system 100 may provide the operators of all managed vehicles with the determined locations of one or more of all vehicles, for example, continuously, periodically, and / or upon request from the operators. This may enable alternative tracking locations for operators to track all vehicles, which may help overcome the limitations of the primary tracking scheme, for example, weak GPS signals and / or distorted GPS signals, which can significantly reduce the accuracy, reliability, and / or robustness of GPS-based location tracking. Furthermore, the determined locations of one or more of all vehicles in motion by the locator system may be significantly more accurate than GPS tracking, which is highly limited for moving objects. The reason for this is that GPS tracking is based on an accumulation of GPS coordinates, and therefore, for a moving object, it is based on only a few GPS coordinate readings, typically a single GPS coordinate reading, and these readings are not very accurate.
[0204] The descriptions of various embodiments of the present invention are presented for illustrative purposes only and are not intended to exhaust or limit the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the embodiments described. The terminology used herein has been chosen to best describe the principles, practical applications, or technological improvements over the technologies available on the market of the embodiments, or to enable those skilled in the art to understand the embodiments disclosed herein.
[0205] During the term of this patent, which matures from this application onward, many related systems, methods, and computer programs are expected to be developed, and the scope of the terms wireless transmission technology, wireless transmission protocols, and antenna arrays is intended to a priori include all such new technologies.
[0206] As used herein, the term "approximately" means ±10%.
[0207] The terms "comprises," "comprising," "includes," "including," and "having," and their cognates, all mean "including but not limited to." This term encompasses the terms "consisting of" and "consisting essentially of."
[0208] The phrase "consisting essentially of" means that the configuration or method may include additional components and / or steps, but only if the additional components and / or steps do not substantially alter the basic and novel characteristics of the claimed configuration or method.
[0209] As used herein, unless the context clearly indicates otherwise, the singular forms “a,” “an,” and “the” refer to multiple objects. For example, the terms “a compound” or “at least one compound” may refer to multiple compounds, including mixtures thereof.
[0210] The word “exemplary” is used herein to mean “serving as an example, illustration, or illustration.” Any embodiment described as “exemplary” should not necessarily be construed as being preferable or advantageous to other embodiments, and / or preclude the incorporation of features from other embodiments.
[0211] In this specification, the word “optionally” is used to mean “provided in some embodiments and not in other embodiments.” Any particular embodiment of the present invention may include multiple “optional” features, provided that such features do not conflict.
[0212] Throughout this application, various embodiments of the invention may be presented in range form. It should be understood that descriptions in range form are merely for convenience and conciseness and should not be interpreted as immutable limitations on the scope of the invention. Therefore, range descriptions should be considered to specifically disclose all possible partial ranges, not just the individual numbers within that range. For example, a range description such as 1-6 should be considered to specifically disclose partial ranges such as 1-3, 1-4, 1-5, 2-4, 2-6, 3-6, and the individual numbers within those ranges, e.g., 1, 2, 3, 4, 5, and 6. This applies regardless of the width of the range.
[0213] Whenever a numerical range is indicated herein, it means that it includes any cited digit (fraction or integer) within the indicated range. The phrases “ranging / ranges between” between the first and second display numbers, and “ranging / ranges from” between the first and second display numbers, are used interchangeably herein and mean that they include the first and second display numbers and all fractional and integer digits between them.
[0214] The word “exemplary” is used herein to mean “serving as an example, illustration, or illustration.” Any embodiment described as “exemplary” should not necessarily be construed as being preferable or advantageous to other embodiments, and / or preclude the incorporation of features from other embodiments.
[0215] In this specification, the word “optionally” is used to mean “provided in some embodiments and not in other embodiments.” Any particular embodiment of the present invention may include multiple “optional” features, provided that such features do not conflict.
[0216] For clarity, certain features of the invention described in the context of separate embodiments may also be provided in combination in a single embodiment. Conversely, various features of the invention described in the context of a single embodiment may also be provided separately, in any suitable secondary combination, or as appropriate in any other described embodiment of the invention. Certain features described in the context of various embodiments should not be considered essential features of those embodiments unless the embodiments would not function without those elements.
[0217] Although the present invention has been described in relation to its specific embodiments, it is obvious that many alternatives, modifications, and variations will be apparent to those skilled in the art. Therefore, it is intended to encompass all such alternatives, modifications, and variations that fall within the spirit and broad scope of the appended claims.
[0218] As intended by the applicant, all publications, patents, and patent applications referenced herein may be incorporated herein in their entirety, as if specifically and individually noted, where each individual publication, patent, or patent application is indicated to be incorporated herein by reference. Furthermore, the citation or identification of any reference in this application should not be construed as an acknowledgment that such reference is available as prior art of the present invention. Section headings should not necessarily be construed as restrictive to the extent in which they are used. Furthermore, any priority document of this application is incorporated herein by reference in its entirety.
Claims
1. A packet synchronization device for synchronizing data packets received by a separate asynchronous receiver from a wireless transmitter, A network interface configured to asynchronously receive a plurality of identifiers (IDs), each of which is an identifier (ID) associated with each data packet from a plurality of data packets transmitted by at least one wireless transmitter via at least one wireless transmission channel, wherein the plurality of data packets are received by a plurality of separate asynchronous receivers that do not share a common time base, and each of the plurality of IDs is associated with each received data calculated by one of the plurality of receivers. A processor configured to correlate similar data packets received by at least some of the plurality of receivers based on matching IDs, An output interface configured to output the correlated IDs together with the received data associated with the correlated IDs to at least one external device configured to jointly process received data associated with at least a portion of the correlated IDs, A packet synchronization device equipped with the following features.
2. The packet synchronization device according to claim 1, wherein the similarly correlated data packets correspond to at least one identical data packet transmitted by the at least one wireless transmitter, which is received by at least some of the receivers.
3. The packet synchronization device according to claim 1, wherein the received data associated with each received data packet comprises at least the received signal strength indicator (RSSI) value of each received data packet.
4. The packet synchronization device according to claim 1, wherein each of the receivers is further configured to associate each of the received data packets with the respective time of arrival (TOA) of each of the data packets.
5. The packet synchronization device according to claim 1, wherein the IDs of at least some of the plurality of data packets are time-unique with respect to preceding and succeeding data packets transmitted by at least one wireless transmitter during a predetermined period of time.
6. The packet synchronization device according to claim 1, wherein the ID of each of the plurality of data packets is calculated based on at least a portion of the content of each of the data packets.
7. The packet synchronization device according to claim 6, wherein at least a portion of each of the data packets comprises at least one field of each data packet, the at least one field being defined by a communication protocol used to transmit each data packet over the at least one radio transmission channel.
8. The packet synchronization device according to claim 7, wherein the ID of the data packet is further calculated based on at least one network parameter of the at least one wireless transmission channel, the at least one network parameter comprising one or more of a network ID, a service set identifier (SSID), a network type, a network channel, and a network subchannel.
9. The packet synchronization device according to claim 7, wherein the ID of the data packet is further calculated based on the device ID of the at least one wireless transmitter, and the device ID is extracted from at least one of the plurality of data packets in order to associate the at least one data packet with the at least one wireless transmitter.
10. The packet synchronization device according to claim 1, wherein the IDs of at least some of the plurality of data packets are calculated using at least one arbitrary-length content mapping function applied to at least some of each of the data packets, the at least one arbitrary-length content mapping function is selected from the group consisting of hash functions, cryptographic hash functions, and CRC functions.
11. The packet synchronization device according to claim 1, wherein the processor is further configured to establish a common time base among the plurality of receivers based on the reception times of at least some of the correlated data packets.
12. The packet synchronization device according to claim 11, wherein at least a portion of the plurality of data packets are correlated based on the common time base.
13. The packet synchronization device according to claim 11, wherein at least some of the plurality of receivers are synchronized based on the common time base.
14. The packet synchronization device according to claim 11, wherein the processor is further configured to establish a common sampling time base for at least some of the plurality of receivers based on the common time base, the common sampling time base defines a sampling time for each of the plurality of radio transmission channels used by the at least one radio transmitter to transmit the plurality of data packets.
15. The packet synchronization device according to claim 1, wherein the at least one external device comprises an integrated unit of a composite receiver having the plurality of receivers, and the integrated unit is configured to aggregate the received data associated with the correlated IDs to generate converted received data.
16. The packet synchronization device according to claim 1, wherein the at least one external device comprises a locator system configured to calculate the position of the at least one wireless transmitter relative to at least some of the receivers based on the received data associated with the correlated ID.
17. The packet synchronization device according to claim 16, wherein the position calculated for at least one wireless transmitter is a position relative to at least some of the receivers.
18. The packet synchronization device according to claim 16, wherein the position calculated for at least one wireless transmitter is an absolute position calculated based on predetermined positions of at least some of the receivers.
19. The packet synchronization device according to claim 16, wherein at least one of the plurality of receivers is calibrated according to a known position of the wireless transmitter.
20. A packet synchronization method for synchronizing data packets received by a separate asynchronous receiver from a wireless transmitter, The asynchronous reception via a network interface of a plurality of identifiers (IDs), each of which is an identifier (ID) associated with each data packet from a plurality of data packets transmitted by at least one wireless transmitter via at least one wireless transmission channel, wherein the plurality of data packets are received by a plurality of separate asynchronous receivers that do not share a common time base, and each of the plurality of IDs is associated with each received data calculated by one of the plurality of receivers. The processor correlates similar data packets received by at least some of the multiple receivers based on matching IDs, Outputting the correlated IDs along with the received data associated with the correlated IDs to at least one external device configured to jointly process the received data associated with at least a portion of the correlated IDs via an output interface, A packet synchronization method comprising the following features.