Inducing MIMO transmission from a wireless communication device
By triggering MIMO transmission of wireless communication devices and using MIMO training fields for motion detection, the problems of low motion detection accuracy and frequent error alarms in the prior art are solved, and higher detection accuracy and reliability are achieved.
Patent Information
- Application Number
- CN202080074360.X
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2019-12-05
- Filing Date
- 2020-10-28
- Publication Date
- 2025-02-28
- Estimated Expiration
- 2040-10-28
AI Technical Summary
Existing wireless motion detection systems have problems with low accuracy and frequent false alarms when detecting motion, especially when using Wi-Fi signals for motion detection.
Motion detection is performed using the MIMO training field by initiating MIMO transmission from the wireless communication device. The method causes the wireless communication device to send a wireless transmission containing a MIMO training field through a message initiated by a network layer or a transport layer, such as ICMP Ping, ARP Ping or TCP Ping.
Improves the accuracy and reliability of motion detection, reduces the occurrence of false alarms, enables efficient operation in a wider environment, and eliminates the need for additional hardware or software to be installed on wireless communication devices.
Smart Images

Figure CN114599991B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to U.S. Provisional Application No. 62 / 944,177, filed on December 5, 2019, entitled “Eliciting MIMO Transmissions from Wireless Communication Devices,” and U.S. Provisional Application No. 62 / 928,684, filed on October 31, 2019, entitled “Using MIMO Training Fields for Motion Detection,” the contents of which are incorporated herein by reference. Background Art
[0003] The following description relates to inducing multiple-input / multiple-output (MIMO) transmissions from a wireless communication device, for example, for wireless motion detection.
[0004] Motion detection systems have been used to detect the movement of objects within a room or outdoor area, for example. In some exemplary motion detection systems, infrared or optical sensors are used to detect the movement of objects within the field of view of the sensor. Motion detection systems have been used in security systems, automated control systems, and other types of systems. BRIEF DESCRIPTION OF THE DRAWINGS
[0005] Figure 1 is a diagram illustrating an exemplary wireless communication system.
[0006] Figure 2A-2B is a diagram illustrating exemplary wireless signals communicated between wireless communication devices.
[0007] Figure 2C is a diagram of an exemplary wireless sensing system that operates to detect motion in a space.
[0008] Figure 3 is a diagram illustrating an exemplary PHY frame.
[0009] Figure 4 is a diagram illustrating an exemplary PHY frame.
[0010] Figure 5 is a diagram illustrating an exemplary multiple-input multiple-output (MIMO) radio configuration.
[0011] Figure 6 is a diagram showing an exemplary frequency spectrum of a wireless signal.
[0012] Figure 7 is a diagram showing an exemplary representation of the Open Systems Interconnection (OSI) model.
[0013] Figure 8is a diagram showing exemplary message components of the three layers of the typical OSI model.
[0014] Fig. 9 is a flow chart showing an exemplary process of finding an upper-level logical address.
[0015] Fig.10 is a state machine diagram representing an exemplary process for initiating a MIMO transmission from a wireless communication device.
[0016] Fig.11A A flow chart representing an exemplary process for setting up ICMP Ping is shown.
[0017] Fig. 11B A flow chart representing an exemplary process for stopping ICMP Ping is shown.
[0018] Fig. 11C A flow chart representing an exemplary process for performing ICMP Ping is shown.
[0019] Fig. 12A A flow chart representing an exemplary process for setting up TCP Ping is shown.
[0020] Fig. 12B A flow chart representing an exemplary process for performing TCP Ping is shown.
[0021] Fig.13 A flow chart representing an exemplary process for setting up ARP Ping is shown.
[0022] Fig.14 A flow chart representing an exemplary method of inducing a MIMO transmission from a wireless communication device is shown.
[0023] Fig.15 is a block diagram illustrating an exemplary wireless communication device. DETAILED DESCRIPTION
[0024] In some aspects described herein, a wireless sensing system can process wireless signals (e.g., radio frequency signals) sent through a space between wireless communication devices for wireless sensing applications. Exemplary wireless sensing applications include detecting motion, which can include one or more of the following: detecting motion of an object in a space, motion tracking, positioning of motion in a space, respiration detection, respiration monitoring, presence detection, gesture detection, gesture recognition, human detection (e.g., moving and stationary human detection), human tracking, fall detection, speed estimation, intrusion detection, walking detection, step counting, respiration rate detection, sleep pattern detection, apnea estimation, posture change detection, activity recognition, gait classification, gesture decoding, sign language recognition, hand tracking, heart rate estimation, respiration rate estimation, room occupancy detection, human dynamic monitoring, and other types of motion detection applications. Other examples of wireless sensing applications include object recognition, speech recognition, keystroke detection and identification, tampering detection, touch detection, attack detection, user authentication, driver fatigue detection, traffic monitoring, smoking detection, school violence detection, human counting, metal detection, human recognition, bicycle positioning, human queue estimation, Wi-Fi camera, and other types of wireless sensing applications. For example, the wireless sensing system may operate as a motion detection system to detect the presence and location of motion based on Wi-Fi signals or other types of wireless signals.
[0025] The examples described herein can be used for home surveillance. In some cases, home surveillance using the wireless sensing system described herein can provide several advantages, including full home coverage through walls and in darkness, discreet detection without cameras, higher accuracy and reduced false alarms (e.g., compared to sensors that do not use Wi-Fi signals to sense their environment), and adjustable sensitivity. By layering Wi-Fi motion detection capabilities into routers and gateways, a robust motion detection system can be provided.
[0026] The examples described herein can also be used for health monitoring. Caregivers want to know that their loved ones are safe, while the elderly and those with special needs want to maintain their independence at home with dignity. In some instances, health monitoring using the wireless sensing system described herein can provide a solution that uses wireless signals to detect motion without using cameras or invading privacy, generates alarms when abnormal activity is detected, tracks sleep patterns, and generates preventive health data. For example, caregivers can monitor motion, visits from health care professionals, and unusual behavior (such as staying in bed longer than normal). In addition, motion is monitored unobtrusively without the need for a wearable device, and the wireless sensing system described herein provides a more economical and convenient alternative for assisted living facilities and other safety and health monitoring tools.
[0027] The examples described herein may also be useful for setting up a smart home. In some examples, the wireless sensing system described herein uses predictive analytics and artificial intelligence (AI) to learn motion patterns and trigger smart home functions accordingly. Examples of smart home functions that can be triggered include adjusting the thermostat when a person walks through the front door, turning other smart devices on or off based on preferences, automatically adjusting lighting, adjusting the HVAC system based on current occupants, and the like.
[0028] In some instances, aspects of the systems and techniques described herein provide technical improvements and advantages over existing methods. In some wireless network environments, certain wireless communication devices may not automatically send MIMO transmissions in response to certain PHY layer or MAC layer messages. The PHY layer (also known as the physical layer) may refer to layer 1 of the open system interconnection (OSI) model, and the MAC layer (also known as the data link layer) may refer to layer 2 of the OSI model. In aspects of the described systems and techniques, messages initiated by protocols in higher layers (e.g., layers above layers 1 and 2 of the OSI model) can be used to trigger MIMO transmissions from wireless communication devices. For example, network layer messages (e.g., ICMP Ping, ARP Ping, or modified versions of these and other network layer processes) and transport layer messages (e.g., TCP Ping, or modified versions of these and other transport layer processes) can be used to cause one or more wireless communication devices to send wireless transmissions including MIMO training fields.
[0029] Compared to the traditional training field in the PHY frame, the MIMO training field contains a signal with higher frequency resolution, a larger number of subcarrier frequencies, and a higher frequency bandwidth. Using the MIMO training field for motion detection provides a more accurate motion detection capability. For example, in some instances, PHY frames can be used to perform motion detection with higher spatial and temporal resolution, precision, and accuracy, and each PHY frame has a corresponding MIMO training field. In addition, since MIMO transmission is triggered using a protocol in a higher layer, MIMO transmission can be triggered in a more efficient manner from a wider range of wireless communication devices (or both). The ability of the wireless sensing system to trigger MIMO transmission from a wider range of wireless communication devices can allow the wireless sensing system to operate in a more diverse environment and cover a larger spatial area. In addition, for example, existing resources on the response device can be used to trigger MIMO transmission without having to install any additional hardware, software, or firmware on the response device (for example, in some cases, reducing or eliminating the requirement for dedicated motion detection hardware). In addition, the systems and techniques described herein can be used for wireless motion detection systems or other types of wireless sensing systems. For example, inducing MIMO transmission may be useful in various wireless sensing systems that utilize channel state information (CSI) derived from wireless signals (e.g., systems that obtain CSI channel responses and apply digital signal processing, machine learning, or other types of analysis to the CSI channel responses). Technical improvements and advantages realized in examples where the wireless sensing system is used for motion detection may also be realized in examples where the wireless sensing system is used for other wireless sensing applications.
[0030] In some instances, a wireless sensing system can be implemented using a wireless communication network. Wireless signals received at one or more wireless communication devices in the wireless communication network can be analyzed to determine channel information of different communication links in the network (between corresponding wireless communication device pairs in the network). Channel information can represent a physical medium to which a transfer function is applied to a wireless signal passing through space. In some instances, the channel information includes a channel response. The channel response can characterize a physical communication path, thereby representing, for example, a combined effect of scattering, fading, and power attenuation in the space between a transmitter and a receiver. In some instances, the channel information includes beamforming state information (e.g., feedback matrix, steering matrix, channel state information (CSI), etc.) provided by a beamforming system. Beamforming is a signal processing technique used in a common multi-antenna (MIMO) radio system to perform directional signal transmission or reception. Beamforming can be implemented by operating elements in an antenna array in such a way that signals with a specific angle undergo constructive interference and other signals undergo destructive interference.
[0031] Channel information for each communication link may be analyzed by one or more motion detection algorithms (e.g., running on a hub device, a client device, or other device in a wireless communication network, or running on a remote device communicatively coupled to the network) to detect, for example, whether motion has occurred in the space, to determine a relative location of the detected motion, or both. In some aspects, channel information for each communication link may be analyzed to detect whether an object is present or absent (e.g., where no motion is detected in the space).
[0032] In some instances, the motion detection system returns motion data. In some implementations, the motion data is a result indicating a degree of motion in space, a location of motion in space, a direction of motion in space, a time at which motion occurred, or a combination thereof. In some instances, the motion data may include a motion score, which may include or may be one or more of: a scalar indicating a level of signal disturbance in an environment accessed by the wireless signal; an indication of whether motion is present; an indication of whether an object is present; or an indication or classification of a gesture performed in an environment accessed by the wireless signal.
[0033] In some implementations, the motion detection system can be implemented using one or more motion detection algorithms. Exemplary motion detection algorithms that can be used to detect motion based on wireless signals include techniques described in the following patents: U.S. Patent 9,523,760, entitled “Detecting Motion Based on Repeated Wireless Transmissions”; U.S. Patent 9,584,974, entitled “Detecting Motion Based on Reference Signal Transmissions”; U.S. Patent 10,051,414, entitled “Detecting Motion Based On Decompositions Of Channel Response Variations”; U.S. Patent 10,048,350, entitled “Motion Detection Based on Groupings of Statistical Parameters of Wireless Signals”; U.S. Patent 10,108,903, entitled “Motion Detection Based on Machine Learning of Wireless Signal Properties”; U.S. Patent 10,109,167, entitled “Motion Localization in a Wireless Mesh Network Based on Motion Indicator Values”; U.S. Patent 10,109,168, entitled “Motion Localization Based on Channel Response Characteristics”; U.S. Patent 10,109,169, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,170, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,171, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,173, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,174, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,175, entitled “Determining Motion Based on Motion Indicator Values”; U.S. Patent 10,109,176, entitled “ U.S. Patent 10,743,143, entitled “A Motion Zone for a Location of Motion Detected by Wireless Signals”; U.S. Patent 10,605,908, entitled “Motion Detection Based on Beamforming Dynamic Informationfrom Wireless Standard Client Devices”; U.S. Patent 10,605,907, entitled “Motion Detection by a Central Controller Using Beamforming Dynamic Information”;U.S. Patent 10,600,314, entitled “Modifying Sensitivity Settings in a Motion Detection System”; U.S. Patent 10,567,914, entitled “Initializing Probability Vectors for Determining a Location of Motion Detected from Wireless Signals”; U.S. Patent 10,565,860, entitled “Offline Tuning System for Detecting New Motion Zones in a Motion Detection System”; U.S. Patent 10,506,384, entitled “Determining a Location of Motion Detected from Wireless Signals Based on Prior Probability”; U.S. Patent 10,499,364, entitled “Identifying Static Leaf Nodes in a Motion Detection System”; U.S. Patent 10,498,467, entitled “Determining a Confidence for a Motion Zone Identified as a Location of Motion U.S. Patent 10,460,581 entitled “Motion Detection based on Beamforming DynamicInformation”; U.S. Patent 10,459,076 entitled “Determining a Location of MotionDetected from Wireless Signals Based on Wireless Link Counting”; U.S. Patent 10,438,468 entitled “Motion Localization in a Wireless Mesh Network Based on MotionIndicator Values”;U.S. Patent 10,404,387, entitled “Determining Motion Zones in a Space Traversed by Wireless Signals”; U.S. Patent 10,393,866, entitled “Detecting Presence Based on Wireless Signal Analysis”; U.S. Patent 10,380,856, entitled “Motion Localization Based on Channel Response Characteristics”; U.S. Patent 10,318,890, entitled “Training Data for a Motion Detection System using Data from a Sensor Device”; U.S. Patent 10,264,405, entitled “Motion Detection in Mesh Networks”; U.S. Patent 10,228,439, entitled “Motion Detection Based on Filtered Statistical Parameters of Wireless Signals”; U.S. Patent 10,129,853, entitled “Operating a Motion Detection Channel in a Wireless Communication Network”; U.S. Patent 10,197,696, entitled “Selecting Wireless Communication Channels Based on Signal Quality”; U.S. Patent 10,133,639, entitled “Selecting Wireless Communication Channels Based on Signal Quality”; U.S. Patent 10,113,639, entitled “Selecting Wireless Communication Channels Based on Signal Quality”; U.S. Patent 10,133,639, entitled “Selecting Wireless Communication Channels Based on Signal Quality”; U.S. Patent 10,113,639, entitled “ Metrics” in U.S. Patent 10,111,228 and other technologies.
[0034] Figure 1 An exemplary wireless communication system 100 is shown. The wireless communication system 100 may perform one or more operations of a motion detection system. The technical improvements and advantages achieved by using the wireless communication system 100 to detect motion are also applicable to examples where the wireless communication system 100 is used for other wireless sensing applications.
[0035] Exemplary wireless communication system 100 includes three wireless communication devices—102A, 102B, and 102C. Exemplary wireless communication system 100 may include additional wireless communication devices 102 and / or other components (e.g., one or more network servers, network routers, network switches, cables or other communication links, etc.).
[0036] The exemplary wireless communication devices 102A, 102B, 102C may, for example, operate in a wireless network in accordance with a wireless network standard or other type of wireless communication protocol. For example, the wireless network may be configured to operate as a wireless local area network (WLAN), a personal area network (PAN), a metropolitan area network (MAN), or other types of wireless networks. Examples of WLANs include networks configured to operate in accordance with one or more of the 802.11 family of standards developed by the IEEE (e.g., Wi-Fi networks), etc. Examples of PANs include networks configured to operate in accordance with short-range communication standards (e.g., A network that operates using near field communication (NFC), ZigBee, and millimeter wave communications.
[0037] In some implementations, the wireless communication devices 102A, 102B, 102C may be configured to communicate in a cellular network, for example, according to a cellular network standard. Examples of cellular networks include networks configured according to the following standards: 2G standards such as Global System for Mobile (GSM) and Enhanced Data Rates for GSM Evolution (EDGE) or EGPRS; 3G standards such as Code Division Multiple Access (CDMA), Wideband Code Division Multiple Access (WCDMA), Universal Mobile Telecommunications System (UMTS), and Time Division Synchronous Code Division Multiple Access (TD-SCDMA); 4G standards such as Long Term Evolution (LTE) and Advanced LTE (LTE-A); and 5G standards, etc.
[0038] In some cases, one or more of the wireless communication devices 102 is a Wi-Fi access point or other type of wireless access point (WAP). In some cases, one or more of the wireless communication devices 102 is an access point of a wireless mesh network (e.g., a commercially available mesh network system (e.g., GOOGLE Wi-Fi, EERO Mesh, etc.)). In some instances, one or more of the wireless communication devices 102 may be implemented as a wireless access point (AP) in the mesh network, while other wireless communication devices 102 are implemented as leaf devices (e.g., mobile devices, smart devices, etc.) that access the mesh network through one of the APs. In some cases, one or more of the wireless communication devices 102 is a mobile device (e.g., a smart phone, a smart watch, a tablet, a laptop, etc.), a wireless-enabled device (e.g., a smart thermostat, a Wi-Fi-enabled camera, a smart TV), or other types of devices that communicate in a wireless network.
[0039] exist Figure 1In the example shown, wireless communication devices send wireless signals to each other via a wireless communication link (e.g., according to a wireless network standard or a non-standard wireless communication protocol), and the wireless signals communicated between the devices can be used as motion detection to detect the movement of objects in the signal path between the devices. In some implementations, standard signals (e.g., channel detection signals, beacon signals), non-standard reference signals, or other types of wireless signals can be used as motion detection.
[0040] exist Figure 1 In the example shown, the wireless communication link between the wireless communication devices 102A, 102C can be used to detect the first motion detection zone 110A, the wireless communication link between the wireless communication devices 102B, 102C can be used to detect the second motion detection zone 110B, and the wireless communication link between the wireless communication devices 102A, 102B can be used to detect the third motion detection zone 110C. In some examples, the motion detection zones 110 can include, for example, air, solid material, liquid, or other media through which wireless electromagnetic signals can propagate.
[0041] exist Figure 1 In the example shown, when an object moves in any motion detection zone 110, the motion detection system can detect motion based on the signal sent through the relevant motion detection zone 110. In general, the object can be any type of static or movable object, and can be animate or inanimate. For example, the object can be a human (e.g., Figure 1 ), an animal, an inorganic object or other device, equipment or component, an object that defines all or part of the boundaries of a space (e.g., a wall, door, window, etc.), or other type of object.
[0042] In some examples, the wireless signal can propagate through a structure (e.g., a wall) before or after interacting with a moving object, which can allow the detection of the object's motion without an optical line of sight between the moving object and the transmitting or receiving hardware. In some instances, the motion detection system can communicate the motion detection event to other devices or systems, such as a security system or a control center, etc.
[0043] In some cases, the wireless communication device 102 itself is configured to perform one or more operations of the motion detection system, such as by executing computer-readable instructions (e.g., software or firmware) on the wireless communication device. For example, each device can process received wireless signals to detect motion based on changes in the communication channel. In some cases, other devices (e.g., remote servers, cloud-based computer systems, network-attached devices, etc.) are configured to perform one or more operations of the motion detection system. For example, each wireless communication device 102 can send channel information to a designated device, system, or service that performs an operation of the motion detection system.
[0044] In an example aspect of operation, a wireless communication device 102A, 102B may broadcast a wireless signal to or address a wireless signal to another wireless communication device 102C, and the wireless communication device 102C (and potentially other devices) receives the wireless signal sent by the wireless communication device 102A, 102B. The wireless communication device 102C (or other system or device) then processes the received wireless signal to detect motion of objects in the space accessed by the wireless signal (e.g., in the zones 110A, 110B). In some instances, the wireless communication device 102C (or other system or device) may perform one or more operations of a motion detection system.
[0045] Figure 2A and 2B is a diagram showing exemplary wireless signals communicated between wireless communication devices 204A, 204B, 204C. The wireless communication devices 204A, 204B, 204C may be, for example Figure 1 The wireless communication devices 102A, 102B, 102C shown in FIG. 1 may be other types of wireless communication devices.
[0046] In some cases, one or a combination of more than one of the wireless communication devices 204A, 204B, 204C may be part of or may be used by a motion detection system. The exemplary wireless communication devices 204A, 204B, 204C may transmit wireless signals through the space 200. The exemplary space 200 may be completely or partially enclosed or open at one or more boundaries of the space 200. The space 200 may be or may include the interior of a room, multiple rooms, a building, an indoor area, an outdoor area, etc. In the example shown, the first wall 202A, the second wall 202B, and the third wall 202C at least partially surround the space 200.
[0047] exist Figure 2A and 2B In the example shown, the first wireless communication device 204A repeatedly (e.g., periodically, intermittently, at scheduled, unscheduled, or random intervals, etc.) transmits a wireless motion detection signal. The second communication device 204B and the third wireless communication device 204C receive signals based on the motion detection signal transmitted by the wireless communication device 204A.
[0048] As shown in the figure, Figure 2A The object is at a first position 214A at an initial time (t0), and Figure 2B The object has moved to the second position 214B at a subsequent time (t1). Figure 2A and 2BIn FIG, the moving objects in space 200 are represented as people, but the moving objects may be other types of objects. For example, the moving objects may be animals, inorganic objects (e.g., systems, devices, equipment, or assemblies), objects used to define all or part of the boundaries of space 200 (e.g., walls, doors, windows, etc.), or other types of objects. Figure 2A and 2B In the example shown, the wireless communication devices 204A, 204B, 204C are stationary and are therefore in the same location at the initial time t0 and the subsequent time t1. However, in other examples, one or more of the wireless communication devices 204A, 204B, 204C may be mobile and may move between the initial time t0 and the subsequent time t1.
[0049] like Figure 2A and 2B 2 , multiple exemplary paths of wireless signals transmitted from the first wireless communication device 204A are shown with dashed lines. Along the first signal path 216, the wireless signal is transmitted from the first wireless communication device 204A and is reflected by the first wall 202A toward the second wireless communication device 204B. Along the second signal path 218, the wireless signal is transmitted from the first wireless communication device 204A and is reflected by the second wall 202B and the first wall 202A toward the third wireless communication device 204C. Along the third signal path 220, the wireless signal is transmitted from the first wireless communication device 204A and is reflected by the second wall 202B toward the third wireless communication device 204C. Along the fourth signal path 222, the wireless signal is transmitted from the first wireless communication device 204A and is reflected by the third wall 202C toward the second wireless communication device 204B.
[0050] exist Figure 2A In FIG. 2 , along the fifth signal path 224A, a wireless signal is transmitted from the first wireless communication device 204A and is reflected by an object at the first location 214A toward the third wireless communication device 204C. Figure 2A The time t0 and Figure 2B During the time t1 in the space 200, the object moves from the first position 214A to the second position 214B (e.g., a certain distance away from the first position 214A). Figure 2B In FIG. 2 , along the sixth signal path 224B, the wireless signal is transmitted from the first wireless communication device 204A and is reflected by the object at the second position 214B toward the third wireless communication device 204C. As the object moves from the first position 214A to the second position 214B, Figure 2B The sixth signal path 224B depicted in FIG. Figure 2AThe fifth signal path 224A depicted in FIG is longer. In some examples, signal paths may be added, removed, or otherwise modified due to movement of objects in space.
[0051] Figure 2A and 2B The exemplary wireless signals shown may experience attenuation, frequency shift, phase shift, or other effects through their respective paths, and may have portions that propagate in other directions, such as through walls 202A, 202B, and 202C. In some examples, the wireless signals are radio frequency (RF) signals. The wireless signals may include other types of signals.
[0052] The transmitted signal may have multiple frequency components in the frequency bandwidth, and the transmitted signal may include one or more frequency bands within the frequency bandwidth. The transmitted signal may be transmitted from the first wireless communication device 204A in an omnidirectional manner, in a directional manner, or in other ways. In the example shown, the wireless signal passes through multiple corresponding paths in the space 200, and the signal along each path may become attenuated due to path loss, scattering or reflection, etc., and may have a phase offset or a frequency offset.
[0053] like Figure 2A and 2B As shown, signals from various paths 216, 218, 220, 222, 224A and 224B are combined at the third wireless communication device 204C and the second wireless communication device 204B to form a received signal. Due to the influence of multiple paths in the space 200 on the transmitted signal, the space 200 can be represented as a transfer function (e.g., a filter) that inputs the transmitted signal and outputs the received signal. When an object moves in the space 200, the attenuation or phase shift that affects the wireless signal along the signal path may change, so the transfer function of the space 200 may change. In the case where the same wireless signal is transmitted from the first wireless communication device 204A, if the transfer function of the space 200 changes, the output of the transfer function (e.g., the received signal) may also change. The change in the received signal can be used to detect the movement of the object. On the contrary, in some cases, if the transfer function of the space does not change, the output of the transfer function (the received signal) may not change.
[0054] Figure 2C is a diagram illustrating an exemplary wireless sensing system operating to detect motion in a space 201 . Figure 2CThe exemplary space 201 shown in is a home that includes multiple different spatial areas or zones. In the example shown, the wireless motion detection system uses a multi-AP home network topology (e.g., a mesh network or a self-organizing network (SON)), which includes three access points (APs): a central access point 226 and two extended access points 228A, 228B. In a typical multi-AP home network, each AP typically supports multiple frequency bands (2.4G, 5G, 6G), and multiple frequency bands can be enabled at the same time. Each AP can use a different Wi-Fi channel to serve its clients, as this can allow for better spectrum efficiency.
[0055] exist Figure 2C In the example shown, the wireless communication network includes a central access point 226. In a multi-AP home Wi-Fi network, one AP may be represented as the central AP. This selection, which is usually managed by the manufacturer software running on each AP, is typically an AP with a wired Internet connection 236. Other APs 228A, 228B are wirelessly connected to the central AP 226 via respective wireless backhaul connections 230A, 230B. The central AP 226 may select a different wireless channel than the extended APs to serve its connected clients.
[0056] exist Figure 2C In the example shown, the extension APs 228A, 228B extend the range of the central AP 226 by allowing devices to connect to a possibly closer AP or a different channel. The end user does not need to know which AP the device has connected to, as all services and connections are typically the same. In addition to serving all connected clients, the extension APs 228A, 228B are connected to the central AP 226 using wireless backhaul connections 230A, 230B to move network traffic between other APs and provide a gateway to the Internet. Each extension AP 228A, 228B can select a different channel to serve its connected clients.
[0057] exist Figure 2C In the example shown, client devices (e.g., Wi-Fi client devices) 232A, 232B, 232C, 232D, 232E, 232F, 232G are associated with one of the central AP 226 or the extended AP 228 using corresponding wireless links 234A, 234B, 234C, 234D, 234E, 234F, 234G. The client device 232 connected to the multi-AP network can operate as a leaf node in the multi-AP network. In some implementations, the client device 232 may include a device capable of wireless operation (e.g., a mobile device, a smart phone, a smart watch, a tablet computer, a laptop computer, a smart thermostat, a camera capable of wireless operation, a smart TV, a speaker capable of wireless operation, a power outlet capable of wireless operation, etc.).
[0058] When client devices 232 seek to connect to and associate with their respective APs 226, 228, the client devices 232 may go through authentication and association phases with their respective APs 226, 228. In addition, the association phase assigns address information (e.g., an association ID or other type of unique identifier) to each client device 232. For example, within the IEEE 802.11 family of standards for Wi-Fi, each client device 232 may identify itself using a unique address (e.g., a 48-bit address, one example being a MAC address), but the client devices 232 may be identified using other types of identifiers embedded within one or more fields of a message. The address information (e.g., a MAC address or other type of unique identifier) may be hard-coded and fixed, or randomly generated according to network address rules at the beginning of the association process. Once the client devices 232 have been associated with their respective APs 226, 228, their respective address information may remain fixed. Subsequently, a transmission by the AP 226, 228 or client device 232 typically includes address information (eg, MAC address) of the sending wireless device and address information (eg, MAC address) of the receiving device.
[0059] exist Figure 2C In the example shown, wireless backhaul connections 230A, 230B carry data between APs and may also be used for motion detection.The wireless backhaul channels (or frequency bands) may each be different than the channels (or frequency bands) used to serve connected Wi-Fi devices.
[0060] exist Figure 2C In the example shown, wireless links 234A, 234B, 234C, 234D, 234E, 234F, 234G may include frequency channels used by client devices 232A, 232B, 232C, 232D, 232E, 232F, 232G to communicate with their respective APs 226, 228. Each AP may independently select its own channel to serve its respective client devices, and wireless links 234 may be used for data communications as well as motion detection.
[0061] The motion detection system, which may collect and process data (e.g., channel information) corresponding to the local links participating in the operation of the wireless sensing system, may include one or more motion detection or positioning processes running on one or more of the client devices 232 or on one or more of the APs 226, 228. The motion detection system may be installed as a software or firmware application on the client device 232 or AP 226, 228, or may be part of the operating system of the client device 232 or AP 226, 228.
[0062] In some implementations, the APs 226, 228 do not include motion detection software and are not otherwise configured to perform motion detection in the space 201. Rather, in such implementations, operations of the motion detection system are performed on one or more client devices 232. In some implementations, the channel information can be obtained by the client device 232 by receiving wireless signals from the APs 226, 228 (or possibly from other client devices 232) and processing the wireless signals to obtain the channel information. For example, the motion detection system running on the client device 232 can access the channel information provided by the radio firmware (e.g., Wi-Fi radio firmware) of the client device so that the channel information can be collected and processed.
[0063] In some implementations, the client devices 232 send requests to their respective APs 226, 228 to send wireless signals that can be used by the client devices as motion detection to detect the motion of objects in the space 201. The requests sent to the respective APs 226, 228 can be null data packet frames, beamforming requests, pings, standard data traffic, or a combination thereof. In some implementations, the client devices 232 are stationary when performing motion detection in the space 201. In other examples, one or more of the client devices 232 can be mobile and can move within the space 201 while performing motion detection.
[0064] Mathematically, the following equation can be used to describe the Figure 2A and 2B The wireless communication device 204A or Figure 2C The signal f(t) sent by AP 226, 228) in
[0065]
[0066] Among them, ω n represents the frequency of the nth frequency component of the transmitted signal, c n represents the complex coefficient of the nth frequency component, and t represents time. When the transmitted signal f(t) is transmitted, the output signal r from path k can be described according to equation (2): k (t):
[0067]
[0068] Among them, α n,k represents the attenuation factor (or channel response; e.g., due to scattering, reflection, and path loss) for the nth frequency component along path k, and φ n,krepresents the phase of the signal for the nth frequency component along path k. Then, the received signal R at the wireless communication device can be described as all the output signals r from all the paths to the wireless communication device k The sum of (t), as shown in formula (3):
[0069]
[0070] Substituting equation (2) into equation (3) yields the following equation (4):
[0071]
[0072] The wireless communication device (eg, Figure 2A and 2B The wireless communication device 204B, 204C or Figure 2C The received signal R at the client device 232 in the wireless communication device can be transformed into the frequency domain using, for example, a fast Fourier transform (FFT) or other type of algorithm. The transformed signal can represent the received signal R as a series of n complex values, where (n frequency ω n The corresponding frequency components of each correspond to a complex value. n The frequency components of the complex value Y n It can be expressed as the following formula (5):
[0073]
[0074] For a given frequency component ω n The complex value of Y n Indicates the frequency component ω n The relative amplitude and phase offset of the received signal at the position. The transmitted signal f(t) can be repeated over a period of time, and a complex value Y can be obtained for each transmitted signal f(t) n As the object moves in space, the complex value Y n Since the spatial channel response α n,k Therefore, the channel response (and hence the complex value Y n ) can indicate the movement of an object within the communication channel. Conversely, a stable channel response can indicate no motion. Thus, in some implementations, a plurality of devices in a wireless network can be processed to obtain a complex value Y for each of the devices. n , to detect whether motion has occurred in the space traversed by the transmitted signal f(t). The channel response can be expressed in the time domain or the frequency domain, and the Fourier transform or inverse Fourier transform can be used to switch between the time domain expression of the channel response and the frequency domain expression of the channel response.
[0075] exist Figure 2A , 2B In another aspect of 2C, beamforming state information can be used to detect whether motion has occurred in the space traversed by the transmitted signal f(t). For example, beamforming can be performed between devices based on some knowledge of the communication channel (e.g., feedback attributes generated by a receiver), where the knowledge can be used to generate one or more steering attributes (e.g., steering matrices), which are applied by the transmitter device to shape the transmit beam / signal in a particular direction. In some instances, as described herein, changes in steering or feedback attributes used in the beamforming process indicate changes in the space accessed by the wireless signal that may be caused by a moving object. For example, motion can be detected by significant changes in the communication channel over a period of time (e.g., as indicated by the channel response, or steering or feedback attributes, or any combination thereof).
[0076] For example, in some implementations, a steering matrix may be generated at a transmitter device (beamformer) based on a feedback matrix provided by a receiver device (beamformee) based on channel sounding. Since the steering matrix and the feedback matrix are related to the propagation characteristics of the channel, these beamforming matrices change as the object moves within the channel. The changes in channel characteristics are reflected accordingly in these matrices, and by analyzing these matrices, motion can be detected and different characteristics of the detected motion can be determined. In some implementations, a spatial map may be generated based on one or more beamforming matrices. A spatial map may indicate the overall direction of an object in space relative to a wireless communication device. In some cases, a "mode" of a beamforming matrix (e.g., a feedback matrix or a steering matrix) may be used to generate a spatial map. A spatial map may be used to detect the presence of motion in space or to detect the location of a detected motion.
[0077] In some implementations, the output of the motion detection system can be provided as a notification for graphical display on a user interface on a user device. In some implementations, the user device is a device for detecting motion, a user device designated for a caregiver or emergency contact of an individual in the space 200, 201, or any other user device communicatively coupled to the motion detection system to receive notifications from the motion detection system.
[0078] In some examples, the graphical display includes a graph of motion data indicating the degree of motion detected by the motion detection system for each of a series of time points. The graphical display can display the relative degree of motion detected by each node of the motion detection system. The graphical display can help a user determine an appropriate action to take in response to a motion detection event, associate a motion detection event with the user's observations or knowledge, determine whether a motion detection event is true or false, etc.
[0079] In some implementations, the output of the motion detection system can be provided in real time (e.g., to an end user). Additionally or alternatively, the output of the motion detection system can be stored (e.g., locally on the wireless communication device 204, the client device 232, the AP 226, 228, or on a cloud-based storage service) and analyzed to reveal statistical information within a time frame (e.g., an hour, day, or month). Examples of where the output of the motion detection system can be stored and analyzed to reveal statistical information within a time frame are in health monitoring, vital sign monitoring, sleep monitoring, etc. In some implementations, an alert (e.g., a notification, an audio alert, or a video alert) can be provided based on the output of the motion detection system. For example, a motion detection event can be communicated to other devices or systems (e.g., a security system or control center), a designated caregiver, or a designated emergency contact based on the output of the motion detection system.
[0080] In some implementations, the wireless motion detection system can detect motion by analyzing components of wireless signals specified by wireless communication standards. For example, the motion detection system can analyze standard headers of wireless signals exchanged in a wireless communication network. One such example is the IEEE 802.11ax standard, also known as "Wi-Fi 6". The draft of the IEEE 802.11ax standard was published in a document entitled "P802.11ax / D4.0, IEEE Draft Standard for Information Technology-Telecommunications and Information Exchange Between Systems Local and Metropolitan Area Networks-Specific Requirements Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications Amendment Enhancements for High Efficiency WLAN" in March 2019, which can be accessed at https: / / ieeexplore.ieee.org / document / 8672643 and is incorporated herein by reference in its entirety. In some cases, standard headers specified by other types of wireless communication standards can be used for motion detection.
[0081] In some implementations, a motion detection algorithm used by a wireless motion detection system utilizes a channel response (output of a channel estimation process) calculated by a wireless receiver (e.g., a Wi-Fi receiver). For example, a channel response calculated by a channel estimation process according to the Wi-Fi 6 standard can be received as an input to the motion detection algorithm. Channel estimation in the Wi-Fi 6 standard occurs at the PHY layer using PHY frames (PHY frames are also referred to as PPDUs) of received wireless signals.
[0082] In some examples, the motion detection algorithm employed by the wireless motion detection system uses a channel response calculated based on an orthogonal frequency division multiplexing (OFDM)-based PHY frame (including a PHY frame generated by the Wi-Fi 6 standard). In some instances, an OFDM-based PHY frame may be a frequency domain signal having multiple fields, each field having a corresponding frequency domain signal. With such OFDM-based PHY frames, there are typically two types of PPDU fields that allow a Wi-Fi receiver to estimate a channel. The first is a legacy training field, and the second is a MIMO training field. Either or both of these fields can be used for motion detection. An example of a MIMO training field that can be used is a so-called "efficient long training field" called HE-PHY (e.g., in the Wi-Fi 6 standard, according to the IEEE 802.11ax standard).
[0083] Figure 3 An example PHY frame 300 including a HE-LTF is shown. Figure 3 The exemplary PHY frame 300 shown in FIG. 1 is from the IEEE 802.11ax standard. In some cases, these and other types of PHY frames including HE-LTF may be used for motion detection. Figure 3 As shown, the exemplary PHY frame 300 includes multiple fields defined in the 802.11 standard: L-STF (legacy short training field), L-LTF (legacy long training field), L-SIG (legacy signal), RL-SIG (repeated legacy signal), HE-SIG-A (high efficiency signal), HE-STF (high efficiency short training field), multiple HE-LTF, data, PE (packet extension). In some instances, the L-LTF field can be used to estimate the channel response that can be provided as an input to the motion detection algorithm. The HE-LTF field provided as a MIMO training field can also be used to estimate the channel response that can be provided as an input to the motion detection algorithm.
[0084] exist Figure 3In the example shown, the HE-LTF can have a variable duration and bandwidth, and in some examples, the PHY frame 300 divides the 20 MHz channel into 256 frequency points (instead of the 64 used by the previous PHY frame version). In this way, the example HE-LTF in the PHY frame 300 can provide four times better frequency resolution (e.g., compared to earlier PHY frame versions) because the individual points represent a frequency bandwidth of 78.125 kHz instead of 312.5 kHz. In addition, the HE-LTF provides more contiguous subcarriers than other fields, so a wider contiguous bandwidth can be used for motion detection. For example, Table I (below) shows the continuous bandwidth and frequency resolution of the HE-LTF field (labeled "HE" in the table) compared to traditional PHY fields (L-STF and L-LTF) and other MIMO training fields (e.g., high throughput (HT) long training field and very high throughput (VHT) long training field).
[0085]
[0086]
[0087] Table 1
[0088] In some IEEE 802.11 standards, the PHY layer is divided into 2 sublayers: the PLCP sublayer (Physical Layer Convergence Procedure) and the PMD sublayer (PHY Medium Dependent). The PLCP sublayer (Physical Layer Convergence Procedure) obtains data from the MAC layer and converts it into a PHY frame format. The format of the PHY frame is also called PPDU (PLCP Protocol Data Unit). The PPDU may include a field for channel estimation. The PMD sublayer (PHY Medium Dependent) provides a modulation scheme for the PHY layer. Many different IEEE802.11-based PHY frame formats are defined. In some examples, the wireless motion detection system uses information derived from OFDM-based PHY frames, such as, for example, those described in the following standard documents: IEEE 802.11a-1999: Traditional OFDM PHY; IEEE802.11n-2009: HT PHY (High Throughput); IEEE802.11ac-2013: VHT PHY (Very High Throughput); IEEE802.11ax (Draft 4.0, March 2019): HE PHY (High Efficiency).
[0089] Other types of PHY layer data may be used, and each PHY layer specification may provide its own PPDU format. For example, some IEEE 802.11 standards may have a header of " <xxx>PHY Specification"==>" <xxx>PHY”==>" <xxx>The PPDU format for the PHY layer specification can be found under the "PPDU Format" section. Figure 3 The exemplary PHY frame 300 shown is a HE PHY frame provided by the ODFM PHY layer of the exemplary 802.11 standard.
[0090] In some IEEE 802.11 standards (e.g., IEEE 802.11a-1999), the OFDM PHY divides a 20 MHz channel into 64 frequency bins. Modulation and demodulation are accomplished using a 64-point complex inverse fast Fourier transform (IFFT) and a fast Fourier transform (FFT). In an exemplary modulation process: data bits are grouped (e.g., depending on a QAM constellation), each group of bits is assigned to one of the subcarriers (or frequency bins); the group of bits is mapped to the complex numbers of each subcarrier depending on the QAM constellation; and a 64-point IFFT is performed to generate complex time-domain I and Q waveforms for transmission. In an exemplary demodulation process: complex I and Q time-domain signals are received; a 64-point FFT is performed to calculate the complex numbers of each subcarrier; each subcarrier complex number is mapped to bits according to the QAM constellation; and bits from each subcarrier are reassembled into data. In a typical modulation or demodulation process, not all 64 subcarriers are used; for example, only 52 subcarriers may be considered valid for data and pilot, and the remaining subcarriers may be considered empty. The PHY layer specifications in the recently developed IEEE 802.11 standard utilize larger channel bandwidths (e.g., 40 MHz, 80 MHz, and 160 MHz).
[0091] Figure 4 An exemplary PHY frame 400 including a very high throughput long training field (also referred to as "VHT-LTF") is shown. Figure 4 The exemplary PHY frame 400 shown in FIG. 4 is from the IEEE 802.11ac standard. A draft of the IEEE 802.11ac standard was published in a document entitled "802.11ac-2013-IEEE Standard for Information technology--Telecommunications and information exchange between systems--Local and metropolitan area networks--Specific requirements--Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications--Amendment 4: Enhancements for Very High Throughput for Operation in Bands below 6 GHz" in December 2018, which can be accessed at https: / / ieeexplore.ieee.org / document / 7797535 and is incorporated herein by reference in its entirety. In some cases, these and other types of PHY frames including VHT-LTF can be used for motion detection.
[0092] like Figure 4 As shown, the exemplary PHY frame 400 includes multiple components defined in the 802.11 standard: L-STF, L-LTF, L-SIG, VHT-SIG-A (very high throughput signal A), VHT-STF (very high throughput short training field), VHT-LTF (very high throughput long training field), VHT-SIG-B (very high throughput signal B), data. The PPDU for legacy, HT, VHT and HE PHY starts with a legacy preamble including L-STF and L-LTF, as shown in FIG. Figure 4 4. As shown in the exemplary PHY frame 400 in FIG. 4. In some cases, the L-LTF can be used for channel estimation. The VHT-LTF, which has a wider bandwidth than the L-LTF and contains similar information, can be used for MIMO channel estimation. The HT-LTF and VHT-LTF are very similar, except that the VHT-LTF allows higher-order MIMO and allows 80 MHz and 160 MHz channels. These fields are beneficial for motion detection because they can provide wider continuous bandwidth and MIMO channel information. With MIMO channel estimation, Nr×Nc channel responses are usually calculated. This provides more information for motion detection. Figure 5 An exemplary MIMO device configuration 500 is shown including a transmitter having Nr antennas and a receiver having Nc antennas. Figure 5 In the example of , Nr×Nc channel responses may be calculated based on the HE-LTF or VHT-LTF or another MIMO training component of the PHY frame.
[0093] In some implementations, the wireless communication device calculates the channel response, for example, by performing a channel estimation process based on a PHY frame. Figure 3 The exemplary PHY frame 300 shown in Figure 4 Channel estimation may be performed using the exemplary PHY frame 400 shown in FIG. 4 , or other types of PHY frames from wireless signals.
[0094] In some instances, the channel information for motion detection may include a channel response generated by channel estimation based on the L-LTF in the PHY frame. The L-LTF in the 802-11ax standard may be equivalent to the LTF in the IEEE 802.11a-1999 standard. The L-LTF may be provided in the frequency domain as an input to a 64-point IFFT. Typically, only 52 of the 64 points are considered valid points for channel estimation; and the remaining points (points [-32, -26) and (26, 31]) are zero. As described in the IEEE 802.11a-1999 standard, the L-LTF may be a long OFDM training symbol comprising 53 subcarriers (including a zero value at DC), modulated by the element sequence L given below:
[0095] L -26,26 ={1,1,-1,-1,1,1,-1,1,-1,1,1,1,1,-1,-1,-1,1,-1,-1,1,-1,1,1,1,0,1,-1,-1,1,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1}
[0096] The example "L" vector shown above represents a complex frequency domain representation of the field at baseband (centered at DC) and is described on page 13 of the draft of the IEEE 802.11a-1999 standard. The draft of the IEEE 802.11a-1999 standard was published in a document entitled "802.11a-1999 - IEEE Standard for Telecommunications and Information Exchange between Systems - LAN / MAN Specific Requirements - Part 11: Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications: High Speed Physical Layer in the 5 GHz Band" and can be accessed at https: / / ieeexplore.ieee.org / document / 815305. The example "L" vector is considered "legacy" because it is part of the original OFDM PHY specification and is considered part of the legacy preamble. Therefore, in later versions of the specification, it is referred to as L-LTF (for Legacy Long Training Field).
[0097] In some instances, the channel information for motion detection may include a channel response generated by channel estimation based on one or more MIMO training fields in a PHY frame (e.g., HE-LTF, HT-LTF, or VHT-LTF field). HE-LTF can be provided in the frequency domain as an input to a 256-point IFFT. With a typical HE-LTF, there are 241 valid points (e.g., instead of 52 in the traditional case). Each point in the HE-LTF represents a frequency range of 78.125kHz, while each traditional point represents a larger frequency range of 312.5kHz. Therefore, HE-LTF can provide higher frequency resolution, more frequency domain data points, and a larger frequency bandwidth, which can provide more accurate and higher resolution (e.g., higher temporal and spatial resolution) motion detection. An exemplary HE-LTF is described on page 561 of the IEEE 802.11ax draft standard as follows: In a 20MHz transmission, the 4x HE-LTF sent on subcarriers [-122:122] is given by equation (27-42).
[0098]
[0099] In some instances, the channel response can be estimated at a receiver device by performing an FFT of a received time domain sequence (e.g., the exemplary L-LTF and HE-LTF sequences shown above) and dividing by the expected result [CH(N) = RX(N) / L(N)]. Figure 6 The 64-point FFT bin 600 in the top portion shows the resulting spectrum that may be obtained from the L-LTF measurement (20 MHz and 40 MHz channels) in an exemplary PHY frame. Figure 6 The 128-point FFT bin 650 in the bottom of FIG. 6 shows the resulting spectrum that can be measured for the same 20 MHz channel from the HE-LTF in an exemplary PHY frame. Figure 6 As shown, HE-LTF can provide higher frequency resolution (more points in the same frequency bandwidth), a higher number of frequency domain data points (more bins), and a larger frequency bandwidth.
[0100] In some aspects of what is described herein, a message initiated by a protocol in a higher layer (e.g., a layer above layers 1 and 2 of the OSI model) can be used to trigger a MIMO transmission from a wireless communication device. MIMO wireless signals can be used for motion detection or other types of wireless sensing applications. In some implementations, the MIMO wireless signal includes a MIMO training field that can be used for motion detection. In some aspects, the HT-LTF, VHT-LTF, or HE-LTF field in a PHY frame of wireless transmission according to the IEEE Wi-Fi standard can be used for motion detection. Such a wireless signal can be sent through space over a period of time, for example, from one wireless communication device to another wireless communication device. MIMO training fields (e.g., HT-LTF, VHT-LTF, or HE-LTF fields) can be identified in the PHY frames of each wireless signal, and channel information can be generated based on the corresponding MIMO training field. The channel information can then be used for wireless sensing of the space during the time period (e.g., detecting the motion of an object, detecting breathing, detecting gestures, etc.).
[0101] Figure 7 is a diagram showing a typical representation of the Open Systems Interconnection (OSI) model 700. Figure 7 As shown, the typical OSI networking model defines seven layers: (layer 1) physical layer, (layer 2) data link layer, (layer 3) network layer, (layer 4) transport layer, (layer 5) session layer, (layer 6) presentation layer, (layer 7) application layer. In some cases, the networking model may define additional or different layers.
[0102] like Figure 7 As shown, each OSI layer provides specified functions and defines specified data objects. User applications operating on a device (e.g., operating in layer 6 and / or layer 7) can communicate using standard network features represented in OSI model 700; user applications can initiate such communication by interacting with the operating system (OS) socket library in the session layer. Figure 7 As shown, the OS socket library exists in layer 5 and, due to standardization, has almost the same API on all modern operating systems (e.g., Linux, Windows, Android, OSX, etc.). Individual sessions can be identified by a "socket handle" returned by the operating system to the user application, and the user application can use the socket handle when interacting with the socket API.
[0103] exist Figure 7 In the exemplary OSI model 700 shown, the transport layer (layer 4) defines how multiple applications talk to each other. Many transport layer protocols are used; the most common are: TCP (Transmission Control Protocol) and UDP (User Datagram Protocol). Applications can choose which protocol to use for communication via the socket API. Transport layer messages and corresponding content are identified by a "port number", which is typically a 16-bit value. Many standardized applications have dedicated port numbers; for example, web servers typically communicate on port 80, and the OS socket library knows to pass data received on port 80 to the socket handle belonging to the web server.
[0104] exist Figure 7 In the exemplary OSI model 700 shown, below the transport layer (layer 4) is the network layer (layer 3). The network layer provides Internet Protocol (IP) resources, which primarily allow multiple devices to be grouped into logical networks. Network layer services typically allow identification of both logical networks and physical devices, as well as providing mechanisms (typically referred to as routing) for different networks to communicate with each other. For example, the network layer may include Internet Protocol version 4 (IPv4), Internet Protocol version 6 (IPv6), or another IP version. The Internet Protocol (IP) can be used as a communication protocol for relaying data between devices and across network boundaries (e.g., through the Internet). In some examples, each device is identified by a logical 32-bit address (e.g., in IPv4) or a 128-bit address (e.g., IPv6) in the network layer. Both IPv4 and IPv6 addresses contain a network portion and a device portion determined based on standardized standards.
[0105] exist Figure 7 In the exemplary OSI model 700 shown, below the network layer (layer 3) are the data link layer (layer 2) and the physical layer (layer 1). The data link layer (also called the MAC layer) handles coordinating how multiple devices communicate using a shared medium (e.g., a shared wireless channel for Wi-Fi or another form of shared medium). In the MAC layer, each device is identified by a 48-bit MAC address. In Wi-Fi networks, the network layer and the data link layer are defined by the IEEE 802.11 standard. The physical layer generates PHY frames for communication between devices.
[0106] In some systems, the motion detection algorithm employed by the wireless motion detection system uses a channel response calculated based on an orthogonal frequency division multiplexing (OFDM) based PHY frame, including a PHY frame defined by the IEEE 802.11 standard for Wi-Fi networks. For OFDM modulation, Wi-Fi signals contain multiple fields that can be used to calculate channel estimates or responses. First, there is a traditional LTF (long training field), which is typically present on every Wi-Fi message. Second, there are MIMO LTFs (HT-LTF, VHT-LTF, HE-LTF). For devices that support HE / VHT / HE modes, a MIMO field is typically present for longer transmissions, and it consumes talk time and may reduce the efficiency of short transmissions.
[0107] In some instances, in order for the motion detection system to measure the channel response, the client / leaf device needs to send a wireless message (e.g., a message addressed to an access point or another device in a Wi-Fi network). The IEEE 802.11 MAC layer standard contains a defined mechanism that provides that if a device receives a data message, the device acknowledges that it was received correctly. This mechanism can provide a form of "probe" / "illumination" in that this allows a 0 payload length MAC frame (empty data frame) to be sent to any Wi-Fi enabled device, knowing that it will be returned with an ACK message. In some systems, a limitation of the empty data / ACK mechanism is that the standard defines that the ACK must be sent using the "legacy" mode because switching to MIMO mode for short transmissions is inefficient. In such a system, wireless messages sent in accordance with the IEEE 802.11 standard do not provide MIMO estimates unless the client / leaf device generates a large enough transmission for the radio to utilize the MIMO transmission mode.
[0108] While some systems may use legacy training fields for motion detection, other systems may not support capturing legacy estimates due to hardware or other constraints, and therefore only provide the ability to extract MIMO estimates. Thus, some systems are limited in the sense that higher layers in the OSI model may be required to elicit MIMO channel estimates, for example, when there are no standardized mechanisms in the MAC / PHY layers and the clients / leafs do not necessarily support non-standard components. In some instances, utilizing higher layers in the OSI model may reduce efficiency, for example, if greater data transmission overhead is required to generate the channel estimate.
[0109] Motion detection algorithms may also benefit from MIMO estimation (e.g., relative to traditional estimation) because multiple antennas on both the transmit and receive sides introduce an element of spatial diversity, with each antenna illuminating or sensing a slightly different view or perspective of the environment due to the physical separation of the antennas. To obtain these and other benefits provided by having MIMO estimation, in some cases, mechanisms using standard components within higher layers in the OSI model may be utilized to induce MIMO channel estimation.
[0110] In some aspects, the systems and techniques described herein provide a solution for inducing MIMO channel estimation using higher layers in the OSI model, for example, using components in the MAC / PHY layer specifications to induce a client / leaf node to generate a message containing a MIMO training field. The solution can exploit the fact that the higher layers encapsulate their messages into the payload of a MAC / PHY "data frame," which can be sent containing a MIMO field. Thus, by inducing a client / leaf node using existing standard components or protocols within the network / transport layer, the MIMO training field can be obtained from the device.
[0111] Figure 8 is a diagram showing an exemplary frame format for the three layers of a typical OSI model. In particular, Figure 8 The figure in FIG. 1 shows the frame format of a TCP message generated by the transport layer, an IPv4 message generated by the network layer, and an 802.11 message generated by the MAC layer. Figure 8 As shown, the OSI model works on the concept of "encapsulation" for message transmission, where data provided from the upper layers is "encapsulated" into the payload field of the message. For reception, the opposite happens. Figure 8 In the example of , data provided in the network layer is included in the payload field of the message in the MAC layer, and data provided in the transport layer is included in the payload field of the message in the network layer.
[0112] In some cases, a wireless communication device may use one or more layers above the MAC layer (e.g., the transport layer, the network layer, or another layer above the data link layer) to initiate a MIMO transmission from another wireless communication device. For example, an access point (AP) in a wireless network (e.g., a mesh node or other type of AP) may generate and send a network layer message or a transport layer message that causes a client device to send a response using MIMO transmission. The following discussion and Fig. 9 , 10 The processing shown in 11A, 11B, 11C, 12A, 12B, and 13 provides examples of systems and techniques that can be used to initiate or otherwise trigger client data transmissions (e.g., MIMO transmissions) for motion detection; other systems and techniques may be used in some instances.
[0113] In some examples, software implemented processing can utilize components in layers above the MAC layer (in some cases, existing components) to enable the client / leaf device to send data. Such processing can be used to implement motion detection functionality using MIMO fields without requiring any software to be added or modified or added on the client / leaf device.
[0114] In some implementations, an address discovery process is used to obtain addresses for communicating with layers above the MAC layer. For example, channel estimates can be defined at the MAC / PHY layer, and the identity of a client / leaf device can be given by its MAC address (e.g., a 48-bit MAC address). In some instances, knowledge of an upper layer logical address of the device (e.g., an IP address) may be required for high-level transmissions to the device, and an address discovery process can be used to obtain the upper layer logical address of the device (e.g., an IP address) from the lower layer physical address of the device (e.g., a MAC address). At least in some contexts, the operation of obtaining an upper layer logical address of a device (e.g., an IP address) from a lower layer physical address of the device (e.g., a MAC address) requires processing that is different (and typically more difficult) than the general process of obtaining a lower layer physical address (e.g., a MAC address) given an upper layer logical address (e.g., an IP address).
[0115] Fig. 9 is a flow chart showing an exemplary process 900 for finding an upper-layer logical address (e.g., an IPv4 address or an IPv6 address) from a lower-layer physical address (e.g., a MAC address). Process 900 may include additional or different operations, and Fig. 9 The operations shown in can be performed in the order shown or in another order. In some cases, Fig. 9 One or more operations shown in 900 may be implemented as a process that includes multiple operations, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated iteratively or in another manner, or performed in another manner. Process 900 may be performed by Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in (eg, client device 232 or AP devices 226, 228) or by other types of devices.
[0116] In some examples, the upper layer logical address obtained from process 900 can be encapsulated in the payload field of the lower layer message. For example, in an implementation using process 900 to obtain a network address, the network address can be encapsulated in the payload field of a MAC layer message (e.g., as Figure 8 As another example, in an implementation where process 900 is used to obtain a transport layer address, the transport layer address may be encapsulated in a payload field of a network layer message (e.g., as Figure 8 ). In some instances, the wireless communication device may create a cache of address mappings. The cache is stored on the wireless communication device and shows mappings between lower layer physical addresses (e.g., MAC addresses) and upper layer logical addresses (e.g., network addresses). The IPv4 protocol or the IPv6 protocol may operate at the network layer, and process 900 queries the cache (which may contain an IPv4 neighbor table or an IPv6 neighbor table, depending on which protocol operates at the network layer) to determine the network address from the lower layer physical address (e.g., MAC address).
[0117] At 902, the cache is queried to determine whether it contains an IPv4 neighbor table. In some implementations, the IPv4 neighbor table may also be referred to as an IPv4 Address Resolution Protocol (ARP) table. At 904, the process 900 determines whether the IPv4 neighbor table is stored in the cache. At 906, in response to determining that the IPv4 neighbor table is stored in the cache, a network address (e.g., an IPv4 address) is obtained from the cache, and an Internet Protocol (IP) variable for the IPv4 address is set and initialized. As an example, at 906, an IPv4 neighbor table variable is set and initialized. Figure 8 The fields of the network layer packet shown in .
[0118] At 908, in response to determining that the IPv4 neighbor table is not stored in the cache, the cache is queried again to determine whether it contains an IPv6 neighbor table. At 910, the process 900 determines whether the IPv6 neighbor table is stored in the cache. At 912, in response to determining that the IPv6 neighbor table is stored in the cache, a network address (e.g., an IPv6 address) is obtained from the cache, and an IP variable for the IPv6 address is set and initialized.
[0119] At 914, in response to determining that the IPv6 neighbor table is not stored in the cache, the network is scanned. As an example, at 914, the process 900 iterates through the IPv4 and IPv6 link-local addresses to determine whether one or more of the IPv4 and IPv6 link-local addresses elicits a response. At 916, the process 900 determines whether an error has occurred. In some instances, an error occurs when the scan performed at 914 does not elicit any responses. At 918, in response to determining that an error has occurred, a delay of a predetermined time (e.g., in the range of about 5 seconds to about 15 seconds) occurs before iterating the process 900 from 902. Fig. 9 In the example shown, 10 seconds is depicted as the delay, but another delay may be used in other examples. At 920, in response to determining that an error has not occurred (e.g., the scan performed at 914 elicited a response), the cache is updated at 920 to reflect the mapping between the low-level physical address (e.g., MAC address) and the IPv4 or IPv6 link-local address that provided the response. From 920, process 900 iterates from 902.
[0120] One exemplary technique that may be used to induce MIMO transmissions from a wireless communication device is generally referred to as "ICMP Ping." In some cases, an ICMP Ping process is defined in the network layer, and there are off-the-shelf applications to generate such messages (e.g., ping, ping6, fping). The ICMP Ping process may be explicitly defined to provide a response to a given request, and may be used for network connection failure troubleshooting or other purposes. The ICMP Ping process may be natively built into the network stack, and may provide a mechanism for causing client / leaf devices to generate data transmissions in certain instances. ICMP Ping may utilize IPv4, IPv6, or another similar network layer protocol. However, some devices (for security, privacy, or other reasons) disable ICMP. In the event that ICMP is disabled, a device that has received a ping message may not generate a response, and therefore may not induce a wireless transmission that could generate a channel response measurement. In some cases, existing ICMP Ping and related processes may be modified to provide advantages for wireless motion detection systems. For example, Fig.11A , 11B The ICMPPing process shown in and 11C is customized for sending periodic requests, can provide a feedback mechanism to ensure responses are received, and can provide better data efficiency (e.g., by eliminating padding and unnecessary data inserted by off-the-shelf applications). Other types of ICMP Ping processes can be used.
[0121] Another exemplary technique that may be used to initiate MIMO transmissions from wireless communication devices is referred to herein as "ARPPing," which in some implementations may utilize aspects of a standardized ARP exchange mechanism. The Address Resolution Protocol (ARP) is a protocol typically defined at the network layer; there are off-the-shelf applications (e.g., arping) for generating repetitive standardized ARP exchanges. In many network contexts, communication is not possible without ARP, and ARP is considered mandatory for each device. For example, all IP networked devices may require ARP. A device may use ARP to obtain the data link layer address of another device (which may be required for communication). The standardized ARP exchange process is typically used to find the MAC address of the device that holds a given network layer (IP) address. In some systems, four addresses are utilized: (1) sender network layer address, (2) sender MAC layer address, (3) target network layer address, and (4) target MAC layer address. Both sender addresses (1 and 2) are known to the requesting party because they are local addresses of the device making the request. When the target network layer address (3) is known but the target MAC layer address (4) is unknown, a standardized ARP exchange may be used. The standardized ARP exchange sends a broadcast MAC frame (destination MAC address = ff:ff:ff:ff:ff:ff), which means that every device on the network receives the message. However, only devices that hold a given target network layer (IP) address can respond, and the source MAC address can be extracted from the response. In some instances, the exchange can create a request / response that is encapsulated into a MAC / PHY MIMO data transmission from the responding device. However, in other instances, the standardized ARP exchange does not trigger a MIMO transmission from the responding device. For example, some modern wireless communication devices may respond to a standardized ARP exchange request using a traditional MAC / PHY data transmission, or may be cached instead of actually sent.
[0122] As described above, a standardized ARP request is a broadcast Layer 2 transmission (identified by a destination MAC address field set to ff:ff:ff:ff:ff:ff) that generally requires all devices belonging to the same logical network to receive the message. This means that all Layer 2 network devices (such as switches, bridges, wireless access points, etc.) need to send ARP requests to all clients, and may cause a single request to flood the entire network. Flooding the entire network by causing a single device to send a response for the purpose of motion sensing is undesirable and may introduce negative effects (e.g., power consumption, call efficiency, or wired network resources). These negative effects may affect the network globally regardless of whether a particular client participates in the motion detection system. In some cases, the ARP Ping process described herein can be implemented in a more efficient manner and avoid the negative effects described above. For example, Fig.13 The ARP Ping process shown in can send an ARP request with a known destination MAC address (and no broadcast MAC) to eliminate the broadcast nature of the request. For example, the ARP request can be addressed to a device seeking MIMO transmission. Other types of ARP Ping processes can be used.
[0123] Another exemplary technique that may be used to induce MIMO transmissions from a wireless communication device is referred to herein as "TCP Ping," which in some implementations may utilize aspects of a standardized TCP handshake mechanism. In some cases, TCP Ping may be used to probe a wireless communication device to obtain a wireless signal that may be used by a motion detection system. The TCP Ping process may be used to induce MIMO transmissions from client / leaf devices in a variety of contexts, including scenarios where the client / leaf device is configured not to respond to ICMP requests (e.g., a device that does not have ICMP enabled), and scenarios where ARP responses from client / leaf devices result in traditional Wi-Fi transmissions or cached responses. The Transmission Control Protocol (TCP) is typically defined in the transport layer; TCP generally operates as a connection-oriented protocol, meaning that data exchange generally occurs in two directions, which may be used to induce MIMO transmissions from a device. An exemplary TCP Ping process in Fig. 12A , 12B Other types of TCP Ping processing may be used.
[0124] In some contexts, a typical implementation of a standardized TCP handshake begins with a client "requesting" to begin a connection with a host. To begin the transaction, the client populates the SRC and DST port fields, and sets the SYN flag. The host can take one of three actions: (1) it can accept the request by responding with the ACK flag set; (2) it can reject the request by responding with the RST flag set; or (3) it can do nothing and simply drop the frame. If there is an application listening on the given port on the host, and the connection has been accepted, then a response from action (1) is received. If there is no application listening on the given port on the host, or the port may be blocked, then a response from action (2) is typically received. And if there is a firewall with explicit instructions to drop any transmissions received by a particular host / port, then action (3) usually occurs. Technically, the result of action (1) or action (2) can create a ping request / response action that can produce a MIMO transmission. However, in some instances, action (1) is a less desirable response because the client then requires an additional message exchange to properly close the connection (and thus consumes more airtime and reduces efficiency).
[0125] In some implementations, Fig. 12A , 12B The TCP Ping process shown in performs a "port scan" that identifies a set of ports that respond with the result of action (2). For example, the "port scan" can be performed in the same manner as the initial step in a standardized TCP handshake, or in other ways. After a list of ideal ports has been obtained, one or more of them can be targeted for the TCP Ping process. In some implementations, during the scanning phase, delays can be added between requests (without delays, the requests may eventually be discarded); the scanning phase for destination ports need not be linear (ports 1 to 65535) (for example, a 16-bit maximum length PR sequence can be used to select the destination port); and the TCP source port can be randomized (for example, a 16-bit maximum length PR sequence can be used for this). In some cases, it may be sufficient to scan and cycle through the 16 ports that respond to SYN with RST. This may be true where the source ports are randomized in a manner that is difficult to detect. New sets of 16 ports can also be scanned periodically, however, this may not be required in all cases, for example, when probing is performed in 100ms periods.
[0126] Fig.10 is a state machine diagram representing an exemplary process 1000 for initiating a MIMO transmission from a wireless communication device. Process 1000 may include additional or different operations, and Fig.10 The operations shown in can be performed in the order shown or in another order. Fig.10 In the example of FIG, the ICMP ping process is followed by the TCP ping process, and the TCP ping process is followed by the ARP ping process. However, in other implementations, any sequence or order of ping processes can be used. In some cases, Fig.10 One or more operations shown in 1000 may be implemented as a process including multiple operations, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated in an iterative or other manner, or performed in another manner. Process 1000 may be implemented as a process including multiple operations, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated in an iterative or other manner, or performed in another manner. Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in FIG. 2 (eg, client device 232 and AP devices 226 , 228 ) or by other types of devices.
[0127] Fig.10 The illustrated implementation of the exemplary process 1000 may utilize an ICMP Ping process, a TCP Ping process, an IPv4 ARP Ping process, an IPv6 Neighbor Discovery Protocol, or a combination of multiple types of Ping processes. The process 1000 may be modified to utilize additional or different types of Ping processes.
[0128] Fig.10 The exemplary process 1000 shown in combines multiple different ping mechanisms into a single protocol that can be controlled by a state machine. Fig.10 As shown, by having each mechanism provide feedback to the state machine, process 1000 can select the best ping mechanism that can be used to generate channel information to be used for motion detection. In some cases, feedback within each sub-process is used to help the state machine determine which mechanism is best to use and can ensure that a reliable mechanism is selected. Fig.10 In the example shown, the three ping mechanisms each provide feedback to the motion detection system so that the motion detection system can select one of the mechanisms based on the feedback (e.g., the mechanism that provides the best data for motion detection can be selected), and the motion detection system can select different mechanisms for each client / leaf node used by the motion detection system.
[0129] At 1002, a network layer address of a device is determined. For example, the network layer address of the device may be determined using Fig. 9 The IP address of the device may be obtained by performing process 900 shown in FIG. 9 or other types of processes.
[0130] At 1010, 1012 and 1014, ICMP Ping processing is performed. Fig.10 As shown, the ICMP Ping process includes a set ICMP Ping operation at 1010, an ICMP Ping operation at 1012, and a stop ICMP Ping operation at 1014. The ICMP Ping process may include additional or different operations. In some instances, the ICMP Ping process triggers a MIMO transmission from a device (e.g., a device corresponding to the IP address found at 1002). In some cases, the ICMP Ping process does not trigger a MIMO transmission from the device, and process 1000 enters the TCP Ping process. In some implementations, two types of feedback can be used to make a decision whether to perform TCP Ping processing: (1) response reception delay, and (2) channel state information (CSI) generation rate. Either or both of these criteria can be used to evaluate the ICMP Ping process, and if the results are insufficient, optionally switch to the TCP Ping process.
[0131] At 1020, 1022 and 1024, TCP Ping processing is performed. Fig.10 As shown, the TCP Ping process includes a set TCP Ping operation at 1020, a TCP Ping operation at 1022, and a stop TCP Ping operation at 1024. The TCP Ping process may include additional or different operations. In some instances, the TCP Ping process triggers a MIMO transmission from a device (e.g., a device corresponding to the IP address found at 1002). In some cases, the TCP Ping process does not trigger a MIMO transmission from the device, and the process 1000 enters the ARP Ping process. In some implementations, two types of feedback can be used to make a decision whether to enter the ARP Ping process: (1) response reception delay, and (2) channel state information (CSI) generation rate. Either or both of these criteria can be used to evaluate the TCP Ping process, and if the results are insufficient, optionally switch to the ARP Ping process.
[0132] At 1030, 1032 and 1034, ARP Ping processing is performed. Fig.10 As shown, in an instance where the IP address is an IPv4 address, the ARP Ping process includes a set IPv4 ARP Ping operation at 1030, an IPv4 ARP Ping operation at 1032, and a stop IPv4 ARP Ping operation at 1034. In an instance where the IP address is an IPv6 address, the ARP Ping process includes a set IPv6 neighbor discovery protocol operation at 1030, an IPv6 neighbor discovery protocol operation at 1032, and a stop IPv6 neighbor discovery protocol operation at 1034. The ARP Ping process may include additional or different operations. In some instances, the ARP Ping process triggers a MIMO transmission from the device (i.e., the device corresponding to the IP address found at 1002). In some cases, the ARP Ping process does not trigger a MIMO transmission from the device, and the process 1000 enters 1040. In some implementations, two types of feedback can be used to make a decision whether to enter operation 1040: (1) response reception delay, and (2) channel state information (CSI) generation rate. Either or both of these criteria may be used to evaluate the ARP Ping process and optionally iterate to another mechanism if the results are insufficient. At 1040 , the neighbor cache is flushed and the process 1000 enters another iteration starting at 1002 .
[0133] Fig.11A A flow chart representing an exemplary process 1100 for setting up ICMP Ping is shown. Fig. 11B A flow chart illustrating an exemplary process 1110 for stopping ICMP Ping. Fig. 11C A flowchart showing an exemplary process 1120 for performing ICMP Ping is shown. The respective processes 1100, 1110, 1120 may include additional or different operations, and Fig.11A , 11B The operations shown in and 11C may be performed in the order shown or in another order. In some cases, Fig.11A , 11B One or more of the operations shown in 1100, 1110, 1120 may be implemented as a process that includes multiple processes, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated iteratively or otherwise, or performed in another manner. Processes 1100, 1110, 1120 may be implemented as a process that includes multiple processes, sub-processes for other types of routines. Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and 102B shown in FIG. Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in (eg, client device 232 and AP devices 226, 228) or by other types of devices.
[0134] Fig.11A , 11B The exemplary processes 1100, 1110, 1120 shown in 11C can be used, for example, to perform Fig.10 1010, 1014, 1012 in the exemplary process 1000 shown in FIG. In some implementations, Fig.11A , 11B The exemplary processes 1100, 1110, 1120 shown in FIG. 11C may be used in another context. In some implementations, for applications with a wireless motion detection system, Fig.11A , 11B The ICMP Ping process represented in and 11C may provide advantages such as those described above.
[0135] Fig.11A The exemplary process 1100 in shows the initialization logic for ICMP Ping processing. In some implementations, the process 1100 initializes the computing resources and message fields required for the ICMP Ping process 1110. The exemplary process 1100 includes (at 1101) determining whether the timer has been successfully set. In some implementations, setting the timer includes initiating an operating system (OS) level call requesting the OS to set a timer handle. In some instances, there may be no computing resources to set the timer handle, and the OS may return an error message indicating that no such resources exist, thereby indicating that the timer has not been successfully set. Conversely, when there are sufficient computing resources to set the timer handle, the OS may return a message indicating the successful setting of the timer handle.
[0136] In response to determining that the timer has not been successfully set, the timer may be reset (e.g., by performing Fig. 11B 1100) terminates the ICMP Ping mechanism. Conversely, in response to determining that the timer has been successfully set, it is determined (at 1103) whether the socket has been successfully opened. In some implementations, setting the socket includes initiating an OS-level call requesting the OS to set a socket handle. In some instances, there may be no computing resources to set the socket handle, and the OS may return an error message indicating that there are no such resources, thereby indicating that the socket has not been successfully set. Conversely, when there are sufficient computing resources to set the socket handle, the OS may return a message indicating the successful setting of the socket handle.
[0137] In response to determining that the socket has not been successfully opened, the socket may be opened (e.g., by performing Fig. 11B The process 1110 shown in 1100 terminates the ICMP Ping mechanism. Instead, in response to determining that the socket has been successfully opened, the process 1100 continues to initialize the original ICMP echo request frame (e.g., at 1105). At 1105, the fields required for the ICMP Ping message are initialized and placed in the payload of the IPv4 or IPv6 frame.
[0138] At 1107, a sequence counter is initialized to zero. The sequence counter tracks the number of ICMP Ping messages sent, and each ICMP Ping message is associated with (e.g., Fig. 11C At 1109, CSI rate feedback is initialized. In some implementations, the device that initiates the MIMO transmission can provide CSI to the device that sends the ICMP Ping message. By initializing CSI rate feedback at 1109, CSI can be obtained from the MIMO transmission initiated by the ICMP Ping message, and the rate at which CSI is received can be determined to find out whether CSI is being received at a fast enough rate to accurately or reliably detect motion in the space 200, 201.
[0139] Fig. 11B The exemplary process 1110 in FIG. 1 shows termination logic for the ICMP Ping process. In some implementations, the process 1110 releases the computing resources requested in the initialization process 1100. At 1111, the timer (e.g., requested at 1101) is disabled, and at 1113, the socket (e.g., requested at 1103) is closed. In some implementations, the timer is disabled and the socket is closed by an OS-level call that indicates to the OS that these resources are no longer needed.
[0140] Fig. 11C The exemplary process 1120 in shows the process of performing ICMP Ping. In some implementations, ICMPPing includes (e.g., using operations at 1121, 1123, 1125, 1127, 1129, 1131) sending a predetermined number of consecutive ICMP Ping messages. In some instances, the predetermined number of consecutive ICMP Ping messages may be referred to as an ICMP Ping message block. The number of consecutive ICMP Ping messages within a block (referred to as a "block size (BLOCKSIZE)") may be an application-specific adjustment parameter, such as 64 ICMP Ping messages. The "block size" may also be set based on the period over which spaces 200, 201 are sampled for motion. In some implementations, spaces 200, 201 are sampled every 100 milliseconds, and a reasonable "block size" is equal to 64 ICMP Ping messages. After the ICMP Ping message block has been sent, process 1120 (eg, using operations at 1133, 1135, 1137, 1139) analyzes the received responses to determine whether MIMO transmission has been successfully initiated by the ICMP Ping message block or whether additional ICMP Ping message blocks need to be sent.
[0141] At 1121, the ICMP Ping message is updated. In some instances, the ICMP Ping message may be referred to as an echo request frame, and updating the ICMP Ping message may include updating a field (e.g., a checksum field) of the ICMP Ping message. At 1123, a timer is waited for to tick. The timer tick allows a predetermined time period (e.g., approximately 100 milliseconds) to pass so that a wireless signal (e.g., a MIMO transmission) can be received in response to a previously sent ICMP Ping message. In some instances, the predetermined time period may be equal to the time period for sampling the spaces 200, 201 for motion. After the timer tick occurs, at 1125, the timestamp of the ICMP Ping message updated at 1121 is determined. In some instances, the timestamp of the ICMP Ping message matches the current sequence number. At 1127, the ICMP Ping message updated at 1121 is sent. In some implementations, the ICMP Ping message may be referred to as an ICMP echo request.
[0142] At 1129, a determination is made as to whether a predetermined number of consecutive ICMP Ping messages (e.g., a "chunk size") have been sent. In response to determining that the predetermined number of consecutive ICMP Ping messages have not been sent, a sequence counter is incremented (at 1131), and process 1120 is iterated from 1121. In response to determining that the predetermined number of consecutive ICMP Ping messages have been sent, a feedback or checking mechanism is performed.
[0143] In exemplary process 1120, a feedback or checking mechanism (e.g., including operations 1133, 1135, 1137, 1139) is performed after the ICMP Ping message block has been sent. At 1133, the timestamps of the received responses are processed to determine the difference between the time when the corresponding ICMP Ping message was sent and the time when its corresponding response was received (e.g., obtained from the timestamp associated with the ICMP Ping message). If the time difference associated with any ICMP Ping message within the ICMP Ping message block is greater than a threshold, the entire ICMP Ping message block is considered a failed block. This failure logic can be implemented within operation 1133 of processing the timestamps of the received responses.
[0144] At 1135, it is determined whether the number of consecutive failed blocks is greater than a threshold number of failures. Fig. 11C In the example shown, the threshold number of failures is depicted as 10, but other integer threshold numbers may be used in other examples. A determination that the number of consecutive blocks of failures is greater than the threshold number of failures may indicate that repeated blocks of ICMP Ping messages have failed to elicit a successful MIMO transmission from the wireless communication device. Thus, in response to a determination that the number of consecutive blocks of failures is greater than the threshold number of failures, the ICMP Ping mechanism may be terminated in favor of trying other types of mechanisms.
[0145] In response to determining that the number of consecutive failed blocks is not greater than the threshold number of failures, an auxiliary feedback check is performed. Fig. 11C The checks performed at 1137 and 1139 determine the rate at which MIMO transmissions (including CSI) are received in response to the ICMP Ping message blocks. If the client / leaf device encapsulates the ICMP Ping response in a MAC data frame that does not contain the MIMO training field, the response time may pass the check at 1135, but in the absence of the MIMO training field, there may be no CSI output from the radio. Therefore, the auxiliary checks at 1137 and 1139 can be used to ensure that the ICMP Ping message block elicits a response that contains the MIMO training field.
[0146] At 1137, it is determined whether CSI rate feedback is enabled, and if so, it is determined (at 1139) whether the average CSI rate is greater than or equal to twice the period over which spaces 200, 201 are sampled for motion. A determination that the average CSI rate is greater than or equal to twice the period over which spaces 200, 201 are sampled may indicate that MIMO transmissions (including CSI) are not being received at a rate fast enough to accurately or reliably detect motion in spaces 200, 201. Therefore, in response to a determination that the average CSI rate is greater than or equal to twice the period over which spaces 200, 201 are sampled, the ICMP Ping mechanism may be terminated in favor of trying other types of mechanisms. Conversely, if CSI rate feedback is not enabled, or if the average CSI rate is less than twice the period of spaces 200, 201, the sequence counter is incremented (at 1131) and process 1120 iterates from 1121.
[0147] Fig. 12A A flow chart representing an exemplary process 1200 for setting up TCP Ping is shown. Fig. 12B A flowchart showing an exemplary process 1210 for performing TCP Ping is shown. The respective processes 1200, 1210 may include additional or different operations, and Fig. 12A and 12B The operations shown in can be performed in the order shown or in another order. In some cases, Fig. 12A and 12B One or more of the operations shown in 1200 and 1210 may be implemented as a process including multiple operations, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated iteratively or in another manner, or performed in another manner. Processes 1200 and 1210 may be implemented as a process including multiple operations, sub-processes for other types of routines. Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and 102B shown in FIG. Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in (eg, client device 232 and AP devices 226, 228) or by other types of devices.
[0148] Fig. 12A , 12B The exemplary processes 1200, 1210 shown in FIG. 1 may be used, for example, to perform Fig.10 1020, 1022 in the exemplary process 1000 shown in FIG. In some implementations, Fig. 12A , 12B The example processes 1200 , 1210 shown in FIG. 1 may be used in another context.
[0149] The exemplary process 1200 determines the number of valid TCP ports in the network, obtains valid local interface IP addresses, and initializes the computing resources and message fields required by the TCP Ping process 1210. The exemplary process 1200 includes (at 1201) scanning the network for TCP ports. In some implementations, the network is scanned for TCP ports by sending TCP packets with a set synchronization (SYN) flag to each port identifier. For example, Figure 8 A TCP packet with various fields, including fields for various flags, is shown. Figure 8 In some examples, the port identifier is a 16-bit identifier, and a TCP packet with the SYN flag set is sent to each unique 16-bit identifier. A valid TCP port may respond to a TCP packet with the SYN flag set with a TCP packet with the reset (RST) flag set. For example, the SYN flag may be set in a TCP packet sent in response. Figure 8 At 1203, it is determined whether there is more than one valid TCP port. In some implementations, the number of valid TCP ports is determined by counting the number of received TCP packets with the RST flag set.
[0150] In response to determining that there are less than or equal to one valid TCP port, the TCP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). Conversely, in response to determining that there are more than one valid TCP port, it is determined (at 1205) whether the timer has been successfully set. In some implementations, an OS-level call similar to the OS-level call described for operation 1101 can be used to determine whether the timer has been successfully set.
[0151] In response to determining that the timer has not been successfully set, the TCP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). Conversely, in response to determining that the timer has been successfully set, it is determined (at 1207) whether the socket has been successfully opened. An OS-level call similar to the OS-level call described for operation 1103 may be used to determine whether the socket has been successfully set.
[0152] In response to determining that the socket has not been successfully opened, the TCP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). However, in response to determining that the socket has been successfully opened, a local interface IP address is requested (at 1209). In some implementations, requesting the local interface IP address includes initiating an OS-level call to request the local interface IP address from the OS. At 1211, it is determined whether a valid local interface IP address has been obtained. When there are enough computing resources available for the OS to provide the local interface IP address, a valid local interface IP address is obtained. In some instances, there may be no computing resources to provide the local interface IP address, and the OS may return an error message indicating this. Therefore, when there are not enough computing resources available to provide the local interface IP address, a valid local interface IP address cannot be obtained.
[0153] In response to determining that a valid local interface IP address has not been obtained, the TCP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). Conversely, in response to determining that a valid local interface IP address has been obtained, the variables of the TCP Ping message are set (at 1213). For example, at 1213, the variables are set Figure 8 The various fields of the exemplary TCP packet shown in FIG. In some instances, the TCP Ping message may be referred to as a datagram (in Fig. 12A ) and the datagram's confirmation variable may be set at 1213 (in Fig. 12A is indicated as "ack" in Figure 8 In the example, it is shown as a flag "ack"), address variables (in Fig. 12A Indicated as "addr" in Figure 8 The combination of variables that are set may depend, at least in part, on whether the IPv4 or IPv6 protocol is used at the network layer.
[0154] At 1215, the TCP fields and contents of the datagram are initialized. For example, at 1215, the TCP fields and contents of the datagram are initialized. Figure 8 The various fields of the TCP packet shown in . At 1217, set the function for selecting (in Fig. 12A The file descriptor indicated by "select()" in Fig. 12A In some instances, the selection function is configured to notify the OS to generate an alarm when an event included in the file descriptor has occurred. In some implementations, the file descriptor may include the receipt of a TCP packet with a set RST flag, the expiration of a timer, or both. Thus, in such implementations, the OS generates an alarm when the timer has expired or when a TCP packet with a set RST flag is received. In some instances, the timer is set to expire after a predetermined time period, which may be equal to the time period for sampling the space 200, 201 for motion (e.g., 100 milliseconds in some instances).
[0155] At 1219, CSI rate feedback is initialized. In some implementations, the device initiating the MIMO transmission can provide CSI to the device sending the ICMP Ping message. By initializing CSI rate feedback at 1219, CSI can be obtained from the MIMO transmission initiated by the TCP Ping message, and the rate at which CSI is received can be determined to find out whether the CSI is received at a rate fast enough to accurately or reliably detect motion in the space 200, 201.
[0156] Fig. 12B The exemplary process 1210 in shows the process of performing TCP Ping. In some implementations, TCP Ping includes sending a predetermined number of consecutive TCP Ping messages (e.g., using operations at 1221, 1223, 1225, 1227, 1229, 1231, 1233, 1235, 1237). In some instances, the predetermined number of consecutive TCP Ping messages can be referred to as a datagram block. The number of consecutive datagrams within a block (referred to as a "block size") can be an application-specific adjustment parameter, such as 64 datagrams. The "block size" can depend on the period over which the spaces 200, 201 are sampled for motion. In some implementations, the spaces 200, 201 are sampled every 100 milliseconds, and a reasonable "block size" is equal to 64 datagrams. After the datagram block has been sent, process 1210 (eg, using operations at 1239, 1241, 1243, 1245) analyzes the received responses to determine whether a MIMO transmission has been successfully initiated by the datagram block or whether additional datagram blocks need to be sent.
[0157] At 1221, a select function is performed. The select function waits for an event included in a file descriptor to occur. In some implementations, the file descriptor may include the receipt of a TCP packet with a set RST flag, the expiration of a timer, or both. In essence, at 1221, a period of time is allowed to elapse so that a wireless signal (e.g., a MIMO transmission) can be received in response to a previously sent TCP Ping message.
[0158] After the OS has generated the alarm, it is determined (at 1223) whether the timer has expired. The determination at 1223 ascertains whether the alarm at 1221 can be attributed to the expiration of the timer. In response to determining that the timer has not expired, it is determined (at 1225) whether a TCP packet with a set RST flag is received. The determination at 1225 ascertains whether the alarm at 1221 can be attributed to the receipt of a TCP packet with a set RST flag. In response to determining that a TCP packet with a set RST flag is not received, iterative processing 1210 is started at 1221. In contrast, in response to determining that a TCP packet with a set RST flag is received, a timestamp of the received datagram is obtained (at 1227), and the timestamp is used to indicate the time when the datagram was received. Iterative processing 1210 is then started at 1221.
[0159] In contrast, in response to determining that the timer has expired, the datagram is updated (at 1229). In some examples, the effective source port is updated at 1229 (at Fig. 12B Indicated as "port" in Figure 8 Source port) and the effective destination port (shown as the "source port" in Fig. 12B Indicated as "dport" in Figure 8 As an example, when scanning a network for valid TCP ports, port identifiers for valid source and destination ports may be obtained at 1201 and 1203.
[0160] At 1231, the timestamp of the datagram updated at 1229 is determined. In some instances, the timestamp of the datagram matches the current sequence number. At 1233, the datagram updated at 1229 is sent (e.g., from a valid source port to a valid destination port). In some implementations, the datagram is sent as a TCP packet with the SYN flag set.
[0161] At 1235, a determination is made as to whether a predetermined number of consecutive datagrams (e.g., a "chunk size") have been sent. In response to determining that the predetermined number of consecutive datagrams have not been sent, a sequence counter is incremented (at 1237), a valid source port is pseudo-randomly selected, and the next valid destination port is selected, and process 1210 is iterated from 1221. In response to determining that the predetermined number of consecutive datagrams have been sent, a feedback or checking mechanism is performed.
[0162] In exemplary process 1210, a feedback or checking mechanism (e.g., including operations 1239, 1241, 1243, 1245) is performed after a block of datagrams has been sent. At 1239, the timestamps of the received responses are processed to determine the difference between the time when the corresponding datagram was sent and the time when its corresponding response was received (e.g., obtained from the timestamp associated with the datagram). If the time difference associated with any datagram within the block of datagrams is greater than a threshold, then the entire block of datagrams is considered a failed block. This failure logic can be implemented within operation 1239 of processing the timestamps of the received responses.
[0163] At 1241, it is determined whether the number of consecutive failed blocks is greater than a threshold number of failures. Fig. 12B In the illustrated example, the threshold number of failures is depicted as 10, but other integer threshold numbers may be used in other examples. A determination that the number of consecutive failed blocks is greater than the threshold number of failures may indicate that repeated blocks of datagrams (or TCP Ping messages) have failed to elicit a successful MIMO transmission from the wireless communication device. Thus, in response to a determination that the number of consecutive failed blocks is greater than the threshold number of failures, the TCP Ping mechanism may be terminated in favor of trying other types of mechanisms.
[0164] In response to determining that the number of consecutive failed blocks is not greater than the threshold number of failures, an auxiliary feedback check is performed. Fig. 12B 1243 and 1245). The checks performed at 1243 and 1245 determine the rate at which MIMO transmissions (including CSI) are received in response to the datagram block. If the client / leaf device encapsulates TCP packets with the SYN flag set in a MAC data frame that does not contain the MIMO training field, the response time may pass the check at 1241, but in the absence of the MIMO training field, there may be no CSI output from the radio. Therefore, the auxiliary checks at 1243 and 1245 can be used to ensure that the datagram block elicits a response that contains the MIMO training field.
[0165] At 1243, it is determined whether CSI rate feedback is enabled, and if so, it is determined (at 1245) whether the average CSI rate is greater than or equal to twice the period over which the spaces 200, 201 are sampled for motion. A determination that the average CSI rate is greater than or equal to twice the period over which the spaces 200, 201 are sampled may indicate that the MIMO transmission (including CSI) is not being received at a rate fast enough to accurately or reliably detect motion in the spaces 200, 201. Thus, in response to a determination that the average CSI rate is greater than or equal to twice the period over which the spaces 200, 201 are sampled, the TCP Ping mechanism may be terminated in favor of trying other types of mechanisms. Conversely, if CSI rate feedback is not enabled, or if the average CSI rate is less than twice the period over which the spaces 200, 201 are sampled, then (at 1237) the sequence counter is incremented, a valid source port is pseudo-randomly selected, and the next valid destination port is selected, and the process 1210 is iterated from 1221.
[0166] Fig.13 A flowchart showing an exemplary process 1300 for setting up ARP Ping is shown. Process 1300 may include additional or different operations, and Fig.13 The operations shown in can be performed in the order shown or in another order. In some cases, Fig.13 One or more operations shown in 1400 may be implemented as a process that includes multiple operations, sub-processes for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated iteratively or in another manner, or performed in another manner. Process 1400 may be performed by Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in FIG. 2 (eg, client device 232 and AP devices 226 , 228 ) or by other types of devices.
[0167] Fig.13 The exemplary process 1300 shown may be used, for example, to perform Fig.10 Operation 1030 of the exemplary process 1000 is shown. In some implementations, Fig.13 The exemplary process 1300 shown in FIG. 1 can be used in another context. In some implementations, for applications with a wireless motion detection system, for example, compared to using standard tools (e.g., arping), Fig.13 The ARP Ping process shown in may provide advantages. For example, Fig.13 The ARP Ping process represented in can provide an ARP request without a broadcast MAC, but instead with an expected destination MAC address (which is known), which can eliminate the broadcast nature of the ARP request.
[0168] The exemplary process 1300 is used when the IPv4 protocol is operating at the network layer, and at 1301, a determination is made whether the IPv4 protocol is to be used. When the IPv4 protocol is to be used, Fig. 9 The cache queried at 902 in 1300 contains an IPv4 neighbor table, and thus the determination made at 1301 can be made based on whether an IPv4 neighbor table exists in the cache queried at 902. In response to determining that the IPv4 protocol is not used, the ARP Ping setup can be terminated (e.g., in favor of trying other types of mechanisms).
[0169] Conversely, in response to determining that the IPv4 protocol is used, it is determined (at 1303) whether the timer has been successfully set. In some implementations, an OS-level call similar to the OS-level call described for operation 1101 can be used to determine whether the timer has been successfully set.
[0170] In response to determining that the timer has not been successfully set, the ARP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). Conversely, in response to determining that the timer has been successfully set, it is determined (at 1305) whether the socket has been successfully opened. An OS-level call similar to the OS-level call described for operation 1103 may be used to determine whether the socket has been successfully set.
[0171] In response to determining that the socket has not been successfully opened, the ARP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). However, in response to determining that the socket has been successfully opened, (at 1307) a request is made for a local interface IP address and a MAC address. In some implementations, requesting a local interface IP address and a MAC address includes initiating an OS-level call that requests a local interface IP address and a MAC address from the OS. At 1309, it is determined whether a valid local interface IP address has been obtained. When there are enough computing resources available for the OS to provide a local interface IP address, a valid local interface IP address is obtained. In some instances, there may be no computing resources to provide a local interface IP address, and the OS may return an error message indicating this. Therefore, when there are not enough computing resources available to provide a local interface IP address, a valid local interface IP address cannot be obtained.
[0172] In response to determining that a valid local interface IP address has not been obtained, the ARP Ping setup is terminated (e.g., in favor of trying other types of mechanisms). In contrast, in response to determining that a valid local interface IP address has been obtained, the process 1300 (e.g., at 1311) continues to initialize the original ARP request frame. At 1311, the fields required for the ARP Ping message are initialized and placed in the payload of the IPv4 frame.
[0173] At 1313, CSI rate feedback is initialized. In some implementations, the device that initiated the MIMO transmission can provide CSI to the device that sent the ARP Ping message. By initializing CSI rate feedback at 1313, CSI can be obtained from the MIMO transmission initiated by the ARP Ping message, and the rate at which CSI is received can be determined to find out whether the CSI is received at a rate fast enough to accurately or reliably detect motion in the space 200, 201.
[0174] Fig.14 A flow chart showing an exemplary process 1400 for initiating a MIMO transmission from a wireless communication device is shown. Process 1400 may include additional or different operations, and Fig.14 The operations shown in can be performed in the order shown or in another order. In some cases, Fig.14 One or more operations shown in 1400 may be implemented as a process including multiple operations, a sub-process for other types of routines. In some cases, the operations may be combined, performed in another order, performed in parallel, repeated iteratively or in another manner, or performed in another manner. Process 1400 may be performed by Figure 1 The exemplary wireless communication devices 102A, 102B, 102C, and Figure 2A and 2B The exemplary wireless communication devices 204A, 204B, 204C shown in FIG. Figure 2C The process may be performed by any of the exemplary devices shown in FIG. 2 (eg, client device 232 and AP devices 226 , 228 ) or by other types of devices.
[0175] Process 1400 may be performed by a wireless communication device seeking to induce a MIMO transmission from another wireless communication device. At 1402, a network or transport layer message is generated. When using (e.g., Fig.11A , 11B , ICMP Ping processing described in 11C) or (for example, Fig.13 When an ARP Ping is processed to trigger MIMO transmission, a network layer message may be generated. Figure 8 As described in , a network layer message may be encapsulated into the payload field of a corresponding media access control (MAC) layer message. Fig. 12A , 12B When the TCP Ping process described in ) is used to initiate MIMO transmission, a transport layer message can be generated. Figure 8 As described in the foregoing, a transport layer message that may be generated may be encapsulated into a payload field of a corresponding network layer message. In some implementations, the network or transport layer message may be addressed to a device seeking MIMO transmission. The address of the device seeking MIMO transmission may be an upper layer logical address (e.g., a network address) of the device, and may be used Fig.10 obtained by the process described in .
[0176] At 1404, a network or transport layer message is wirelessly sent to the device seeking MIMO transmission. Fig.11A , 11B , ICMP Ping processing described in 11C, (e.g., Fig.13 ) ARP Ping process described in or a combination thereof to wirelessly send network layer messages. Fig. 12A , 12B The TCP Ping process described in ) sends transport layer messages wirelessly.
[0177] In some examples, a device sending a network or transport layer message may detect that the network or transport layer message failed to cause a successful MIMO transmission from the device to which the network or transport layer message was addressed. For example, a failure of a network or transport layer message to cause a successful MIMO transmission may manifest itself as (e.g., Fig. 11C 1135 or Fig. 12B The number of consecutive failed blocks at 1241 in ( ) is greater than the threshold number of failures, or (for example, Fig. 11C 1139 or Fig. 12B MIMO transmissions (including CSI) at 1245 in the example are not being received at a rate fast enough to accurately or reliably detect motion in space. When such a failure occurs, the device sending the network or transport layer message may terminate the mechanism for sending the network or transport layer message in favor of trying other types of mechanisms to send the network or transport layer message. For example, Fig.10 As can be seen, the ICMP Ping process of sending a network layer message may not result in a successful MIMO transmission, and the device may instead use a TCP Ping process to send a transport layer message to result in a successful MIMO transmission. As another example, the TCP Ping process of sending a transport layer message may not result in a successful MIMO transmission, and the device may instead use an ARP Ping process to send a network layer message to result in a successful MIMO transmission.
[0178] At 1406, a MIMO transmission is received from a device to which a network or transport layer message is addressed. The MIMO transmission may include a MIMO training field. The MIMO training field contains a signal (e.g., CSI) with higher frequency resolution, a larger number of subcarrier frequencies, and a higher frequency bandwidth than a traditional training field in a PHY frame. Using the MIMO training field for motion detection provides more accurate motion detection capabilities. Therefore, at 1408, a training field is identified in each MIMO transmission, and channel information is generated based on the training field (at 1410). At 1412, the channel information is used to detect motion occurring in a space (e.g., spaces 200, 201).
[0179] Fig.15 is a block diagram illustrating an exemplary wireless communication device 1500. Fig.15 As shown, the exemplary wireless communication device 1500 includes an interface 1530, a processor 1510, a memory 1520, and a power supply unit 1540. A wireless communication device (eg, Figure 1 The wireless communication devices 102A, 102B, 102C, Figure 2A and 2B The wireless communication devices 204A, 204B, 204C, Figure 2C 226, 228) may include additional or different components, and the wireless communication device 1500 may be configured to operate as described with respect to the above examples. In some implementations, the interface 1530, processor 1510, memory 1520, and power supply unit 1540 of the wireless communication device are housed together in a common housing or other assembly. In some implementations, one or more of the components of the wireless communication device may be separately housed, for example, in a separate housing or other assembly.
[0180] Exemplary interface 1530 can communicate (receive, send or both) wireless signals. For example, interface 1530 can be configured to communicate radio frequency (RF) signals formatted according to wireless communication standards (e.g., Wi-Fi, 4G, 5G, Bluetooth, etc.). In some implementations, exemplary interface 1530 includes a radio subsystem and a baseband subsystem. The radio subsystem may include, for example, one or more antennas and a radio frequency circuit. The radio subsystem may be configured to communicate radio frequency wireless signals on a wireless communication channel. As an example, the radio subsystem may include a radio chip, an RF front end, and one or more antennas. The baseband subsystem may include, for example, a digital electronic device configured to process digital baseband data. In some cases, the baseband subsystem may include a digital signal processor (DSP) device or other types of processor devices. In some cases, the baseband system includes digital processing logic to operate the radio subsystem, communicate wireless network services through the radio subsystem, or perform other types of processing.
[0181] Exemplary processor 1510 may, for example, execute instructions to generate output data based on data input. Instructions may include programs, codes, scripts, modules, or other types of data stored in memory 1520. Additionally or alternatively, instructions may be encoded as pre-programmed or reprogrammable logic circuits, logic gates, or other types of hardware or firmware components or modules. Processor 1510 may be or include a general-purpose microprocessor, as a dedicated coprocessor or other type of data processing device. In some cases, processor 1510 performs high-level operations of wireless communication device 600. For example, processor 1510 may be configured to execute or interpret software, scripts, programs, functions, executable instructions, or other instructions stored in memory 1520. In some implementations, processor 1510 is included in interface 1530 or other components of wireless communication device 1500.
[0182] Exemplary memory 1520 may include computer-readable storage media, such as volatile memory devices, non-volatile memory devices, or both. Memory 1520 may include one or more read-only memory devices, random access memory devices, buffer memory devices, or a combination of these and other types of memory devices. In some instances, one or more components of the memory may be integrated or otherwise associated with other components of wireless communication device 1500. Memory 1520 may store instructions executable by processor 1510. For example, the instructions may include instructions for performing one or more of the operations described above.
[0183] An exemplary power supply unit 1540 provides power to other components of the wireless communication device 1500. For example, the other components may operate based on power provided by the power supply unit 1540 through a voltage bus or other connection. In some implementations, the power supply unit 1540 includes a battery or battery system, such as a rechargeable battery. In some implementations, the power supply unit 1540 includes an adapter (e.g., an AC adapter) that receives an external power signal (from an external source) and converts the external power signal into an internal power signal that is conditioned for the components of the wireless communication device 1500. The power supply unit 1520 may include other components or operate in other ways.
[0184] Some of the themes and operations described in this specification may be implemented in digital electronic circuits, or in computer software, firmware or hardware, including the structures disclosed in this specification and their structural equivalents, or one or more combinations of structures. Some of the themes described in this specification may be implemented as one or more computer programs (i.e., one or more modules of computer program instructions), encoded on a computer storage medium for execution by a data processing device or for controlling the operation of a data processing device. A computer storage medium may be a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them, or may be included therein. In addition, although a computer storage medium is not a propagation signal, a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagation signal. A computer storage medium may also be one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices), or may be included therein.
[0185] Some of the operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
[0186] The term "data processing equipment" encompasses all kinds of equipment, devices and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or a plurality or combination of the foregoing. The equipment may include special-purpose logic circuits, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the equipment may also include code that creates an execution environment for the computer program in question, such as code for constituting processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them.
[0187] A computer program (also known as a program, software, software application, script or code) can be written in any form of programming language including compiled or interpreted languages, declarative languages or procedural languages, and can be deployed in any form, including being deployed as a standalone program or as a module, component, subroutine, object or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be stored in a portion of a file, where the file stores other programs or data (e.g., one or more scripts stored in a markup language file) in a single file dedicated to the program, or in multiple coordination files (e.g., files for storing a portion of one or more modules, subroutines or codes). A computer program may be deployed to execute on one computer, or on multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.
[0188] Some of the processes and logic flows described in this specification can be performed using one or more programmable processors, where these one or more programmable processors execute one or more computer programs to perform actions by operating on input data and generating output. These processes and logic flows can also be performed by special purpose logic circuits and devices can also be implemented as special purpose logic circuits, where the special purpose logic circuits are, for example, FPGAs (field programmable gate arrays) or ASICs (application specific integrated circuits).
[0189] To provide interaction with a user, operations may be implemented on a computer having a display device (e.g., a monitor or other type of display device) for displaying information to the user, and a keyboard and pointing device (e.g., a mouse, trackball, tablet computer, touch-sensitive screen, or other type of pointing device) through which the user can provide input to the computer. Other types of devices may also be used to provide interaction with a user; for example, feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input. In addition, a computer may interact with a user by sending and receiving documents relative to a device used by the user (e.g., by sending a web page to a web browser in response to a request received from a web browser on a client device of the user).
[0190] In a general aspect, MIMO transmissions are initiated from a wireless communication device and used for wireless sensing.
[0191] In some aspects, a wireless sensing system (e.g., a motion detection system) initiates a message through a communication protocol defined in a layer above a physical (PHY) layer and a data link (MAC) layer in a first wireless communication device (e.g., in a transport layer or a network layer). The message is addressed to and wirelessly sent to a second wireless communication device. In response to the message, the second wireless communication device sends a MIMO transmission that passes through the space between the first wireless communication device and the second wireless communication device. The first wireless communication device senses the space (e.g., detects the motion of an object in the space) based on the MIMO transmission.
[0192] In a first example, a first wireless communication device: obtains a network layer address of a second wireless communication device; addresses a network layer message to the network layer address of the second wireless communication device; initiates wireless transmission of the network layer message; receives a MIMO transmission from the second wireless communication device in response to the network layer message, wherein the MIMO transmission passes through a space between the first wireless communication device and the second wireless communication device; generates a series of channel responses based on a training field in the MIMO transmission; and detects movement of an object in space based on the series of channel responses.
[0193] Implementations of the first example may include one or more of the following features. A network layer message may be sent according to an ICMP Ping process, an ARP Ping process, or other types of processes. The MIMO training field may be a HE-LTF, a VHT-LTF, or a HT-LTF. Wireless sensing may include detecting the motion of an object in space.
[0194] In a second example, a first wireless communication device: generates a transport layer message addressed to a second wireless communication device; initiates wireless transmission of the transport layer message; receives a MIMO transmission from the second wireless communication device in response to the transport layer message, wherein the MIMO transmission passes through a space between the first wireless communication device and the second wireless communication device; generates the series of channel responses based on a training field in the MIMO transmission; and performs wireless sensing of the space based on the series of channel responses.
[0195] The implementation of the second example may include one or more of the following features. The transport layer message may be sent according to a TCP Ping process or other type of process. The MIMO training field may be a HE-LTF, a VHT-LTF, or a HT-LTF. Wireless sensing may include detecting the motion of an object in space.
[0196] In a third example, a first wireless communication device: initiates a first mechanism for inducing MIMO transmissions from a second wireless communication device, and detects a failure of the first mechanism; initiates a different second mechanism for inducing MIMO transmissions from the second wireless communication device, and detects a success of the second mechanism; generates a series of channel responses based on MIMO transmissions induced from the second device using the second mechanism; and performs wireless sensing based on the series of channel responses.
[0197] The implementation of the third example may include one or more of the following features. The first mechanism and the second mechanism may include ICMP Ping, TCP Ping, ARP Ping or other types of request / response processing. The first wireless communication device may initiate the first mechanism and the second mechanism (and possible additional mechanisms) based on the state of the state machine. Wireless sensing may include detecting the movement of objects in the space traversed by the MIMO transmission.
[0198] In a fourth example, a first wireless communication device in a wireless communication network may: generate a network or transport layer message addressed to a second wireless communication device in the wireless communication network; wirelessly send the network or transport layer message to the second wireless communication device to induce a multiple input multiple output (MIMO) transmission from the second wireless communication device; and receive a MIMO transmission from the second wireless communication device. The MIMO transmission may pass through a space between the first wireless communication device and the second wireless communication device. The first wireless communication device may also identify training fields in each MIMO transmission; generate channel information based on the corresponding training fields; and detect motion occurring in the space based on the channel information.
[0199] Implementations of the fourth example may include one or more of the following features. The network or transport layer message includes a network layer message encapsulated into a payload field of a corresponding media access control (MAC) layer message. The network layer message is wirelessly sent according to an Internet Control Message Protocol (ICMP) Ping process. The first wireless communication device may also obtain a network layer address of a second wireless communication device; and encapsulate the network layer address of the second wireless communication device into a payload field of a corresponding MAC layer message. The network or transport layer message includes a transport layer message encapsulated into a payload field of a corresponding network layer message, and the transport layer message is wirelessly sent according to a Transmission Control Protocol (TCP) Ping process, an Address Resolution Protocol (ARP) ping addressed to the second wireless communication device, or a combination thereof. The first wireless communication device may also detect a failure of a network or transport layer message to cause a MIMO transmission from the second wireless communication device; in response to detecting the failure, generate a second network or transport layer message addressed to the second wireless communication device; and wirelessly send the second network or transport layer message to the second wireless communication device to cause a MIMO transmission from the second wireless communication device. The network or transport layer message is wirelessly sent according to a first type of communication process, and the second network or transport layer message is wirelessly sent according to a different second type of communication process. The first type of communication processing and the second type of communication processing are selected from the group consisting of: ICMP Ping, ARP Ping addressed to the second wireless communication device, and TCP Ping. Identifying training fields in each MIMO transmission includes identifying training fields in a PHY frame of each MIMO transmission.
[0200] In a fifth example, a non-transitory computer-readable medium stores instructions that, when executed by a data processing device, are operable to perform one or more operations of the first example, the second example, the third example, or the fourth example. In a sixth example, a system includes a plurality of wireless communication devices, and a device configured to perform one or more operations of the first example, the second example, the third example, or the fourth example.
[0201] Implementations of the sixth example may include one or more of the following features: One of the wireless communication devices may be or include the device. The device may be located at a location remote from the wireless communication device.
[0202] Although this specification contains many details, these details should not be construed as limitations on the scope of what may be claimed, but rather as descriptions of features specific to a particular example. Certain features described in this specification or shown in the drawings in the context of separate implementations may also be combined. Conversely, various features described or shown in the context of a single implementation may also be implemented in multiple embodiments, either separately or in any suitable subcombination.
[0203] Similarly, although operations are depicted in a particular order in the accompanying drawings, this should not be understood as requiring that the operations be performed in the particular order shown or in sequential order, or that all of the operations shown be performed, to achieve the desired results. In some cases, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above implementations should not be understood as requiring such separation in all implementations, and it should be understood that the described program components and systems can generally be integrated together in a single product or packaged into multiple products.
[0204] A number of embodiments have been described. However, it should be understood that various modifications may be made. Therefore, other embodiments are within the scope of the above description.< / xxx> < / xxx> < / xxx>
Claims
1. A motion detection method, comprising: By operation of the first wireless communication device in the wireless communication network: generating a network layer message or a transport layer message addressed to a second wireless communication device in the wireless communication network, wherein: The network layer message or transport layer message includes a network layer message encapsulated into a payload field of a corresponding media access control layer message, ie, a MAC layer message, and / or The network layer message or transport layer message includes a transport layer message encapsulated into a payload field of a corresponding network layer message; wirelessly sending the network layer message or the transport layer message to the second wireless communication device to induce a multiple-input multiple-output (MIMO) transmission from the second wireless communication device; receiving a MIMO transmission from the second wireless communication device, wherein the MIMO transmission traverses a space between the first wireless communication device and the second wireless communication device; Identify training fields in each MIMO transmission; generating channel information based on the corresponding training fields; and Motion occurring in the space is detected based on the channel information.
2. The motion detection method according to claim 1, wherein: The network layer message is sent wirelessly according to the Internet Control Message Protocol Ping process, ie, ICMP Ping process.
3. The motion detection method according to claim 1, further comprising: Obtaining, by operation of the first wireless communication device, a network layer address of the second wireless communication device; as well as Through the operation of the first wireless communication device, the network layer address of the second wireless communication device is encapsulated into the payload field of the corresponding MAC layer message.
4. The motion detection method according to claim 1, wherein: The transport layer message is wirelessly sent according to a Transmission Control Protocol Ping process (TCP Ping process), an Address Resolution Protocol Ping (ARP Ping) addressed to the second wireless communication device, or a combination thereof.
5. The motion detection method according to claim 1, comprising: By operation of the first wireless communication device: detecting that the network layer message or the transport layer message causes a failure of the MIMO transmission from the second wireless communication device; responsive to detecting the failure, generating a second network layer message or a second transport layer message addressed to the second wireless communication device; as well as The second network layer message or the second transport layer message is wirelessly sent to the second wireless communication device to induce a MIMO transmission from the second wireless communication device.
6. The motion detection method according to claim 5, wherein: The network layer message or transport layer message is wirelessly sent according to a first type of communication process, and the second network layer message or second transport layer message is wirelessly sent according to a second, different type of communication process.
7. The motion detection method according to claim 6, wherein: The first type of communication processing and the second type of communication processing are selected from the group consisting of: ICMP Ping, ARP Ping addressed to the second wireless communication device, and TCP Ping.
8. The motion detection method according to claim 1, wherein: Identifying the training field in each MIMO transmission includes identifying the training field in a PHY frame for each MIMO transmission.
9. A wireless communication device, comprising: one or more processors; as well as a memory comprising instructions that, when executed by the one or more processors, cause the wireless communication device to perform operations comprising: generating a network layer message or a transport layer message addressed to a second wireless communication device in a wireless communication network, wherein: The network layer message or transport layer message includes a network layer message encapsulated into a payload field of a corresponding media access control layer message, ie, a MAC layer message, and / or The network layer message or transport layer message includes a transport layer message encapsulated into a payload field of a corresponding network layer message; wirelessly sending the network layer message or the transport layer message to the second wireless communication device to induce a multiple-input multiple-output (MIMO) transmission from the second wireless communication device; receiving a MIMO transmission from the second wireless communication device, wherein the MIMO transmission traverses a space between the first wireless communication device and the second wireless communication device; Identify training fields in each MIMO transmission; generating channel information based on the corresponding training fields; and Motion occurring in the space is detected based on the channel information.
10. The wireless communication device according to claim 9, wherein: The network layer message is wirelessly sent according to an Internet Control Message Protocol Ping process (ICMP Ping process), an Address Resolution Protocol Ping (ARP Ping) addressed to the second wireless communication device, or a combination thereof.
11. The wireless communication device according to claim 9, wherein: The operations include: obtaining a network layer address of the second wireless communication device; and The network layer address of the second wireless communication device is encapsulated into the payload field of a corresponding MAC layer message.
12. The wireless communication device according to claim 9, wherein: The transport layer message is sent wirelessly according to a Transmission Control Protocol Ping process, ie, a TCP Ping process.
13. The wireless communication device according to claim 9, wherein: The operations include: detecting that the network layer message or the transport layer message causes a failure of the MIMO transmission from the second wireless communication device; In response to detecting the failure, generating a second network layer message or a second transport layer message addressed to the second wireless communication device; and The second network layer message or the second transport layer message is wirelessly sent to the second wireless communication device to induce a MIMO transmission from the second wireless communication device.
14. The wireless communication device according to claim 13, wherein: The network layer message or transport layer message is wirelessly sent according to a first type of communication process, and the second network layer message or second transport layer message is wirelessly sent according to a second, different type of communication process.
15. The wireless communication device according to claim 14, wherein: The first type of communication processing and the second type of communication processing are selected from the group consisting of: ICMP Ping, ARPPing addressed to the second wireless communication device, and TCP Ping.
16. The wireless communication device according to claim 9, wherein: Identifying the training field in each MIMO transmission includes identifying the training field in a PHY frame for each MIMO transmission.
17. A non-transitory computer-readable medium comprising instructions that, when executed by a data processing device of a first wireless communication device, perform operations comprising: generating a network layer message or a transport layer message addressed to a second wireless communication device in a wireless communication network, wherein: The network layer message or transport layer message includes a network layer message encapsulated into a payload field of a corresponding media access control layer message, ie, a MAC layer message, and / or The network layer message or transport layer message includes a transport layer message encapsulated into a payload field of a corresponding network layer message; wirelessly sending the network layer message or the transport layer message to the second wireless communication device to induce a multiple-input multiple-output (MIMO) transmission from the second wireless communication device; receiving a MIMO transmission from the second wireless communication device, wherein the MIMO transmission traverses a space between the first wireless communication device and the second wireless communication device; Identify training fields in each MIMO transmission; generating channel information based on the corresponding training fields; and Motion occurring in the space is detected based on the channel information.
18. The computer-readable medium of claim 17, wherein: The network layer message is wirelessly sent according to an Internet Control Message Protocol Ping process (ICMP Ping process), an Address Resolution Protocol Ping (ARP Ping) addressed to the second wireless communication device, or a combination thereof.
19. The computer-readable medium of claim 17, the operations comprising: Obtaining a network layer address of the second wireless communication device; as well as The network layer address of the second wireless communication device is encapsulated into the payload field of a corresponding MAC layer message.
20. The computer-readable medium of claim 17, wherein: The transport layer message is sent wirelessly according to a Transmission Control Protocol Ping process, ie, a TCP Ping process.
21. The computer-readable medium of claim 17, the operations comprising: detecting that the network layer message or the transport layer message causes a failure of the MIMO transmission from the second wireless communication device; responsive to detecting the failure, generating a second network layer message or a second transport layer message addressed to the second wireless communication device; as well as The second network layer message or the second transport layer message is wirelessly sent to the second wireless communication device to induce a MIMO transmission from the second wireless communication device.
22. The computer-readable medium of claim 21, wherein: The network layer message or transport layer message is wirelessly sent according to a first type of communication process, and the second network layer message or second transport layer message is wirelessly sent according to a second, different type of communication process.
23. The computer-readable medium of claim 22, wherein: The first type of communication processing and the second type of communication processing are selected from the group consisting of: ICMP Ping, ARPPing addressed to the second wireless communication device, and TCP Ping.
24. The computer-readable medium of claim 17, wherein: Identifying a training field in each MIMO transmission includes identifying a training field in a PHY frame for each MIMO transmission.
25. A computer program product comprising a computer program, wherein the computer program causes a computer to execute the method according to any one of claims 1 to 8.
Citation Information
Patent Citations
Motion detection based on groupings of statistical parameters of wireless signals
US10048350B1
Detecting motion based on decompositions of channel response variations
US10051414B1
Motion detection based on machine learning of wireless signal properties
US10108903B1
Motion localization in a wireless mesh network based on motion indicator values
US10109167B1
Motion localization based on channel response characteristics
US10109168B1