WIFI CSI PREPROCESSING FOR SENSING APPLICATIONS

20240356616 ยท 2024-10-24

    Inventors

    Cpc classification

    International classification

    Abstract

    Methods and apparatuses for WiFi CSI preprocessing for sensing applications are provided. A method of wireless communication performed by a STA comprises: receiving a sequence of frames; obtaining a CSI set, comprising the CSI for each of the frames; determining one or more variations in the CSI set caused by at least one of a device impairment, a synchronization issue, or an unintended signal; performing a preprocessing procedure configured to: correct one or more errors in gain and phase of each CSI of the CSI set caused by at least one of the device impairment or the synchronization issue, and filter at least one variation caused by the unintended signal; and identifying at least one of an outlier or a variation in CSI set that affects a sensing task, and performing at least one preprocessing operation configured to filter the outlier or the variation in CSI set.

    Claims

    1. A method of wireless communication performed by a station (STA), the method comprising: receiving a sequence of frames; obtaining a channel state information (CSI) set, comprising the CSI for each of the frames; determining one or more variations in the CSI set caused by at least one of a device impairment, a synchronization issue, or an unintended signal; performing a preprocessing procedure configured to: correct one or more errors in gain and phase of each CSI of the CSI set caused by at least one of the device impairment or the synchronization issue, and filter at least one variation caused by the unintended signal; and identifying at least one of an outlier or a variation in CSI set that affects a sensing task, and performing at least one preprocessing operation configured to filter the outlier or the variation in CSI set.

    2. The method of claim 1, wherein determining the one or more variations in each obtained CSI of the CSI set comprises estimating a gain error for the CSI, the gain error comprising a large-scale gain and an automatic gain control (AGC) gain.

    3. The method of claim 2, where the gain error for each CSI of the CSI set is computed based on a power of the CSI in a logarithm-scale and statistics of the CSI set.

    4. The method of claim 2, wherein performing the preprocessing procedure comprises determining a gain corrected CSI set, each gain corrected CSI of the gain corrected CSI set being computed from each CSI of the CSI set and the corresponding estimated gain error.

    5. The method of claim 1, wherein determining one or more variations in the CSI set comprises identifying if each CSI in the CSI set is a high variability CSI, the determination being based on if a deviation of a magnitude of a gain corrected CSI corresponding to the CSI from gain corrected CSIs corresponding to neighboring gain CSIs of the CSI set is higher than a threshold.

    6. The method of claim 1, wherein determining the one or more variations in each CSI of the CSI set comprises estimating a phase error, wherein estimating the phase error comprises: estimating a timing error associated with a frame reception time, and estimating a common phase error (CPE) associated with a difference in carrier phase between a transmitter of a frame and the STA.

    7. The method of claim 6, wherein the estimation of the timing error and CPE for a CSI of the CSI set is performed chronologically, based on a comparison of a gain corrected CSI corresponding to the CSI to phase corrected CSIs corresponding to preceding CSIs in the CSI set.

    8. The method of claim 6, wherein performing the preprocessing operation comprises determining a phase corrected CSI set, each phase corrected CSI of the phase corrected CSI set being computed from a gain corrected CSI, the estimated timing error, and the estimated CPE.

    9. The method of claim 1, wherein filtering out an unintended signal comprises subtracting a dominant channel component from each phase corrected CSI to obtain a non-dominant CSI, the dominant channel component for a CSI being determined by lowpass filtering a phase corrected CSI set based on whether the CSI is a high variability CSI.

    10. The method of claim 1, wherein identifying the at least one of an outlier or a variation in CSI data comprises identifying a change in a non-dominant CSI compared to its neighboring non-dominant CSI that exceeds a threshold.

    11. A station (STA) comprising: a transceiver configured to: receive a sequence of frames; and obtain a channel state information (CSI) set, comprising the CSI for each of the frames; and a processor coupled to the transceiver, the processor configured to: determine one or more variations in the CSI set caused by at least one of a device impairment, a synchronization issue, or an unintended signal; perform a preprocessing procedure configured to: correct one or more errors in gain and phase of each CSI of the CSI set caused by at least one of the device impairment or the synchronization issue, and filter at least one variation caused by the unintended signal; and identify at least one of an outlier or a variation in CSI set that affects a sensing task, and performing at least one preprocessing operation configured to filter the outlier or the variation in CSI set.

    12. The STA of claim 11, wherein to determine the one or more variations in each obtained CSI of the CSI set, the processor is configured to estimate a gain error for the CSI, the gain error comprising a large-scale gain and an automatic gain control (AGC) gain.

    13. The STA of claim 12, where the gain error for each CSI of the CSI set is computed based on a power of the CSI in a logarithm-scale and statistics of the CSI set.

    14. The STA of claim 12, wherein to perform the preprocessing procedure, the processor is configured to determine a gain corrected CSI set, each gain corrected CSI of the gain corrected CSI set being computed from each CSI of the CSI set and the corresponding estimated gain error.

    15. The STA of claim 11, wherein to determine one or more variations in the CSI set, the processor is configured to identify if each CSI in the CSI set is a high variability CSI, the determination being based on if a deviation of a magnitude of a gain corrected CSI corresponding to the CSI from gain corrected CSIs corresponding to neighboring gain CSIs of the CSI set is higher than a threshold.

    16. The STA of claim 11, wherein to determine the one or more variations in each CSI of the CSI set, the processor is configured to estimate a phase error, wherein to estimate the phase error, the processor is configured to: estimate a timing error associated with a frame reception time, and estimate a common phase error (CPE) associated with a difference in carrier phase between a transmitter of a frame and the STA.

    17. The STA of claim 16, wherein the estimation of the timing error and CPE for a CSI of the CSI set is performed chronologically, based on a comparison of a gain corrected CSI corresponding to the CSI to phase corrected CSIs corresponding to preceding CSIs in the CSI set.

    18. The STA of claim 16, wherein to perform the preprocessing operation, the processor is configured to determine a phase corrected CSI set, each phase corrected CSI of the phase corrected CSI set being computed from a gain corrected CSI, the estimated timing error, and the estimated CPE.

    19. The STA of claim 11, wherein to filter out an unintended signal, the processor is configured to subtract a dominant channel component from each phase corrected CSI to obtain a non-dominant CSI, the dominant channel component for a CSI being determined by lowpass filtering a phase corrected CSI set based on whether the CSI is a high variability CSI.

    20. The STA of claim 11, wherein to identify the at least one of an outlier or a variation in CSI data, the processor is configured to identify a change in a non-dominant CSI compared to its neighboring non-dominant CSI that exceeds a threshold.

    Description

    BRIEF DESCRIPTION OF THE DRAWINGS

    [0017] For a more complete understanding of the present disclosure and its advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, in which like reference numerals represent like parts:

    [0018] FIG. 1 illustrates an example wireless network according to various embodiments of the present disclosure;

    [0019] FIG. 2A illustrates an example AP according to various embodiments of the present disclosure;

    [0020] FIG. 2B illustrates an example STA according to various embodiments of the present disclosure;

    [0021] FIG. 3 illustrates an example system model depicting a WiFi access point, a WiFi station and CSI acquisition frame structure according to various embodiments of the present disclosure;

    [0022] FIG. 4 illustrates an example of noisy CSI according to various embodiments of the present disclosure;

    [0023] FIG. 5 illustrates an example of outlier removal according to various embodiments of the present disclosure;

    [0024] FIG. 6 illustrates an example of CSI power increment between adjacent CSI samples according to various embodiments of the present disclosure;

    [0025] FIG. 7 illustrates an example of the impact of CSI gain correction on the CSI amplitude according to various embodiments of the present disclosure;

    [0026] FIG. 8 illustrates an example of different statistics of CSI timing errors according to various embodiments of the present disclosure;

    [0027] FIG. 9 illustrates an example of different statistics of CSI phase errors according to various embodiments of the present disclosure;

    [0028] FIG. 10 illustrates an example of the impact of CSI gain correction on the CSI amplitude according to various embodiments of the present disclosure;

    [0029] FIG. 11 illustrates an example flow diagram of a method for preprocessing WiFi CSI for supporting sensing applications according to various embodiments of the present disclosure;

    [0030] FIG. 12 illustrates an example setup used to determine performance of CSI preprocessing algorithms for respiration rate estimation according to various embodiments of the present disclosure;

    [0031] FIG. 13 illustrates an example of using different values of A or in the phase-correction step for samples pcustom-character.sub.bad according to various embodiments of the present disclosure;

    [0032] FIG. 14 illustrates an example flow diagram of an alternative embodiment for preprocessing WiFi CSI for supporting sensing applications according to various embodiments of the present disclosure; and

    [0033] FIG. 15 illustrates an example of a method for wireless communication performed by a station device according to embodiments of the present disclosure.

    DETAILED DESCRIPTION

    [0034] FIGS. 1 through 15, discussed below, and the various embodiments used to describe the principles of the present disclosure in this patent document are by way of illustration only and should not be construed in any way to limit the scope of the disclosure. Those skilled in the art will understand that the principles of the present disclosure may be implemented in any suitably arranged system or device.

    [0035] The following documents and standards descriptions are hereby incorporated by reference into the present disclosure as if fully set forth herein: [1] H. Jiang, C. Cai, X. Ma, Y. Yang, and J. Liu, Smart Home Based on WiFi Sensing: A survey, IEEE Access, vol. 6, pp. 13317-13325, 2018; [2] Y. Ma, G. Zhou, and S. Wang, WiFi Sensing with Channel State Information: A Survey, ACM Comput. Surv., vol. 52, June 2019; [3] Y. Fang, Z. Jiang, and H. Wang, A Novel Sleep Respiratory Rate Detection Method for Obstructive Sleep Apnea Based on Characteristic Moment Waveform, Journal of Healthcare Engineering, vol. 2018, 2018; [4] P. H. Charlton, D. A. Birrenkott, T. Bonnici, M. A. F. Pimentel, A. E. W. Johnson, J. Alastruey, L. Tarassenko, P. J. Watkinson, R. Beale, and D. A. Clifton, Breathing Rate Estimation From the Electrocardiogram and Photoplethysmogram: A Review, IEEE Reviews in Biomedical Engineering, vol. 11, pp. 2-20, 2018; [5] N. Regev and D. Wulich, Radar-Based, Simultaneous Human Presence Detection and Breathing Rate Estimation, Sensors, vol. 21, no. 10, 2021; [6] A. Natarajan, H.-W. Su, C. Heneghan, L. Blunt, C. O'Connor, and L. Niehaus, Measurement of Respiratory Rate Using Wearable Devices and Applications to Covid-19 Detection, NPJ Digital Medicine, vol. 4, 2021; [7] N. Patwari, L. Brewer, Q. Tate, O. Kaltiokallio, and M. Bocca, Breathfinding: A Wireless Network That Monitors and Locates Breathing in a Home, IEEE Journal of Selected Topics in Signal Processing, vol. 8, no. 1, pp. 30-42, 2014; [8] H. Abdelnasser, K. A. Harras, and M. Youssef, UbiBreathe, in Proceedings of the 16th ACM International Symposium on Mobile Ad Hoc Networking and Computing, ACM, June 2015; [9] X. Liu, J. Cao, S. Tang, and J. Wen, Wi-Sleep: Contactless Sleep Monitoring Via WiFi Signals, in 2014 IEEE Real-Time Systems Symposium, pp. 346-355, 2014; J. Liu, Y. Wang, Y. Chen, J. Yang, X. Chen, and J. Cheng, Tracking Vital Signs During Sleep Leveraging off-the-shelf WiFi, in Proceedings of the 16th ACM International Symposium on Mobile Ad Hoc Networking and Computing, MobiHoc '15, (New York, NY, USA), p. 267-276, Association for Computing Machinery, 2015; C. Chen, Y. Han, Y. Chen, H.-Q. Lai, F. Zhang, B. Wang, and K. J. R. Liu, Tr-breath: Time-Reversal Breathing Rate Estimation and Detection, IEEE Transactions on Biomedical Engineering, vol. 65, no. 3, pp. 489-501, 2018; X. Wang, C. Yang, and S. Mao, Tensorbeat: Tensor Decomposition for Monitoring Multiperson Breathing Beats with Commodity WiFi, ACM Trans. Intell. Syst. Technol., vol. 9, September 2017; Y. Zeng, D. Wu, R. Gao, T. Gu, and D. Zhang, Fullbreathe: Full Human Respiration Detection Exploiting Complementarity of CSI Phase and Amplitude of WiFi Signals, Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies, vol. 2, pp. 1-19, 09 2018; C. Dou and H. Huan, Full Respiration Rate Monitoring Exploiting Doppler Information with Commodity WiFiDdevices, Sensors, vol. 21, no. 10, 2021; J. Liu, Y. Zeng, T. Gu, L. Wang, and D. Zhang, Wiphone: Smartphone-based Respiration Monitoring Using Ambient Reflected WiFi Signals, Proc. ACM Interact. Mob. Wearable Ubiquitous Technol., vol. 5, March 2021; X. Niu, S. Li, Y. Zhang, Z. Liu, D. Wu, R. C. Shah, C. Tanriover, H. Lu, and D. Zhang, Wimonitor: Continuous Long-term Human Vitality Monitoring Using Commodity WiFi Devices, Sensors, vol. 21, no. 3, 2021; Y. Zeng, D. Wu, J. Xiong, E. Yi, R. Gao, and D. Zhang, Farsense: Pushing the Range Limit of WiFi-based Respiration Sensing with CSI Ratio of Two Antennas, Proc. ACM Interact. Mob. Wearable Ubiquitous Technol., vol. 3, September 2019; Y. Xie, Z. Li, and M. Li, Precise Power Delay Profiling with Commodity WiFi, IEEE Transactions on Mobile Computing, vol. 18, no. 6, pp. 1342-1355, 2019; 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, IEEE Std 802.11-2020 (Revision of IEEE Std 802.11-2016), pp. 1-4379, 2021; T. M. Schmidl and D. C. Cox, Robust Frequency and Timing Synchronization for OFDM, IEEE Transactions on Communications, vol. 45, pp. 1613-1621 December 1997; A. A. Nasir, S. Durrani, H. Mehrpouyan, S. D. Blostein, and R. A. Kennedy, Timing and Carrier Synchronization in Wireless Communication: a Survey and Classification of Research in the last 5 years, EURASIP Journal on Wireless Communications and Networking, vol. 2016, p. 180, August 2016; E. Sourour, H. El-Ghoroury, and D. McNeill, Frequency Offset Estimation and Correction in the IEEE 802.11a WLAN, in IEEE Vehicular Technology Conference (VTC), vol. 7, pp. 4923-4927 Vol. 7, 2004; D. Petrovic, W. Rave, and G. Fettweis, Effects of Phase Noise on OFDM Systems with and Without PLL: Characterization and Compensation, IEEE Transactions on Communications, vol. 55, pp. 1607-1616 Aug. 2007; V. V. Ratnam, Performance of Analog Beamforming Systems with Optimized Phase Noise Compensation, IEEE Transactions on Signal Processing, vol. 68, pp. 5334-5348, 2020; I.-G. Lee and S.-K. Lee, Efficient Automatic Gain Control Algorithm and Architecture for Wireless LAN Receivers, Journal of Systems Architecture, vol. 53, pp. 379-385, 07 2007; X. Cheng, G. Xie, Z. Zhang, and Y. Yang, Fast-settling Feedforward Automatic Gain Control Based on a New Gain Control Approach, IEEE Transactions on Circuits and Systems II: Express Briefs, vol. 61, no. 9, pp. 651-655, 2014; J. H. Jang and H. J. Choi, A Fast Automatic Gain Control Scheme for 3GPP LTE TDD System, in IEEE Vehicular Technology Conference-Fall, pp. 1-5, 2010; S.-K. Jin, S.-H. Yoon, and S. Dae-Kyo, Performances of Various AGC Algorithms for IEEE802.11p WAVE, Journal of IKEEE, vol. 18, no. 4, pp. 502-508, 2014; M. Ester, H.-P. Kriegel, J. Sander, and X. Xu, A Density-based Algorithm for Discovering Clusters in Large Spatial Databases with Noise, in Proc. of International Conference on Knowledge Discovery and Data Mining, pp. 226-231, AAAI Press, 1996; The Multivariate Normal and Related Distributions, ch. 1, pp. 1-49. John Wiley & Sons, Ltd, 1982; K. Mardia and P. Jupp, Directional Statistics. Wiley Series in Probability and Statistics, Wiley, 1999; 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, IEEE Std 802.11-2020 (Revision of IEEE Std 802.11-az/D5.0), pp. 1-287, 2022.

    [0036] Embodiments of the present disclosure recognize that due to its ubiquitous and contact-free nature, the use of WiFi infrastructure for performing sensing tasks has tremendous potential. This has many applications including presence detection, exercise monitoring, people counting, intruder alarm, respiration rate detection, and sleep monitoring. However, due to lack of synchronization between the WiFi transmitter and receiver, the channel state information (CSI) measured by WiFi devices suffers from errors in both its gain and phase, which can significantly hinder sensing tasks. In addition, hardware impairments and unintended interference signals also cause variations in the CSI which can impact sensing. Thus, improved CSI pre-processing methods to remove such errors at the RX to obtain clean CSI that can then be fed to an appropriate sensing algorithm would be beneficial.

    [0037] Embodiments of the present disclosure provide several preprocessing methods to clean the channel state information (CSI) obtained from commodity WiFi infrastructure. By analyzing these errors from different WiFi devices, a mathematical model has been developed for the gain and phase errors in WiFi CSI. Based on this model, several preprocessing algorithms for correcting such errors and obtaining clean CSI are provided.

    [0038] In addition, embodiments of the present disclosure provide solutions to reduce the impact of CSI variations due to transceiver impairments and unintended signals and for identifying and removing outliers in the CSI data.

    [0039] Further, embodiments of the present disclosure provide a mathematical model to represent the variation in WiFi CSI caused by device impairments, synchronization issues and unintended signals, and validating the model using real-world measurements. Further, embodiments of the present disclosure perform at least one preprocessing algorithm for correcting the errors in gain and phase of CSI caused by device impairments and synchronization issues. In addition, embodiments of the present disclosure identify variations in the CSI data that can significantly hamper a sensing task and perform at least one preprocessing operation to perform effective background cancellation of such variation, and identify outliers and perform at least one preprocessing operation for filtering such data.

    [0040] For simplicity, embodiments of the present disclosure discuss WiFi CSI preprocessing for sensing applications as performed by a STA (i.e., a non-AP STA), however it is understood that an AP (i.e., an AP STA) can also perform WiFi CSI preprocessing for sensing applications. It is also understood that non-AP STAs and AP STAs are both IEEE 802.11 node devices (or nodes), which may also be referred to as WI-FI node devices (or nodes). Accordingly, discussion herein below of actions performed by a STA may be performed by any appropriate IEEE 802.11 node.

    [0041] FIG. 1 illustrates an example wireless network 100 according to various embodiments of the present disclosure. The embodiment of the wireless network 100 shown in FIG. 1 is for illustration only. Other embodiments of the wireless network 100 could be used without departing from the scope of this disclosure.

    [0042] The wireless network 100 includes access points (APs) 101 and 103. The APs 101 and 103 communicate with at least one network 130, such as the Internet, a proprietary Internet Protocol (IP) network, or other data network. The AP 101 provides wireless access to the network 130 for a plurality of stations (STAs) 111-114 within a coverage area 120 of the AP 101. The APs 101-103 may communicate with each other and with the STAs 111-114 using WI-FI or other WLAN communication techniques. The STAs 111-114 may communicate with each other using peer-to-peer protocols, such as Tunneled Direct Link Setup (TDLS).

    [0043] Depending on the network type, other well-known terms may be used instead of access point or AP, such as router or gateway. For the sake of convenience, the term AP is used in this disclosure to refer to network infrastructure components that provide wireless access to remote terminals. In WLAN, given that the AP also contends for the wireless channel, the AP may also be referred to as a STA. Also, depending on the network type, other well-known terms may be used instead of station or STA, such as mobile station, subscriber station, remote terminal, user equipment, wireless terminal, or user device. For the sake of convenience, the terms station and STA are used in this disclosure to refer to remote wireless equipment that wirelessly accesses an AP or contends for a wireless channel in a WLAN, whether the STA is a mobile device (such as a mobile telephone or smartphone) or is normally considered a stationary device (such as a desktop computer, AP, media player, stationary sensor, television, etc.).

    [0044] Dotted lines show the approximate extents of the coverage areas 120 and 125, which are shown as approximately circular for the purposes of illustration and explanation only. It should be clearly understood that the coverage areas associated with APs, such as the coverage areas 120 and 125, may have other shapes, including irregular shapes, depending upon the configuration of the APs and variations in the radio environment associated with natural and man-made obstructions.

    [0045] As described in more detail below, one or more of the APs may include circuitry and/or programming for facilitating WiFi CSI preprocessing for sensing applications. Although FIG. 1 illustrates one example of a wireless network 100, various changes may be made to FIG. 1. For example, the wireless network 100 could include any number of APs and any number of STAs in any suitable arrangement. Also, the AP 101 could communicate directly with any number of STAs and provide those STAs with wireless broadband access to the network 130. Similarly, each AP 101-103 could communicate directly with the network 130 and provide STAs with direct wireless broadband access to the network 130. Further, the APs 101 and/or 103 could provide access to other or additional external networks, such as external telephone networks or other types of data networks.

    [0046] FIG. 2A illustrates an example AP 101 according to various embodiments of the present disclosure. The embodiment of the AP 101 illustrated in FIG. 2A is for illustration only, and the AP 103 of FIG. 1 could have the same or similar configuration. However, APs come in a wide variety of configurations, and FIG. 2A does not limit the scope of this disclosure to any particular implementation of an AP.

    [0047] The AP 101 includes multiple antennas 204a-204n and multiple transceivers 209a-209n. The AP 101 also includes a controller/processor 224, a memory 229, and a backhaul or network interface 234. The transceivers 209a-209n receive, from the antennas 204a-204n, incoming radio frequency (RF) signals, such as signals transmitted by STAs 111-114 in the network 100. The transceivers 209a-209n down-convert the incoming RF signals to generate IF or baseband signals. The IF or baseband signals are processed by receive (RX) processing circuitry in the transceivers 209a-209n and/or controller/processor 224, which generates processed baseband signals by filtering, decoding, and/or digitizing the baseband or IF signals. The controller/processor 224 may further process the baseband signals.

    [0048] Transmit (TX) processing circuitry in the transceivers 209a-209n and/or controller/processor 224 receives analog or digital data (such as voice data, web data, e-mail, or interactive video game data) from the controller/processor 224. The TX processing circuitry encodes, multiplexes, and/or digitizes the outgoing baseband data to generate processed baseband or IF signals. The transceivers 209a-209n up-converts the baseband or IF signals to RF signals that are transmitted via the antennas 204a-204n.

    [0049] The controller/processor 224 can include one or more processors or other processing devices that control the overall operation of the AP 101. For example, the controller/processor 224 could control the reception of forward channel signals and the transmission of reverse channel signals by the transceivers 209a-209n in accordance with well-known principles. The controller/processor 224 could support additional functions as well, such as more advanced wireless communication functions. For instance, the controller/processor 224 could support beam forming or directional routing operations in which outgoing signals from multiple antennas 204a-204n are weighted differently to effectively steer the outgoing signals in a desired direction. The controller/processor 224 could also support orthogonal frequency-division multiple access (OFDMA) operations in which outgoing signals are assigned to different subsets of subcarriers for different recipients (e.g., different STAs 111-114). Any of a wide variety of other functions could be supported in the AP 101 by the controller/processor 224 including facilitating WiFi CSI preprocessing for sensing applications OBSS PD threshold adaptation based on environmental context and feedback. In some embodiments, the controller/processor 224 includes at least one microprocessor or microcontroller. The controller/processor 224 is also capable of executing programs and other processes resident in the memory 229, such as an OS. The controller/processor 224 can move data into or out of the memory 229 as required by an executing process.

    [0050] The controller/processor 224 is also coupled to the backhaul or network interface 234. The backhaul or network interface 234 allows the AP 101 to communicate with other devices or systems over a backhaul connection or over a network. The interface 234 could support communications over any suitable wired or wireless connection(s). For example, the interface 234 could allow the AP 101 to communicate over a wired or wireless local area network or over a wired or wireless connection to a larger network (such as the Internet). The interface 234 includes any suitable structure supporting communications over a wired or wireless connection, such as an Ethernet or RF transceiver. The memory 229 is coupled to the controller/processor 224. Part of the memory 229 could include a RAM, and another part of the memory 229 could include a Flash memory or other ROM.

    [0051] As described in more detail below, the AP 101 may include circuitry and/or programming for facilitating WiFi CSI preprocessing for sensing applications OBSS PD threshold adaptation based on environmental context and feedback. Although FIG. 2A illustrates one example of AP 101, various changes may be made to FIG. 2A. For example, the AP 101 could include any number of each component shown in FIG. 2A. As a particular example, an access point could include a number of interfaces 234, and the controller/processor 224 could support routing functions to route data between different network addresses. Alternatively, only one antenna and transceiver path may be included, such as in legacy APs. Also, various components in FIG. 2A could be combined, further subdivided, or omitted and additional components could be added according to particular needs.

    [0052] FIG. 2B illustrates an example STA 111 according to various embodiments of the present disclosure. The embodiment of the STA 111 illustrated in FIG. 2B is for illustration only, and the STAs 111-115 of FIG. 1 could have the same or similar configuration. However, STAs come in a wide variety of configurations, and FIG. 2B does not limit the scope of this disclosure to any particular implementation of a STA.

    [0053] The STA 111 includes antenna(s) 205, transceiver(s) 210, a microphone 220, a speaker 230, a processor 240, an input/output (I/O) interface (IF) 245, an input 250, a display 255, and a memory 260. The memory 260 includes an operating system (OS) 261 and one or more applications 262.

    [0054] The transceiver(s) 210 receives from the antenna(s) 205, an incoming RF signal (e.g., transmitted by an AP 101 of the network 100). The transceiver(s) 210 down-converts the incoming RF signal to generate an intermediate frequency (IF) or baseband signal. The IF or baseband signal is processed by RX processing circuitry in the transceiver(s) 210 and/or processor 240, which generates a processed baseband signal by filtering, decoding, and/or digitizing the baseband or IF signal. The RX processing circuitry sends the processed baseband signal to the speaker 230 (such as for voice data) or is processed by the processor 240 (such as for web browsing data).

    [0055] TX processing circuitry in the transceiver(s) 210 and/or processor 240 receives analog or digital voice data from the microphone 220 or other outgoing baseband data (such as web data, e-mail, or interactive video game data) from the processor 240. The TX processing circuitry encodes, multiplexes, and/or digitizes the outgoing baseband data to generate a processed baseband or IF signal. The transceiver(s) 210 up-converts the baseband or IF signal to an RF signal that is transmitted via the antenna(s) 205.

    [0056] The processor 240 can include one or more processors and execute the basic OS program 261 stored in the memory 260 in order to control the overall operation of the STA 111. In one such operation, the processor 240 controls the reception of forward channel signals and the transmission of reverse channel signals by the transceiver(s) 210 in accordance with well-known principles. The processor 240 can also include processing circuitry configured to facilitate WiFi CSI preprocessing for sensing applications OBSS PD threshold adaptation based on environmental context and feedback. In some embodiments, the processor 240 includes at least one microprocessor or microcontroller.

    [0057] The processor 240 is also capable of executing other processes and programs resident in the memory 260, such as operations for facilitating WiFi CSI preprocessing for sensing applications. The processor 240 can move data into or out of the memory 260 as required by an executing process. In some embodiments, the processor 240 is configured to execute a plurality of applications 262, such as applications for facilitating WiFi CSI preprocessing for sensing applications OBSS PD threshold adaptation based on environmental context and feedback. The processor 240 can operate the plurality of applications 262 based on the OS program 261 or in response to a signal received from an AP. The processor 240 is also coupled to the I/O interface 245, which provides STA 111 with the ability to connect to other devices such as laptop computers and handheld computers. The I/O interface 245 is the communication path between these accessories and the processor 240.

    [0058] The processor 240 is also coupled to the input 250, which includes for example, a touchscreen, keypad, etc., and the display 255. The operator of the STA 111 can use the input 250 to enter data into the STA 111. The display 255 may be a liquid crystal display, light emitting diode display, or other display capable of rendering text and/or at least limited graphics, such as from web sites. The memory 260 is coupled to the processor 240. Part of the memory 260 could include a random-access memory (RAM), and another part of the memory 260 could include a Flash memory or other read-only memory (ROM).

    [0059] Although FIG. 2B illustrates one example of STA 111, various changes may be made to FIG. 2B. For example, various components in FIG. 2B could be combined, further subdivided, or omitted and additional components could be added according to particular needs. In particular examples, the STA 111 may include any number of antenna(s) 205 for MIMO communication with an AP 101. In another example, the STA 111 may not include voice communication or the processor 240 could be divided into multiple processors, such as one or more central processing units (CPUs) and one or more graphics processing units (GPUs). Also, while FIG. 2B illustrates the STA 111 configured as a mobile telephone or smartphone, STAs could be configured to operate as other types of mobile or stationary devices.

    [0060] FIG. 3 illustrates an example system model 300 depicting a WiFi access point, a WiFi station and CSI acquisition frame structure according to various embodiments of the present disclosure. The embodiment of the example system model 300 depicting a WiFi access point, a WiFi station and CSI acquisition frame structure shown in FIG. 3 is for illustration only. Other embodiments of the example system model 300 depicting a WiFi access point, a WiFi station and CSI acquisition frame structure could be used without departing from the scope of this disclosure.

    [0061] As illustrated in FIG. 3, the system 300 has a stationary WiFi access point as the TX and a WiFi station as the RX. Although a single TX and RX antenna is illustrated for simplicity, one skilled in the art will appreciate that the results are also applicable to multiple antennas by repeating the preprocessing methods for CSI for each TX-RX antenna pair. To enable sensing of variations in the environment, the TX may transmit a sequence of WiFi CSI acquisition frames. Such a frame can be, for example, null data packets that are transmitted periodically at an interval of T.sub.rep seconds each. For convenience, each CSI frame is indexed using a natural number, i.e., the p-th CSI frame transmitted by the TX is indexed as p. The header and the payload of these CSI frames can be encoded using orthogonal frequency division multiplexing (OFDM) over K sub-carriers indexed as: custom-character={0, . . . , K1} with a symbol duration of T.sub.s, and may be transmitted at a carrier frequency f.sub.c. The header of the CSI acquisition frame may include one legacy short training field (L-STF) and one legacy long training field (L-LTF), each of size one OFDM symbol. Each transmitted CSI frame passes through a time-varying channel before reaching the RX.

    [0062] Let h.sub.p,k be the true frequency-domain channel (that captures the variation to be sensed) between the TX and RX on sub-carrier k for CSI frame p. In one embodiment, h.sub.p,k is modeled as:

    [00001] h p , k = b k + d p , k ,

    where b.sub.k is the static component of CSI that includes the line-of-sight path, reflected from static objects like walls and d.sub.p,k is the dynamic component of CSI that is time varying and includes the variation to be sensed by the sensing algorithm. Using the received signal for each CSI frame p, the RX may obtain the noisy channel estimate (also called CSI) on sub-carrier k as {tilde over (h)}.sub.p,k. This noisy CSI can be modeled as:

    [00002] h p , k = g p h p , k e - j 2 f k p e - j p ,

    where g.sub.p is the gain error in the noisy CSI, j={square root over (1)}, f.sub.k=k/T.sub.s is the frequency-offset of the k-th subcarrier, .sub.p is the error in symbol start time detection at the RX (referred to here as timing error), and .sub.p is the common phase error (CPE) of the RX carrier with respect to the TX carrier at the time of reception of the p-th CSI acquisition frame. Note that g.sub.p, .sub.p, .sub.p distort the gain and phase of the received CSI making the sensing task difficult.

    [0063] FIG. 4 illustrates an example of noisy CSI 400 according to various embodiments of the present disclosure. The embodiment of the example of noisy CSI 400 shown in FIG. 4 is for illustration only. Other embodiments of the example of noisy CSI 400 could be used without departing from the scope of this disclosure. The embodiment of the noisy CSI 400 includes the magnitude of the noisy CSI and the phase of the noisy CSI.

    [0064] The present disclosure provides embodiments to obtain estimates .sub.p, {circumflex over ()}.sub.p, {circumflex over ()}.sub.p of g.sub.p, .sub.p, .sub.p so that the clean preprocessed CSI can be obtained as:

    [00003] h p , k = h p , k e j 2 f k p e j ^ p / g p .

    [0065] In some embodiments, the RX first accumulates the CSI for P CSI acquisition frames {{tilde over (h)}.sub.p,k|0p<P}, and then uses them to estimate {.sub.p, {circumflex over ()}.sub.p, {circumflex over ()}.sub.p|0p<P} together. In yet another embodiment, the CSI preprocessing can be run for each new incoming noisy CSI frame and the past P samples of cleaned or processed CSI can be used for cleaning the new sample. In one embodiment, the value of P can be fixed. In another embodiment, the value of P can be determined by the sensing application, amount of variation in the noisy CSI or by using some external information. For example, the end of a batch of P noisy CSI samples for joint estimation can be identified as the time when the following happens:

    [00004] .Math. k ( .Math. "\[LeftBracketingBar]" h ~ P - 1 , k .Math. "\[RightBracketingBar]" [ .Math. l .Math. "\[LeftBracketingBar]" h ~ P - 1 , l .Math. "\[RightBracketingBar]" 2 ] 1 2 - .Math. q = 0 P - 1 .Math. "\[LeftBracketingBar]" h ~ q , k .Math. "\[RightBracketingBar]" P [ .Math. l .Math. "\[LeftBracketingBar]" h ~ q , l .Math. "\[RightBracketingBar]" 2 ] 1 2 ) 2 Threshold but : .Math. k ( .Math. "\[LeftBracketingBar]" h ~ P , k .Math. "\[RightBracketingBar]" [ .Math. l .Math. "\[LeftBracketingBar]" h ~ P , l .Math. "\[RightBracketingBar]" 2 ] 1 2 - .Math. q = 0 P - 1 .Math. "\[LeftBracketingBar]" h ~ q , k .Math. "\[RightBracketingBar]" P [ .Math. l .Math. "\[LeftBracketingBar]" h ~ q , l .Math. "\[RightBracketingBar]" 2 ] 1 2 ) 2 > Threshold

    [0066] In one embodiment, the CSI preprocessing can be triggered by an external source or a timer. In another embodiment, the CSI preprocessing can be triggered after a sufficient number of noisy CSI samples (i.e., P samples) have been accumulated. In another embodiment, another algorithm can trigger the CSI preprocessing to be performed. For example, a sudden and/or significant variation of the CSI {tilde over (h)}.sub.p,k compared to its past values can be used to trigger the cleaning process. As another embodiment, a new CSI cleaning round can be initiated when the new CSI samples cleaned as part of the current batch of CSI frames becomes too noisy. In yet another embodiment, the TX can trigger the CSI cleaning process by transmitting a frame to the RX. In still another embodiment, the RX can continuously and periodically perform the CSI preprocessing without a trigger.

    [0067] FIG. 5 illustrates an example of outlier removal 500 according to various embodiments of the present disclosure. The embodiment of the example outlier removal 500 in FIG. 5 is for illustration only. Other embodiments of the example outlier removal 500 could be used without departing from the scope of this disclosure.

    Step 1: Identifying and Removing Outliers:

    [0068] Of the P CSI samples, some may be too corrupted to be able to correct using gain or phase correction methods. A first step can be to identify and remove such outliers. In one embodiment, the outliers can be identified by checking for each sample 0 p<P, if the following equation is satisfied:

    [00005] .Math. k ( .Math. "\[LeftBracketingBar]" h ~ p , k .Math. "\[RightBracketingBar]" [ .Math. l .Math. "\[LeftBracketingBar]" h ~ p , l .Math. "\[RightBracketingBar]" 2 ] 1 2 - .Math. q = 0 P - 1 .Math. "\[LeftBracketingBar]" h ~ q , k .Math. "\[RightBracketingBar]" P [ .Math. l .Math. "\[LeftBracketingBar]" h ~ q , l .Math. "\[RightBracketingBar]" 2 ] 1 2 ) 2 > Threshold

    [0069] If the above equation is satisfied, then the corresponding noisy CSI sample {{tilde over (h)}.sub.p,k|kcustom-character} may be too corrupted. After identifying and removing such CSI samples, let the remaining CSI samples be represented by the set custom-character.Math.{0, . . . , P1}. An example illustration of such outlier identification and removal is depicted in FIG. 5.

    Step 2: Estimating and Removing Gain Error:

    [0070] The receiver gain for CSI frame p, i.e., g.sub.p can be a combination of the large-scale gain, which adjusts at a slow-time scale, and an automatic gain control (AGC) gain, which updates at a fast-time scale. Let these two gains in decibel (dB) scale be defined as g.sub.p.sup.(1), and g.sub.p.sup.(2), respectively, i.e.,

    [00006] 20 log 10 ( g p ) = g p ( 1 ) + g p ( 2 )

    [0071] The gains may follow the following model in one embodiment: [0072] The large-scale gain can be a slowly varying random process with a Doppler frequency less than 0.1 Hz and may arise due to change in the gain of a low-noise amplifier [25] [26], or drift in TX oscillator frequency f.sub.c. [0073] The AGC gain can be due to the automatic gain control circuit, which for each p may pick a value from a discrete grid, i.e., g.sub.p.sup.(2)custom-character[27] [28]. In one embodiment, g.sub.p.sup.(2) is independently distributed for each p with a uniform priority over elements of custom-character.

    [0074] FIG. 6 illustrates an example of CSI power increment between adjacent CSI samples 600 according to various embodiments of the present disclosure. The embodiment of the example CSI power increment between adjacent CSI samples 600 in FIG. 6 is for illustration only. Other embodiments of the example CSI power increment between adjacent CSI samples 600 could be used without departing from the scope of this disclosure.

    [0075] The power of the noisy CSI sample in dB scale may be defined as:

    [00007] p = 2 0 log 10 ( .Math. k .Math. "\[LeftBracketingBar]" h ~ p , k .Math. "\[RightBracketingBar]" 2 K ) .

    The above suggested gain model of g.sub.p.sup.(2) is also evident in plots of {tilde over ()}.sub.p{tilde over ()}.sub.p-{tilde over ()}.sub.p-1, plotted for two example WiFi receivers in FIG. 6.

    [0076] The present disclosure provides several algorithms that may be available for estimation of the gain component g.sub.p as further discussed below. In a specific use-case, the algorithm may be determined based on the requirements of the sensing task. [0077] In some embodiments, the gain error term can be estimated for each CSI sample as:

    [00008] g p = [ 1 K .Math. k .Math. "\[LeftBracketingBar]" h ~ p , k .Math. "\[RightBracketingBar]" 2 ] 1 2 . [0078] In some embodiments, a clustering of the noisy CSI powers {tilde over ()}.sub.p can be performed to estimate the gain error terms for each CSI sample pcustom-character. In this case, a clustering algorithm such as DB-Scan or K-means clustering can be run on {{tilde over ()}.sub.p|pcustom-character} to cluster the CSI samples into different AGC gain levels. For each identified cluster, the mean value of {tilde over ()}.sub.p,m can be used to estimate the gain term for that cluster as:

    [00009] g p = 1 0 .Math. q p ~ p / ( 20 .Math. "\[LeftBracketingBar]" p .Math. "\[RightBracketingBar]" ) , [0079] where custom-character.sub.p.Math.custom-character is the set of all CSI samples that are assigned to the same cluster as p by the clustering algorithm. In one example where DB-Scan is used, the clustering algorithm parameters may be set as =0.15 and minpoints=1. In another example where K-means clustering is used, the number of clusters may be set as 3 or 5. [0080] In some embodiments, the structure of the gain error having a slow-varying component g.sub.p.sup.(1) and a fast-varying component g.sub.p.sup.(2) can be exploited. In this case, the clustering may be performed on increments of CSI power {tilde over ()}.sub.p{tilde over ()}.sub.p{tilde over ()}.sub.p-1 to estimate the AGC gain g.sub.p.sup.(2) Then a low pass filter may be used to estimate the large-scale gain g.sub.p.sup.(1). This can be performed as in the following algorithm:

    TABLE-US-00001 Inputs: {tilde over ()}.sub.p for p custom-character Calculate {tilde over ()}.sub.p {tilde over ()}.sub.p {tilde over ()}.sub.p1 for each p custom-character . Run DB-SCAN on {{tilde over ()}.sub.p |p custom-character } with = 0.2 and min-points = 1. For p custom-character [00010] Compute g p ( 2 ) = g p - 1 ( 2 ) + .Math. q 𝒫 p q / .Math. "\[LeftBracketingBar]" 𝒫 p .Math. "\[RightBracketingBar]" endFor [00011] Compute g p ( 1 ) = L P F 0 . 1 { p - g p ( 2 ) } for each p 𝒫 . //Here LPF.sub.0.1{. } is a low pass filter, e.g., moving average filter, with cut-off frequency of 0.1 Hz. Return .sub.p = 10.sup.(g.sup.p.sup.(1).sup.+g.sup.p.sup.(2).sup.)/20 for each p custom-character . [0081] In some embodiments, the structure of the gain error having a slow-varying component g.sub.p.sup.(1) and a fast-varying component g.sub.p.sup.(1), and the fast-varying component having a specific grid of values, i.e., g.sub.p.sup.(1)custom-character can be exploited. This can be performed as in the following algorithm:

    TABLE-US-00002 Inputs: {tilde over ()}.sub.p for p custom-character [00012] Compute max = 1 . 5 ( max p { p } - min p { p } ) . For = 0.005 .sub.max: 0.005 .sub.max: .sub.max [00013] Compute ~ p = exp { j 2 p / } for each p 𝒫 . Compute _ p = L P F 0 . 1 { ~ p } . //Here LPF.sub.0.1{. } is a low pass filter, e.g., moving average filter, with cut-off frequency of 0.1 Hz. [00014] Compute g p ( 1 ) = 𝒰 ( _ p ) / 2 . //Herecustom-character (. ) is a phase-unwrapping function that for each p custom-character adds integer shifts of 2 to the argument to ensure that phase- difference to preceding CSI frame satisfies |.sub.p .sub.p1| . [00015] Compute g p ( 2 ) = ( .Math. ( p - g p ( 1 ) ) / .Math. - 1 2 ) . Compute p = p - g p ( 1 ) - g p ( 2 ) . If .sub.pP({circumflex over ()}.sub.p).sup.2/|custom-character | .sup.2/24 [00016] Compute 2 = - 2 2 log .Math. "\[LeftBracketingBar]" 1 .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" .Math. p 𝒫 exp { j 2 p / } .Math. "\[RightBracketingBar]" . Compute 𝒟 = .Math. z [ Q ( ( z - 1 2 ) ) - Q ( ( z + 1 2 ) ) ] z 2 . //Here Q(. ) is the standard Q-function andcustom-character is the set of all integers. Compute Obj() = {circumflex over ()}.sub..sup.2 + .sup.2custom-character Else Obj() = endIf endFor For with minimum value of Obj(), recompute g.sub.p.sup.(1), g.sub.p.sup.(2) as above. Return .sub.p = 10.sup.(g.sup.p.sup.(1).sup.+g.sup.p.sup.(2).sup.)/20 for each p custom-character .

    [0082] FIG. 7 illustrates an example of the impact of CSI gain correction on the CSI amplitude 700 according to various embodiments of the present disclosure. The embodiment of the example of the impact of CSI gain correction on the CSI amplitude 700 shown in FIG. 7 is for illustration only. Other embodiments of the example of the impact of CSI gain correction on the CSI amplitude 700 could be used without departing from the scope of this disclosure.

    [0083] Using any of the above gain error estimation methods, the gain-corrected CSI {h.sub.p,k|pcustom-character, kcustom-character} can be obtained as:

    [00017] h p , k = h ~ p , k / g p .

    [0084] An illustration of the result of such gain correction on the amplitude of the CSI is shown in FIG. 7.

    [0085] Because different embodiments offer different trade-offs between estimation accuracy and computational complexity, an algorithm can be used to determine the appropriate embodiment to use for gain-error correction based on the requirements of the sensing application and the computational capabilities of the hardware. For example, if running on a phone or a device with low computational complexity, a low computational complexity method may be used.

    Step 3: Estimating and Removing Phase Errors:

    [0086] In this step, the gain corrected CSI {h.sub.p,k|pcustom-character, kcustom-character} may be used for estimating the values of .sub.p, .sub.p. Note that:

    [00018] h p , k h p , k e - j 2 f k p e - j p ,

    in other words, the CSI phase may be corrupted by the timing error .sub.p and the common phase error (CPE) .sub.p. This step attempts to find good estimates {circumflex over ()}.sub.p, {circumflex over ()}.sub.p of .sub.p, .sub.p, respectively, to obtain the gain and phase corrected CSI as:

    [00019] h p , k = h p , k e j 2 f k p e j ^ p .

    [0087] In some embodiments, the timing error .sub.p can arise from two sources: (i) the sampling time granularity of the ADC at the RX and (ii) the error in the symbol start time estimated using the L-STF of the CSI frame, and it may be limited by the inverse of the OFDM system bandwidth, viz., .sub.s/K. Therefore, the timing error may be modeled as

    [00020] p Uni ( - T s K , T s K ) ,

    where is a system parameter that depends on the accuracy of the RX timing compensation (for example 20). Furthermore, because synchronization may be performed independently for each CSI frame, the timing error .sub.p can be also independently distributed for each pcustom-character.

    [0088] For CPE, note that .sub.p=mod [{tilde over ()}.sub.p+2f.sub.c.sub.p, 2], and .sub.p is the difference in the carrier phase between the TX and RX at time of transmission of the p-th CSI acquisition frame, i.e., pT.sub.rep. Considering typical values of f.sub.c=5 GHz and T.sub.rep=50 ms, this corresponds to 2.510.sup.8 cycles of the carrier between two CSI frames. Preventing oscillator drift over so many cycles between the RX and TX may be difficult. Thus, in one embodiment, .sub.p, and consequently also .sub.p, can be modeled to be independent for each pcustom-character and uniformly distributed, i.e., .sub.pUni(, ). Note that this model may also explain the experimental observations made in [9] about the (un-corrected) channel phase, and the behavior of h.sub.p,k in FIG. 4. The above suggested timing error model is also evident in plots of statistics of .sub.p, plotted for two example WiFi receivers in FIG. 8. The above suggested phase error model is also evident in plots of statistics of .sub.p, plotted for two example WiFi receivers in FIG. 9.

    [0089] FIG. 8 illustrates an example of different statistics of CSI timing errors 800 according to various embodiments of the present disclosure. The embodiment of the example of different statistics of CSI timing errors 800 shown in FIG. 8 is for illustration only. Other embodiments of the example of different statistics of CSI timing errors 800 could be used without departing from the scope of this disclosure.

    [0090] FIG. 9 illustrates an example of different statistics of CSI phase errors 900 according to various embodiments of the present disclosure. The embodiment of the example of different statistics of CSI phase errors 900 shown in FIG. 9 is for illustration only. Other embodiments of the example of different statistics of CSI phase errors 900 could be used without departing from the scope of this disclosure.

    [0091] Several algorithms may be available for estimation of the timing and phase errors {circumflex over ()}.sub.p, {circumflex over ()}.sub.p as discussed in the embodiments below. In a specific use-case, the desired algorithm may be determined based on the requirements of the sensing task. [0092] In some embodiments, the timing and CPE error can be estimated as a solution to the least squares problem:

    [00021] p , p = argmin , { .Math. k ( 2 f k + - [ h p , k ] ) 2 } , [0093] where custom-character(.Math.) is a phase-unwrapping function that for each kcustom-character adds integer shifts of 2 to the argument h.sub.p,k to ensure that the phase-difference from previous sub-carrier satisfies |h.sub.p,kh.sub.p,k-1|. [0094] In some embodiments, the timing error can be estimated as:

    [00022] p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] , [0095] and similarly, the CPE error can be estimated as:

    [00023] p = - [ .Math. k h p , k e j 2 f k p ] . [0096] In some embodiments, it may be considered that the TX and RX have a strong line-of-sight path. In this case, an initial estimate of the line-of-sight component of the channel can be obtained first as b.sub.k. The timing and CPE errors can be estimated via maximum-likelihood estimation as shown in the following algorithm:

    TABLE-US-00003 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00024] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00025] Compute b k = .Math. p 𝒫 h p , k e j ( 2 f k p + p ) / .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" . endFor For p custom-character [00026] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b k .Math. "\[RightBracketingBar]" . Compute p = [ .Math. k 𝒦 e - j 2 f k p h p , k * b k ] . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . [0097] In some embodiments, to reduce the complexity of search for {circumflex over ()}.sub.p in one or more embodiments described herein, a weighted least squares solution can be used. In addition, to reduce the noise and errors, the summation over subcarriers can be reduced to a smaller subcarrier set custom-character, as shown in the following algorithm:

    TABLE-US-00004 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00027] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00028] Compute b k = .Math. p 𝒫 h p , k e j ( 2 f k p + p ) / .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" . endFor [00029] Compute 𝒦 = { k 𝒦 .Math. .Math. "\[LeftBracketingBar]" b k .Math. "\[RightBracketingBar]" 2 > 0 . 1 } . For p custom-character [00030] Compute p , k = h p , k * b k e - j 2 f k _ p for k 𝒦 _ . Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . // Herecustom-character (. ) is a phase-unwrapping function that for each k adds integer shifts of 2 to the argument to ensure that the phase-difference from previous sub-carrier in k.sub.1 custom-character satisfies |.sub.p,k .sub.p,k.sub.1| . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . [0098] In some embodiments, it may be assumed that the channel between the TX and RX can have multi-path and correspondingly a small coherence bandwidth. Correspondingly, unlike in one or more embodiments described herein, the estimate of the static component b.sub.k may be refined after a sufficient number of CSI samples have been corrected (viz., p>P/10) as shown in the following algorithm:

    TABLE-US-00005 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00031] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00032] Compute b k = .Math. p 𝒫 h p , k e j ( 2 f k p + p ) / .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" . endFor For p custom-character [00033] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b k .Math. "\[RightBracketingBar]" . Compute ^ p = - [ .Math. k 𝒦 e - j 2 f k ^ p h p , k * b _ k ] . Compute h p , k = h p , k e j 2 f k p e j p . If p > P/10 [00034] Define Q p = { p 𝒫 | q p } Update b k = .Math. q Q p h q , k / .Math. "\[LeftBracketingBar]" Q p .Math. "\[RightBracketingBar]" . endIF endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, .sub.p for each p custom-character . [0099] In a variant of this embodiment, the update of b.sub.k, can be changed to a recursive definition like b.sub.k=b.sub.k+(1).sub.p,k inside the loop for each p, where a is some design parameter, e.g., =0.9. [0100] In some embodiments, to reduce the complexity of search for .sub.p in one or more embodiments described herein, a weighted least squares solution can be used. In addition, to reduce the noise and errors, the summation over subcarriers can be reduced to a smaller subcarrier set custom-character, as shown in the following algorithm:

    TABLE-US-00006 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00035] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00036] Compute b k = .Math. p 𝒫 h p , k e j ( 2 f k p + p ) / .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" . endFor [00037] Compute 𝒦 = { k 𝒦 .Math. .Math. "\[LeftBracketingBar]" b k .Math. "\[RightBracketingBar]" 2 > 0 . 1 } . For p custom-character [00038] Compute p , k = h p , k * b k e - j 2 f k _ p for k 𝒦 _ . Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . //Herecustom-character (. ) is a phase-unwrapping function that for each k adds integer shifts of 2 to the argument to ensure that the phase- difference from previous sub-carrier in k.sub.1 satisfies |.sub.p,k .sub.p,k.sub.1| . [00039] Compute h p , k = h p , k e j 2 f k p e j ^ p . If p > P/10 [00040] Define Q p = { p 𝒫 | q p } Update b k = .Math. q Q p h q , k / .Math. "\[LeftBracketingBar]" Q p .Math. "\[RightBracketingBar]" . endIf endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . [0101] In a variant of this embodiment, the update of b.sub.k, can be changed to a recursive definition like b.sub.k=b.sub.k+(1).sub.p,k inside the loop for each p, where a is some design parameter, e.g., =0.9. [0102] In some embodiments, an additional backward pass for improving the estimation of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p from one or more embodiments described herein can be added for p<P/2. This is because CSI frames for p<P/2 may have insufficient history for accurate correction. This method can be performed as shown in the below algorithm:

    TABLE-US-00007 Inputs: h.sub.p,k for p custom-character , k custom-character . Run algorithm in one or more embodiments described herein to obtain estimates of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . [00041] Redefine Q p = { p 𝒫 | q > P / 2 } . Update b k = .Math. q Q p h q , k / .Math. "\[LeftBracketingBar]" Q p .Math. "\[RightBracketingBar]" . For p = P/2: (1): 0 [00042] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b k .Math. "\[RightBracketingBar]" . Compute ^ p = - [ .Math. k 𝒦 e - j 2 f k ^ p h p , k * b _ k ] . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . [0103] In some embodiments, an additional backward pass for improving the estimation of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p from one or more embodiments described herein can be added for p<P/2. This is because CSI frames for p<P/2 may have insufficient history for accurate correction. This method can be performed as shown in the below algorithm:

    TABLE-US-00008 Inputs: h.sub.p,k for p custom-character , k custom-character .sup.. Run algorithm in one or more embodiments described herein to obtain estimates of b.sub.k, .sub.p, {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, for each p custom-character . [00043] Redefine Q p = { p 𝒫 | q > P / 2 } . Update b k = .Math. q Q p h q , k / .Math. "\[LeftBracketingBar]" Q p .Math. "\[RightBracketingBar]" . For p = P/2: (1): 0 [00044] Compute p , k = h p , k * b k e - j 2 f k _ p for k 𝒦 _ . Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . //Here custom-character (. ) is a phase-unwrapping function that for each k custom-character adds integer shifts of 2 to the argument to ensure that the phase-difference from previous sub-carrier in k.sub.1 custom-character satisfies: [00045] .Math. "\[LeftBracketingBar]" p , k - p , k 1 .Math. "\[RightBracketingBar]" endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character .

    [0104] FIG. 10 illustrates an example of the impact of CSI gain correction on the CSI amplitude 1000 according to various embodiments of the present disclosure. The embodiment of the example of the impact of CSI gain correction on the CSI amplitude 1000 shown in FIG. 10 is for illustration only. Other embodiments of the example of the impact of CSI gain correction on the CSI amplitude 1000 could be used without departing from the scope of this disclosure.

    [0105] In one variant of step 3, instead of using a conventional phase unwrapping function custom-character(.Math.), a robust phase unwrapping function defined as:

    [00046] ~ ( p , k ) = mod { p , k - ( .Math. ( k ) p , ) + , 2 } - + ( .Math. ( k ) p , ) ,

    may be used, where custom-character(k) is a set that includes k and its 3 preceding and 3 succeeding indices in the sorted set custom-character. Such a phase unwrapping may be more robust to impact the effects of channel noise than conventional phase unwrapping.

    Step 4: Identifying and Removing Outliers (2):

    [0106] Of the custom-character corrected CSI samples, some may be too corrupted to be able to use for the purpose of sensing. Accordingly, after step 3, an additional step can be performed to identify and remove such outliers. In some embodiments, the outliers can be identified by checking for each sample pcustom-character, if the following equation is satisfied:

    [00047] .Math. k ( h p , k - .Math. q h p , k .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" ) 2 > Threshold

    [0107] If the above equation is satisfied, then the corresponding noisy CSI sample {.sub.p,k|kcustom-character} may be too corrupted. After identifying and removing such CSI samples, the remaining CSI samples may be represented by the set custom-character*.Math.P. Finally, {.sub.p,k|pcustom-character*, kcustom-character} can be used as the corrected CSI parameters to use as input for the sensing algorithm/method.

    [0108] Because different embodiments offer different trade-offs between estimation accuracy and computational complexity, an algorithm can be used to determine the appropriate embodiment to use for phase-error correction based on the requirement of the sensing application and the computational capabilities of the hardware. For example, if running on a phone or a device with low computational complexity, a low computational complexity method may be used.

    [0109] FIG. 11 illustrates an example flow diagram of a method 1100 for preprocessing WiFi CSI for supporting sensing applications according to various embodiments of the present disclosure. The embodiment of the example method 1100 for preprocessing WiFi CSI for supporting sensing applications shown in FIG. 11 is for illustration only. Other embodiments of the example method 1100 for preprocessing WiFi CSI for supporting sensing applications could be used without departing from the scope of this disclosure.

    [0110] As illustrated in FIG. 11, at step 1102, a trigger from a timer, external source or another algorithm is used to trigger the CSI preprocessing. At step 1104, the appropriate parameters for the CSI preprocessing are computed, including the batch size P, whether the gain correction and phase correction are required, the appropriate algorithms to use for gain and phase correction, etc. At step 1106, outlier detection and removal can be performed to remove the CSI samples that are too corrupted and thus obtain reduced batch custom-character. At step 1108, the determined gain error estimation and correction method can be applied to the raw CSI samples {tilde over (h)}.sub.p,k to obtain the gain corrected CSI samples h.sub.p,k. At step 1110, the determined phase error estimation and correction method can be applied to the gain corrected CSI samples h.sub.p,k to obtain the gain+phase corrected CSI samples .sub.p,k. At step 1112, an additional outlier removal step may be performed to remove some samples to identify a cleaned CSI set custom-character*. At step 1114, the preprocessed CSI samples {.sub.p,k|pcustom-character*, kcustom-character} can be fed to an appropriate sensing algorithm along with the time stamps or frame indices custom-character*.

    Comparison of Gain-Error Correction Embodiments:

    [0111] A comparison of the performance of the different algorithms described herein for gain-error correction using over 2000 realizations of simulated channels was performed. For the simulations, the following values were used: T.sub.rep=100 ms, custom-character={0,1, . . . ,299} and custom-character={0,1, . . . ,255}. In each realization h.sub.p,k is generated as:

    [00048] h p , k = b k + d p , k ,

    where b.sub.k is the static component of CSI that includes the line-of-sight path, reflected from static objects such as walls, and d.sub.p,k is the dynamic component of CSI that is time varying and includes the variation to be sensed by the sensing algorithm. For the simulations, the static component b.sub.k may be generated using the 802.11ax Model-C channel model, and for the dynamic component the following cases may be considered: [0112] i. d.sub.p,k is complex Gaussian distributed with variance 1, i.e., d.sub.p,kcustom-character(0,1) and it is independent and identically distributed for each pcustom-character and each kcustom-character. [0113] ii. d.sub.p,k=.sub.pe.sup.jf.sup.k.sup.(+.sup.0.sup.), where Uni[0,300) ns, .sub.0 is the delay of the line-of-sight path in b.sub.k, and .sub.0 is a complex Gaussian process of variance 1 with the Doppler power spectrum having a non-zero support on [0.5,1] Hz.

    [0114] Here, indicates the fraction of the CSI power that is coming from static paths. Among the gain impairments, for the large-scale gain, g.sub.p.sup.(1) may be used as a real Gaussian process with standard deviation 0.2 dB and a Doppler power spectrum with non-zero support on [0,0.1] Hz. For AGC gain, g.sub.p.sup.(1){0.5,0,0.5} dB with probabilities of {0.2, 0.6, 0.2}, respectively may be used. For testing the performance of the gain error correction methods, an assumption is made that there are no phase-errors, or that there is ideal phase-error correction.

    [0115] For quantifying the performance of the gain-correction algorithms, the correlation coefficient between d.sub.p,k and the dynamic component of processed CSI .sub.p,k may be defined as:

    [00049] = .Math. "\[LeftBracketingBar]" .Math. p .Math. k ( h p , k - b k ) * d p , k e j 2 f k .Math. "\[RightBracketingBar]" 2 ( 1 - ) K .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" ( .Math. p .Math. k .Math. "\[LeftBracketingBar]" h p , k - b k .Math. "\[RightBracketingBar]" 2 ) ,

    where

    [00050] b k = p h p , k / .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]"

    is the static component of the cleaned CSI and:

    [00051] = max .Math. "\[LeftBracketingBar]" .Math. k b k b k * e j 2 f k .Math. "\[RightBracketingBar]" ,

    is the timing offset between the true CSI and cleaned CSI. Note that .sup.2/(1.sup.2) is representative of the SNR in estimating d.sub.p,k from the cleaned CSI .sub.p,k.

    [0116] The post-cleaning SNR for different gain-error correction embodiments under ideal phase-error compensation may be obtained and their computation times may be tabulated to determine performance of the various embodiments regarding gain-error correction.

    Comparison of Phase-Error Correction Embodiments:

    [0117] A comparison of the performance of the different algorithms described herein for phase-error correction using over 2000 realizations of simulated channels was performed. For the simulations, the following values were used: T.sub.rep=100 ms, custom-character={0,1, . . . ,299} and custom-character={0,1, . . . ,255}. In each realization h.sub.p,k is generated as:

    [00052] h p , k = b k + d p , k ,

    where b.sub.k is the static component of CSI that includes the line-of-sight path, reflected from static objects such as walls, etc., and d.sub.p,k is the dynamic component of CSI that is time varying and includes the variation to be sensed by the sensing algorithm. For the simulations, the static component b.sub.k may be generated using the 802.11ax Model-C channel model, and for the dynamic component the following cases may be considered: [0118] i. d.sub.p,k is complex Gaussian distributed with variance 1, i.e., d.sub.p,kcustom-character(0,1) and it is independent and identically distributed for each pcustom-character and each kcustom-character. [0119] ii. d.sub.p,k=.sub.pe.sup.jf.sup.k.sup.(+.sup.0.sup.), where Uni[0,300) ns, .sub.0 is the delay of the line-of-sight path in b.sub.k, and .sub.0 is a complex Gaussian process of variance 1 with the Doppler power spectrum having a non-zero support on [0.5,1] Hz.

    [0120] Here, indicates the fraction of the CSI power that is coming from static paths. Among the phase errors, .sub.p, .sub.p may be modeled to be independent and identically distributed for each pcustom-character, with marginal distributions .sub.pUni[0, 10.sup.7) seconds and upUni[, ). For testing the performance of the phase error correction methods, an assumption is made that there are no gain-errors, or that there is ideal gain-error correction.

    [0121] For quantifying the performance of the phase-error correction algorithms, the correlation coefficient between d.sub.p,k and the dynamic component of processed CSI .sub.p,k may be defined as:

    [00053] = .Math. "\[LeftBracketingBar]" p k ( h p , k - b k ) * d p , k e j 2 f k .Math. "\[RightBracketingBar]" 2 ( 1 - ) K .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" ( p k .Math. "\[LeftBracketingBar]" h p , k - b k .Math. "\[RightBracketingBar]" 2 ) ,

    where

    [00054] b k = p h p , k / .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]"

    is static component of the cleaned CSI and:

    [00055] = max .Math. "\[LeftBracketingBar]" .Math. k b k b k * e j 2 f k .Math. "\[RightBracketingBar]" ,

    is the timing offset between the true CSI and cleaned CSI. Note that .sup.2/(1.sup.2) is representative of the SNR in estimating d.sub.p,k from the cleaned CSI .sub.p,k.

    [0122] The post-cleaning SNR for different phase-error correction embodiments under ideal gain-error compensation may be obtained and their computation times may be tabulated to determine performance of the various embodiments regarding phase-error correction.

    Comparison of Gain and Phase-Error Correction Embodiments in Respiration Rate Estimation:

    [0123] FIG. 12 illustrates an example setup 1200 used to determine performance of CSI preprocessing algorithms for respiration rate estimation according to various embodiments of the present disclosure. The embodiment of the example setup 1200 used to determine performance of CSI preprocessing algorithms for respiration rate estimation shown in FIG. 12 is for illustration only. Other embodiments of the example setup 1200 used to determine performance of CSI preprocessing algorithms for respiration rate estimation could be used without departing from the scope of this disclosure.

    [0124] To validate the performance of the CSI preprocessing algorithms, testing them in a real-world sensing application of respiration rate monitoring was conducted. In this experiment, a stationary WiFi TX and RX were setup in a room along with a subject whose respiration rate was to be monitored. The dimensions of the room were 7 m4 m, and an illustration of the setup is depicted in FIG. 12. The TX transmits WiFi packets on channel 155 of the 5 GHz ISM band with 20 MHz bandwidth and K=64 sub-carriers at intervals of T.sub.rep=100 ms. In each measurement episode (i), P=500 CSI samples were collected (i.e., corresponding to a measurement time of 50 secs). In total, 100 such episodes were considered, spanning different configurations of TX, RX, and subject locations. In each episode, the obtained CSI {{tilde over (h)}.sub.p,k|pcustom-character, kcustom-character} may be preprocessed using one of the gain and phase correction methods described herein to obtain {.sub.p,k|pcustom-character, kcustom-character} and then the Doppler power spectrum may be estimated as:

    [00056] ( ) = .Math. k .Math. "\[LeftBracketingBar]" .Math. p h p , k e - j 2 p T r e p .Math. "\[RightBracketingBar]" 2 ,

    for v={0.1:0.02:0.5} Hz. For each episode (i), the estimation SNR may be computed as:

    [00057] S N R ( i ) = ( .Math. .Math. "\[LeftBracketingBar]" - 0 .Math. "\[RightBracketingBar]" 0.02 ( ) ) / ( .Math. .Math. "\[LeftBracketingBar]" - 0 .Math. "\[RightBracketingBar]" > 0.02 ( v ) )

    where v.sub.0 is the ground-truth respiration rate (in Hz) of the subject as measured with a force belt. The mean SNR across the 100 episodes for different combinations of gain and phase compensation methods was tabulated, and performance results were obtained for different gain correction embodiments.

    [0125] In another alternative, the true channel can be modeled to have a dominant component that slowly updates with time:

    [00058] h p , k = b p , k + d p , k

    where b.sub.p,k is the dominant component of the channel including the line-of-sight path, reflections from walls and other slowly moving objects.

    Step 1: Identifying and Removing Outliers (1)

    [0126] In this case, the step 1 of outlier removal described above can again be performed. However, there can also be an alternative embodiment, where the outliers can be identified by checking for each sample 0p<P, if the following equation is satisfied:

    [00059] .Math. k ( .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" [ .Math. l .Math. "\[LeftBracketingBar]" h p , l .Math. "\[RightBracketingBar]" 2 ] 1 2 - .Math. q = p - A p + A .Math. "\[LeftBracketingBar]" h q , k .Math. "\[RightBracketingBar]" ( 2 A + 1 ) [ .Math. l .Math. "\[LeftBracketingBar]" h q , l .Math. "\[RightBracketingBar]" 2 ] 1 2 ) 2 > Threshold

    where A is a system parameter that can be related to the coherence time of the dominant component b.sub.p,k. For example, A=5/T.sub.rep, assuming a 10 sec coherence time of b.sub.p,k can be used. If the above equation is satisfied, then the corresponding noisy CSI sample {{tilde over (h)}.sub.p,k|kcustom-character} may be too corrupted. After identifying and removing such CSI samples, the remaining CSI samples may be represented by the set custom-character.Math.{0, . . . , P1}.

    Step 2: Estimating and Removing Gain Error

    [0127] In this case, the step 2 of gain removal described above can again be performed to obtain {h.sub.p,k|pP, kcustom-character}.

    Step 2.5: Identifying and Removing High Variability Regions

    [0128] In this alternative, an additional step of identifying high variability CSI frames may be performed, where the dominant channel component b.sub.p,k changes quickly over time (and correspondingly has a high Doppler). Note that such fast variations in the dominant component can cause a high interference and wash out the sensing signal, thus preventing its estimation. Correspondingly, a mechanism to identify such high variability regions may also be provided.

    [0129] In some embodiments, the high variability regions can be identified by checking whether the variance of the absolute value of the gain corrected CSI {h.sub.p,k|pcustom-character, kcustom-character} compared to its moving average value is higher than a threshold. In other words, a CSI sample pcustom-character, can be identified as a high variability sample if:

    [00060] .Math. k ( .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" - .Math. q = p - C C .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" 2 C + 1 ) 2 > Threshold ,

    where C is a design parameter, for example C=5.

    [0130] In another embodiment, pP can be identified as a high variance sample if:

    [00061] k q = 1 p - 1 ( .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" - r = 1 p - 1 .Math. "\[LeftBracketingBar]" h r , k .Math. "\[RightBracketingBar]" p - 1 ) 2 + k q = p P ( .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" - r = p P .Math. "\[LeftBracketingBar]" h r , k .Math. "\[RightBracketingBar]" P - p ) 2 k q = 1 P ( .Math. "\[LeftBracketingBar]" h p , k .Math. "\[RightBracketingBar]" - r = 1 P .Math. "\[LeftBracketingBar]" h r , k .Math. "\[RightBracketingBar]" P ) 2 < Threshold .

    [0131] In yet another embodiment, the set of high variance samples can be computed using a dynamic programming algorithm similar to the algorithms for V-optimal histograms.

    [0132] In some embodiments, the set of all such identified high variance samples may be represented by custom-character.sub.bad. In one embodiment, such samples can be removed from the CSI set as custom-character=custom-character\custom-character.sub.bad, before performing further preprocessing. In another embodiment, for all samples in pcustom-character.sub.bad, the estimation of the dynamic component b.sub.p,k can be performed differently from the samples in pcustom-character\custom-character.sub.bad, as explained in Step 3. For example, the filter bandwidth to estimate b.sub.p,k can be kept much larger for pcustom-character.sub.bad than for pcustom-character\custom-character.sub.bad.

    Step 3: Estimating and Removing Phase Errors:

    [0133] Along with the timing and phase errors {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, an estimate of the dominant channel component {b.sub.p,k|pcustom-character, kcustom-character} may be obtained so that the sensing signal can be estimated as:

    [00062] h p , k = h p , k e j 2 f k p e j ^ p and d p , k = h p , k - b p , k .

    [0134] Here the estimation of b.sub.p,k can be performed differently for pcustom-character.sub.bad and for pcustom-character\custom-character.sub.bad (see Step 2.5 above). Several algorithms for such estimation are discussed below. In a specific use-case, the desired algorithm may be determined based on the requirements of the sensing task. [0135] In some embodiments, it may be considered that the TX and RX have a strong line-of-sight path. In this case, an initial estimate of the line-of-sight component of the channel can be obtained first as b.sub.p,k. The timing and CPE errors can then be estimated via maximum-likelihood estimation as shown in the following algorithm:

    TABLE-US-00009 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00063] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00064] Compute b p , k = .Math. q = p - A p + A h p , k e j ( 2 f k p + p ) / ( 2 A + 1 ) . // Here A is a design variable indicating the coherence time of the dominant channel component. // Separate values of A can be used for p custom-character .sub.bad and p custom-character \ custom-character .sub.bad (see Step 2.5). The value of A used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \custom-character .sub.bad. endFor For p custom-character [00065] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b p , k .Math. "\[RightBracketingBar]" . Compute ^ p = [ .Math. k 𝒦 e - j 2 f k ^ p h p , k * b _ p , k ] . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character .sup.} for each p custom-character . [0136] In some embodiments, to reduce the complexity of search for ty in one or more embodiments described herein, a weighted least squares solution can be used. In addition, to reduce the noise and errors, the summation over subcarriers can be reduced to a smaller subcarrier set custom-character, as shown in the following algorithm:

    TABLE-US-00010 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00066] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00067] Compute b p , k = .Math. q = p - A p + A h p , k e j ( 2 f k p + p ) / ( 2 A + 1 ) . // Here A is a design variable indicating the coherence time of the dominant channel component. // Separate values of A can be used for p custom-character .sub.bad and p custom-character \custom-character .sub.bad (see Step 2.5). The value of A used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \ custom-character .sub.bad. endFor [00068] Compute 𝒦 = { k 𝒦 .Math. .Math. p 𝒫 .Math. "\[LeftBracketingBar]" b p , k .Math. "\[RightBracketingBar]" 2 > 0.1 .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" } For p custom-character [00069] Compute p , k = h p , k * b p , k e - j 2 f k p OR p , k = L P F { h p , k * b p , k e - j 2 f k p } for k 𝒦 . // Here LPF{. } is a low pass filter along the dimension k. [00070] Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . // Here custom-character (. ) is a phase-unwrapping function that for each k custom-character adds integer shifts of 2 to the argument to ensure that the phase-difference from previous sub-carrier in k.sub.1 custom-character satisfies |.sub.p,k .sub.p,k.sub.1| . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character .sup.} for each p custom-character . [0137] In some embodiments, it may be assumed that the channel between the TX and RX can have multi-path and correspondingly a small coherence bandwidth. Correspondingly, unlike in one or more embodiments described herein, the estimate of the dominant component b.sub.p,k may be refined after correcting each CSI sample as shown in the following algorithm:

    TABLE-US-00011 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00071] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00072] Compute b 0 , k = .Math. p = 0 A h p , k e j ( 2 f k p + p ) / ( A + 1 ) . // Here A is a design variable indicating the coherence time of the dominant channel component. endFor For p custom-character [00073] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b k .Math. "\[RightBracketingBar]" . Compute ^ p = [ .Math. k 𝒦 e - j 2 f k ^ p h p , k * b _ k ] . Compute h p , k = h p , k e j 2 f k p e j ^ p . Update b p + 1 , k = b _ p , k + ( 1 - ) h ^ p , k . // Here is a design parameter related to maximum Doppler of dominant channel component, e.g., = 1/(1 + 0.2T.sub.rep). // Separate values of can be used for P custom-character .sub.bad and p custom-character \ custom-character .sub.bad (see Step 2.5). The value of used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \ custom-character .sub.bad. endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character } for each p custom-character . [0138] In some embodiments, to reduce the complexity of search for {circumflex over ()}.sub.p in one or more embodiments described herein, a weighted least squares solution can be used. In addition, to reduce the noise and errors, the summation over subcarriers can be reduced to a smaller subcarrier set custom-character, as shown in the following algorithm:

    TABLE-US-00012 Inputs: h.sub.p,k for p custom-character , k custom-character . For p custom-character [00074] Compute p = T s 2 [ .Math. k = 0 K - 2 h p , k h p , k * ] . Compute p = - [ .Math. k 𝒦 h p , k e j 2 f k p ] . endFor For k custom-character [00075] Compute b 0 , k = .Math. p = 0 A h p , k e j ( 2 f k p + p ) / ( A + 1 ) . // Here A is a design variable indicating the coherence time of the dominant channel component. endFor [00076] Compute 𝒦 = { k 𝒦 .Math. .Math. p 𝒫 .Math. "\[LeftBracketingBar]" b p , k .Math. "\[RightBracketingBar]" 2 > 0.1 .Math. "\[LeftBracketingBar]" 𝒫 .Math. "\[RightBracketingBar]" } For p custom-character [00077] Compute p , k = h p , k * b p , k e - j 2 f k p OR p , k = L P F { h p , k * b p , k e - j 2 f k p } for k 𝒦 . // Here LPF{. } is a low pass filter along the dimension k. [00078] Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . //Herecustom-character (. ) is a phase-unwrapping function that for each k custom-character adds integer shifts of 2 to the argument to ensure that the phase-difference from previous sub-carrier in k.sub.1 custom-character satisfies |.sub.p,k .sub.p,k.sub.1| . [00079] Compute h p , k = h p , k e j 2 f k p e j ^ p . Update b p + 1 , k = b _ p , k + ( 1 - ) h ^ p , k . //Here is a design parameter related to maximum Doppler of dominant channel component, e.g., = 1/(1 + 0.2T.sub.rep). // Separate values of can be used for p custom-character .sub.bad and p custom-character \custom-character .sub.bad (see Step 2.5). The value of used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \custom-character .sub.bad. endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character } for each p custom-character . [0139] In some embodiments, an additional backward pass for improving the estimation of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p from one or more embodiments described herein can be added for p<P/2. This is because CSI frames for p<P/2 may have insufficient history for accurate correction. This method can be performed as shown in the below algorithm:

    TABLE-US-00013 Inputs: h.sub.p,k for p custom-character , k custom-character . Run algorithm in one or more embodiments described herein to obtain estimates of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, for each p custom-character . For p = P/2: (1): 0 [00080] Update b p , k = .Math. q = p - A p + A h q , k e j ( 2 f k q + q ) / ( 2 A + 1 ) . // Separate values of A can be used for p custom-character .sub.bad and p custom-character \ custom-character .sub.bad (see Step 2.5). The value of A used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \ custom-character .sub.bad. [00081] Compute p = arg max .Math. "\[LeftBracketingBar]" .Math. "\[RightBracketingBar]" T s / K .Math. "\[LeftBracketingBar]" .Math. k 𝒦 e - j 2 f k h p , k * b p , k .Math. "\[RightBracketingBar]" . Compute p = [ .Math. k 𝒦 e - j 2 f k ^ p h p , k * b _ p , k ] . endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character } for each p custom-character . [0140] In some embodiments, an additional backward pass for improving the estimation of {circumflex over ()}.sub.p, {circumflex over ()}.sub.p from one or more embodiments described herein can be added for p<P/2. This is because CSI frames for p<P/2 may have insufficient history for accurate correction. This method can be performed as shown in the below algorithm:

    TABLE-US-00014 Inputs: h.sub.p,k for p custom-character , k custom-character . Run algorithm in one or more embodiments described herein to obtain estimates of b.sub.k, .sub.p, {circumflex over ()}.sub.p, {circumflex over ()}.sub.p for each p custom-character . For p = P/2: (1): 0 [00082] Update b p , k = b p + 1 , k + ( 1 - ) h p + 1 , k . // Separate values of can be used for p custom-character .sub.bad and p custom-character \custom-character .sub.bad (see Step 2.5). The value of used for p custom-character .sub.bad can be much smaller than what is used for p custom-character \custom-character .sub.bad. [00083] Compute p , k = h p , k * b p , k e - j 2 f k p OR p , k = L P F { h p , k * b p , k e - j 2 f k p } for k 𝒦 . // Here LPF{. } is a low pass filter along the dimension k. [00084] Compute p , p = arg min , { .Math. k 𝒦 p , k [ 2 f k ( - p ) + - 𝒰 ( p , k ) ] 2 } . //Here custom-character (. ) is a phase-unwrapping function that for each k custom-character adds integer shifts of 2 to the argument to ensure that the phase- difference from previous sub-carrier in k.sub.1 custom-character satisfies: [00085] .Math. "\[LeftBracketingBar]" p , k - p , k 1 .Math. "\[RightBracketingBar]" endFor Return {circumflex over ()}.sub.p, {circumflex over ()}.sub.p, {b.sub.p,k|k custom-character } for each p custom-character .

    [0141] An illustration of the impact of using different values of or A (based on the embodiment of step 3) for pcustom-character\custom-character.sub.bad and pcustom-character.sub.bad is depicted in FIG. 13. As shown in FIG. 13, the use of different values reduces the amount of interference in the cleaned CSI, thus enabling better sensing operation.

    [0142] FIG. 13 illustrates an example of using different values of A or in the phase-correction step for samples pcustom-character.sub.bad 1300 according to various embodiments of the present disclosure. The embodiment of the example of using different values of A or in the phase-correction step for samples pcustom-character.sub.bad 1300 shown in FIG. 13 is for illustration only. Other embodiments of the example of using different values of A or in the phase-correction step for samples pcustom-character.sub.bad 1300 could be used without departing from the scope of this disclosure.

    [0143] In one variant of step 3 described above, instead of using a conventional phase unwrapping function custom-character(.Math.), a robust phase unwrapping function may be used, defined as:

    [00086] ( p , k ) = mod { p , k - ( .Math. ( k ) p , ) + , 2 } - + ( .Math. ( k ) p , ) ,

    where custom-character(k) is a set that includes k and its 3 preceding and 3 succeeding indices in the sorted set custom-character. Such a phase unwrapping may be more robust to impact the effects of channel noise than conventional phase unwrapping.

    Step 4: Identifying and Removing Outliers (2):

    [0144] Of the custom-character corrected CSI samples, some may be too corrupted to be able to be used for the purpose of sensing. Accordingly, after step 3, an additional step can be performed to identify and remove such outliers. In some embodiments, the outliers can be identified by checking for each sample pcustom-character, if the following equation is satisfied:

    [00087] .Math. k ( h p , k - b p , k ) 2 > Threshold

    [0145] If the above equation is satisfied, then the corresponding noisy CSI sample {.sub.p,k|kcustom-character} may be too corrupted. After identifying and removing such CSI samples, the remaining CSI samples may be represented by the set custom-character*.Math.custom-character.

    [0146] Finally, {.sub.p,k, b.sub.p,k|pcustom-character*, kcustom-character} can be used as the corrected CSI parameters to use as input for the sensing algorithm/method.

    [0147] FIG. 14 illustrates an example flow diagram 1400 of an alternative embodiment for preprocessing WiFi CSI for supporting sensing applications according to various embodiments of the present disclosure. The embodiment of the example flow diagram 1400 for preprocessing WiFi CSI for supporting sensing applications shown in FIG. 14 is for illustration only. Other embodiments of the example flow diagram 1400 for preprocessing WiFi CSI for supporting sensing applications could be used without departing from the scope of this disclosure.

    [0148] As illustrated in FIG. 14, at step 1402, a trigger from a timer, external source or another algorithm is used to trigger the CSI preprocessing. At step 1404, the appropriate parameters for the CSI preprocessing are computed, including the batch size P, whether the gain correction and phase correction are required, the appropriate algorithms to use for gain and phase correction, etc. At step 1406, outlier detection and removal can be performed to remove the CSI samples that are too corrupted. At step 1408, the determined gain error estimation and correction method can be applied to obtain gain corrected CSI samples. At step 1410, the high variation sample detection method can be applied. At step 1412, the determined phase error correction method, with appropriate estimation of dominant channel component at high variability can be applied to the gain corrected CSI samples. At step 1414, an additional outlier removal step may be performed to remove some samples to identify a cleaned CSI set. At step 1416, the preprocessed CSI samples after gain and phase error correction can be computed, and fed, with their time stamps, to the appropriate sensing algorithm.

    [0149] FIG. 15 illustrates a flowchart of a method 1500 for wireless communication performed by a station device according to embodiments of the present disclosure. The example method 1500 shown in FIG. 15 is for illustration only. Other embodiments of the example method 1500 could be used without departing from the scope of this disclosure.

    [0150] As illustrated in FIG. 15, the method 1500 begins at step 1502, where the STA receives a sequence of frames. At step 1504, the STA obtains a channel state information (CSI) set, comprising the CSI for each of the frames. At step 1506, the STA determines one or more variations in the CSI set caused by at least one of a device impairment, a synchronization issue, or an unintended signal. At step 1508, the STA performs a preprocessing procedure configured to: correct one or more errors in gain and phase of each CSI of the CSI set caused by at least one of the device impairment or the synchronization issue, and filter at least one variation caused by the unintended signal. At step 1510, the STA identifies at least one of an outlier or a variation in CSI set that affects a sensing task, and performs at least one preprocessing operation configured to filter the outlier or the variation in CSI set.

    [0151] In one embodiment, the STA determines the one or more variations in each obtained CSI of the CSI set by estimating a gain error for the CSI, the gain error comprising a large-scale gain and an automatic gain control (AGC) gain.

    [0152] In one embodiment, the gain error for each CSI of the CSI set is computed based on a power of the CSI in a logarithm-scale and statistics of the CSI set.

    [0153] In one embodiment, the STA performs the preprocessing procedure by determining a gain corrected CSI set, each gain corrected CSI of the gain corrected CSI set being computed from each CSI of the CSI set and the corresponding estimated gain error.

    [0154] In one embodiment, to determine one or more variations in the CSI set, the STA identifies if each CSI in the CSI set is a high variability CSI, the determination being based on if a deviation of a magnitude of a gain corrected CSI corresponding to the CSI from gain corrected CSIs corresponding to neighboring gain CSIs of the CSI set is higher than a threshold.

    [0155] In one embodiment, to determine the one or more variations in each CSI of the CSI set, the STA estimates a phase error, wherein to estimate the phase error, the STA estimates a timing error associated with a frame reception time, and estimates a common phase error (CPE) associated with a difference in carrier phase between a transmitter of a frame and the STA.

    [0156] In one embodiment, the estimation of the timing error and CPE for a CSI of the CSI set is performed chronologically, based on a comparison of a gain corrected CSI corresponding to the CSI to phase corrected CSIs corresponding to preceding CSIs in the CSI set.

    [0157] In one embodiment, to perform the preprocessing operation, the STA determines a phase corrected CSI set, each phase corrected CSI of the phase corrected CSI set being computed from a gain corrected CSI, the estimated timing error, and the estimated CPE.

    [0158] In one embodiment, to filter out an unintended signal, the STA subtracts a dominant channel component from each phase corrected CSI to obtain a non-dominant CSI, the dominant channel component for a CSI being determined by lowpass filtering a phase corrected CSI set based on whether the CSI is a high variability CSI.

    [0159] In one embodiment, to identify the at least one of an outlier or a variation in CSI data, the STA identifies a change in a non-dominant CSI compared to its neighboring non-dominant CSI that exceeds a threshold.

    [0160] The above flowcharts illustrate example methods that can be implemented in accordance with the principles of the present disclosure and various changes could be made to the methods illustrated in the flowchart. For example, while shown as a series of steps, various steps could overlap, occur in parallel, occur in a different order, or occur multiple times. In another example, steps may be omitted or replaced by other steps.

    [0161] Although the present disclosure has been described with an exemplary embodiment, various changes and modifications may be suggested to one skilled in the art. It is intended that the present disclosure encompass such changes and modifications as fall within the scope of the appended claims. None of the description in this application should be read as implying that any particular element, step, or function is an essential element that must be included in the claims scope. The scope of patented subject matter is defined by the claims.