我是靠谱客的博主 动听小虾米,最近开发中收集的这篇文章主要介绍基于WIFI信号的呼吸和心率检测(论文总结)呼吸和心率检测,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

高频率信号:

频率越高波长越短,饶射(衍射效果)能力越弱,但穿透能力(不变方向)越强,信号穿透会损失很大能量,所以传输距离就可能越近,频率越高在传播过程的损耗越大。

 

超带宽的理解:

超宽带技术(UWB,Ultra Wide Band)技术是一种新型的无线通信技术。它通过对具有很陡上升和下降时间的冲激脉冲进行直接调制,使信号具有GHz量级的带宽。

超宽带技术解决了困扰传统无线技术多年的有关传播方面的重大难题,它具有对信道衰落不敏感、发射信号功率谱密度低、低截获能力、系统复杂度低、能提供数厘米的定位精度等优点。

 

心率检测设备调研:

UWB用于生命信号检测,跌倒检测和室内物体定位

超带宽的频率在80GHz,好处:能提高信噪比,避免由内部器官层而不是呼吸和心跳带来的影响

 

Q. Liu, Y. Wang, and A. E. Fathy, “Towards low cost, high speed data
sampling module for multifunctional real-time UWB radar,” IEEE Trans.
Aerosp. Electron. Syst., vol. 49, no. 2, pp. 1301–1316, Apr. 2013.
 

 

uwb最开始做的定位,后来转向做生理,采集的信号比WiFi设备的要好很多

 

1、decawave的DWM1001开发板

Module development board used as an Anchor, Tag or Gateway device, in an RTLS system

开发板说明和购买地址:https://www.icbase.com/Product.aspx?id=6013686

 

2、uwb开发板(师兄推荐,测距定位)

http://www.woxuwireless.com/html/products/product_list.html?external_member_list.html

 

3、IR-UWB(自然论文中使用设备)

https://www.xethru.com/xethru-development-platform.html

X4M06购买链接:https://shop.xethru.com/x4m06

国内联系代理商:http://woshimingyu8888.testmart.cn/?channel=9/&id=12689

测心率时屏住呼吸

ADC:实现模拟信号到数字信号的转换

 

4、HST-D3(心率检测方面没说)

http://umain.co.kr/hst-d3-evaluation-kit/

可进行呼吸检测,并且效果很好

 

5、研创物联UWB Mini(淘宝)

咨询过技术支持,只能返回距离信息,https://item.taobao.com/item.htm?spm=a230r.1.14.21.56381b15PYoJ0D&id=534520089244&ns=1&abbucket=4#detail

 

心率检测

呼吸频率和呼吸的谐波频率占主要的频率成分,呼吸的谐波频率会与心跳的主频产生重叠

基于相位的算法(已验证有效)能抑制谐波,并且避免呼吸和心率的互调

 

心理检测就不能使用csi数据,因为心脏血管导致的振动节拍(即心脏舒张和心脏收缩)比呼吸小

 

心率于呼吸相比有更高的频率

 

uwb采集数据图像:

 

方法:

方法一:

滤除呼吸干扰:怎么滤除?

功率谱分析:PSD,power spectral density(PSD),求所有子载波的PSD和均值PSD

求解信号的PSD方法:功率谱的计算需要信号先做自相关,然后再进行FFT运算(频谱的计算则是将信号直接进行FFT就行了)

 

方法二:

分别讨论呼吸和屏住呼吸情况

利用CSD方法,C. Li and J. Lin, “Random body movement cancellation in Doppler
radar vital sign detection,” IEEE Trans. Microw. Theory Techn., vol. 56,
no. 12, pp. 3143–3152, Dec. 2008.

心率范围:

1Hz-1.33Hz(这说明应该保留1.5Hz内的频谱)

bpm是什么单位?每分钟节拍数,Beat Per Minute。 60bpm to 80bpm

 

获取相位差数据设备的调研:

umain
    UWB-Radar108R (呼吸监测) 呼吸监测UWB雷达模块组
        http://www.umain.co.kr/zh-hans/shop/uwb-radar108r/
    HST-D3 Evaluation Kit Raspberry Pi 3联动型雷达传感器应用开发Kit
        http://www.umain.co.kr/zh-hans/shop/hst-d3/

NOVELDA
    RESPIRATION SENSOR X4M200 呼吸检测
        https://www.xethru.com/x4m200-respiration-sensor.html
    CUSTOM SENSOR DEVELOPMENT X4M03 | X4M06 自行拓展开发
        https://www.xethru.com/xethru-development-platform.html

 

使用专业设备来进行误差判断

使用加速度传感器来进行小波变换后的波形对比

 

 

 

 

整合所有子载波

多个天线形成的FZ可能重叠

盲区点的问题(实验时人)是躺在Los上的,是够检测到呼吸(先呼吸再屏住呼吸)

无法接收到精确的CSI相位信息,因为主机无法做到时钟同步。相位角波形画出来

两根天线的csi的共轭乘法。csi信号的幅度和相位具有完美的互性

测量信号到胸部的距离方法直接否定了(信号传播的距离与胸部位移精度不匹配)

不同与CW多普勒雷达,测量的CSI会受到严重的相位失真影响,导致在正交调制时的频率偏移

CSI相位和幅度是互补的

 

FZ的圈上用相位做,LOS上用幅度做

 

幅度做

关于WiFi呼吸检测的论文:Wi-Sleep [22] appears to be the frst work to
exploit WiFi CSI information for respiration detection during sleep. This work is then extended in [23]
where the sleeping postures and abnormal breathing patterns are considered. Liu et al. [21] further propose
to track both respiration rate and heart rate during sleep. Wu et al. [39] extend respiration detection from
sleeping to standing posture for stationary human detection.

相位做精确度更高(PhaseBeat has shown to achieve a considerably
higher accuracy than the amplitude based method for breath rate estimation.)

While they utilize WiFi CSI amplitude for
respiration detection, TensorBeat [37] and PhaseBeat [36] exploit WiFi CSI phase difference between two
receiver antennas to extract respiration rate and heart rate.
相位的周期性也能说明问题,至少能用CSI相位或者幅度中的一者去检测呼吸

 

移除相位偏移:与两根天线都有关系

基于WIFI的呼吸检测和基于雷达的呼吸检测

基于WiFi的:分为两类:基于模式和基于模型

 

异常点去除(左右100个点)

采样频率设置多少合适

 

频谱分析

呼吸频率在0.2-0.33hz,相当于一个呼吸周期在3s-5s,512个点相当2.56s,不到一个波形,取1024个点相当于2个完整波形,取2048相当于4个完整的波形

 

1024个点的频谱精度在0.2左右

2048个精度能到0.1,前20000个点 500步长

滑动窗口分析全部波形:

步长不能取100,步长起码取512

 

频谱的幅度低于最大幅度的25%,就去掉,然后逆变换得到较好的波形

 

用子载波进行处理

用子载波的IFFT变换后的时域波形进行处理(博客上的处理过程?)

 

去除直流分量,整个窗口和滑动窗口

 

实现过程:

时间序列ecg,直接取dat数据

 

②递归图分析(Recurrence quantification analysis)

五个参数的含义:https://en.wikipedia.org/wiki/Recurrence_quantification_analysis

问题:

小波变换后不知道那个波形对应的那个子载波?(根据图是看不出来的,第一个子载波位置不知道)

选一个固定长的窗口(一个窗口包含多少数据包),子载波的选择也在不断改变

近似的周期信号怎么求出呼吸频率?

通过递归图的对应的熵值(这种方法是否可信有待验证)

 

 

根据频谱图,看一下信号的频域和噪声的频谱,与呼吸的频率是否可以对应上(时域信号到频域,心跳信号揉在里面)

最佳波形的幅频图如下:

这里的频谱有问题:

确定原始信号的频率成分

FFT变换是采样频率和点数的是否有影响(尤其是采样频率)

方法:可以使用巴特沃斯滤波器,对比与小波变换后的波形图和频谱图

 

加速度计,对标(调研)

确定出发包的时间间隔(自己试验时确定)

小波变换的具体过程(各个参数表示的什么含义)

信号叠加起来效果可能更好(没尝试)

 

 

matlab程序:

数据实时可视化:https://blog.csdn.net/u014645508/article/details/82887470?utm_source=blogxgwz2(ubantu系统下实时画第一个图)

 

 

NIC5300的三个天线使用相同的时钟和相同的下变频器频率

来自两根天线的子载波i的相位有相同的包检测延迟,采样周期和频率差异(这也是处理数据的重要方法,直接计算两根天线上子载波的相位差)

相位差数据的图像是周期性的正弦波

相位可以理解成角度

人体活动早成信道失真和相位偏移

 

频域内的信道模型:

 

WiFi心率检测系统应包括下面四个模块:

数据提取,数据预处理,呼吸率估计和心率估计

现成的WiFi设备提取两个接收天线之间的CSI相位差数据

 

1、环境检测:用于检测人的状态(sitting、walking、standing up),大的运动会导致比呼吸和心跳更大的csi方差,通过设置一个阈值,就可以检测到较大的动作。当信号范围内没有人时,相位差数据是一条非常小的波动。当这个人站起来或正在走路的时候,相位差数据表现出较大的波动(用于检测物体是否移动)

论文中通过信号的幅度变化实现运动静止检测(论文后面也是使用相位差来做的),这里使用相位差来检测(首选方法)

randomly distributed raw phase can be calibrated by conducting phase difference over a pair of antennas(通过一对天线的相位差)

下图怎么画出来

相位差的计算方法:

2、数据校准:去除直流分量和高频噪声。直流分量影响子载波选择,峰值检测和FFT频率估计

防跌倒检测中用到相位校准

时延,子载波频率偏移

3、子载波选择:并不是所有的载波都会用到

4、离散小波变换(DWT):be decomposed into an approximation coefficients vector with a low-pass filter and a detail coefficients vector with a high-pass filter

  •         the approximation coefficient vector : the basic shape of the input signal with large scale characteristics
  •         detail coefficient vector :describes the high frequency noises and the detailed information with small scale characteristics

 

 

5、

level4的近似系数:用于获取去噪的呼吸信号

细节系数:用于重建心率信号

 

单人使用峰值检测

多人使用root-MUSIC method

 

 

 

专业术语:

相位:在函数y=Acos(ωx+φ)中,ωx+φ称为相位(通过圆上一点的移动画出正弦波形,此时对应的角度即为相角)

 

工具:

win10  MATLAB(linux安装MATLAB:https://blog.csdn.net/guituo9698/article/details/70553521)

相位差直接用设备检测出来的(没有手动处理得到)

文件:

ubantu系统下的matlab文件夹

CSI数据包:在inject文件夹中的那个,不是netlink中的

 

处理过程:

参考官网链接:https://dhalperi.github.io/linux-80211n-csitool/faq.html

https://blog.csdn.net/sinat_22991367/article/details/78187440

提示如下错误:

①这样当然会出错,read_bf_file函数不存在。

②这里的路径也存在问题(应该将编写的.m文件保存在matlab目录下)

解决方法:

read_bf_file.m文件在安装的ubantu系统下的MATLAB文件夹的中(但是自己安装的系统MATLAB文件夹下没有这些文件),将ubantu系统中的MATLAB文件夹移至windows系统中

将编写的读数据文件路径也保存在此目录下,如上图的show_csi.m文件

csi_trace = read_bf_file('sample_data/10_25.dat');

这里一定要注意程序中的调用路径,自己将数据放在matlab的sample_data目录下,在程序中sample_data不能少

csi_trace = read_bf_file('sample_data/10_25.dat');
csi_entry=csi_trace{1};                     %只取了一个包的数据
csi = get_scaled_csi(csi_entry);        %将数据包中的CSI数据单独取出
subplot(1,2,1)
plot(db(abs(squeeze(csi).')))              %降维成30×3的矩阵
legend('RX Antenna A', 'RX Antenna B', 'RX Antenna C', 'Location', 'SouthEast' );       %因此此处的横坐标表示的子波索引,纵轴表示此数据包中,子波的幅度
xlabel('Subcarrier index');
ylabel('SNR [dB]');

5300网卡有三个天线,三个线段代表三个接收天线的csi数据。如果你要简化计算,可以只取用第一个天线的数据,很多论文是这样处理。为了保证更高的精确性,三个天线的数据也可以都使用。(更复杂的情况是多发射天线多接收天线,就不止3个线段了,你会遇到ntx为2或3的情况,ntx为发射天线的个数,nrx为接收天线的个数)

 

实验结果:

直接从dat文件读取出来的是很多数据包,每个数据包的格式的格式如下:

timestamp_low:NIC网卡1MHz时钟的低32位。它大约4300s(72min)重复一回。 (从0-2^32需要4300s)
bfee_count:驱动记录并发送到用户控件的波束测量值的总数。内核和用户空间中netlink频道是有损的,可以用该变量来检测被丢弃的测量值。 
Nrx:接收端使用的天线数量。 
Ntx:发送端使用的天线数量。 
rssi_a, rssi_b, rssi_c:由接收端NIC测量出的RSSI值。 
perm:展示NIC如何将3个接收天线的信号排列到3个RF链上,上图中的数据表示天线A被发送到RF链A,天线B被发送到RF链B,天线C被发送到RF链C。 
rate:发包频率。 
csi:CSI值

此图对应一个数据包的图像,横轴表示子载波索引,纵轴表示这一个数据包中子载波的幅度

 

%实际情况时域柱状图
csi_trace = read_bf_file('sample_data/10_25.dat');
for l=1:100  %取50个数据包的数据
    csia=get_scaled_csi(csi_trace{l});
    for k=1:30    %30个子载波数据
        B(1,1,k)=csia(1,1,k);%只是取了csia每行数据的前两个
    end
    csi_one=squeeze(B).';    
    
    for ki=1:30    %30个子载波数据
        csi_amp(ki,l)=csi_one(ki);    %第l个数据包的第k个子载波的幅度        【子载波,数据包】
    end
end
 
csi_ifft=ifft(csi_amp(:,1));
 
T_amp=abs(csi_ifft);
 
 bar(T_amp);
 
 set(gca,'XTick',[0 10 20 30]);
 
 set(gca,'xticklabel',{'0','0.5','1','1.5'});
 
 xlabel('Delay (ms)');
 
 ylabel('Amplitude(dB)');

csia_trace:实验只取了前100个数据包进行处理,每个包含有的数据如上

通过get_scaled_csi函数处理,csia_trace得到caia,30行(30个子载波),每行3个数据

再从每个子载波中选出第一个数据,得到B,30行,每行一个数据(这个数据就包含了CSI的幅度和相位信息)

通过squeeze函数,将B转化为1行30列的数据

最终得到50个数据包的30个载波的相位值(30行对应30个子载波,50列对应50个数据包)

 

 

子载波相位值通过FFT逆变换得到时域柱状图,纵轴表示信号的幅度,怎么画成曲线图并且画出更多的数据包?

这里应该是每个子载波的幅度值(每个子载波都是周期信号吗?),应该求出所有载波的幅度?

这里的横纵应该是Subcarrier index(?)

应该画出下面的图形(每个子载波随时间的变化)

 

相位图

实验结果和博客上的相差很大

 

 

CSI的跌倒检测:

数据处理参考链接:https://github.com/dmsp123/FallDeFi

 


Python处理数据:

所有py文件放在一个文件夹下,直接打开文件夹,不能单个单个打开文件(不想C#中打开一个工程链接文件就能打开整个工程)

需要安装h5py模块,在win+r-cmd下执行

pip install cython
pip install h5py

再在pycharm中添加h5py的包


显然GitHub上是有数据处理的过程的,只是自己限定词范围问题

CSI WiFi(全部浏览了一遍,还是没有合适的程序)

要相信百度上一定有你需要的code,只是你自己没有找到而已(找别人要是不现实的)

打开别人的工程文件时,直接shift,打开所有的.m文件,不要打开一两个,这样很容易出错

 

 

调研设备:

umain设备:http://www.umain.co.kr/zh-hans/shop/uwb-radar108p/?ckattempt=1(室内监测)

uwb测量系统:http://www.geozondas.com/(设备样子和论文里差不多)

超宽带芯片:www.decawave.com

应该是买开发板自己做

 

UWB Impulse Doppler Radar用于室内人体定位

TREK开发板主要用于测距和定位

Decawave的DW1000是世界上第一款基于超宽带技术的单芯片无线收发器。该芯片使您能够开发具有成本效益的RTLS解决方案,精确的室内和室外定位在10厘米以内。(市面上的WiFi模块应该大多采用DW1000的芯片)

该芯片通过提供准确的位置感知和通信,为实时定位和室内定位系统,基于位置的服务,无线传感器网络和物联网提供了一种新方法

 

 

专业术语:

UWB:超带宽,工作在1.5-4.5 GHz的带宽

signal-to-noise ratio (SNR):信噪比

state-space method (SSM):最初开发用于雷达目标识别和特征提取,现在可用于放大呼吸和心跳的光谱成分。由于CSD和AD方法

 SSM是参数估计方法,非常有效抑制谐波和互调频率,改善SNR

呼吸和心率检测

怎么感觉两个是不同的方法:

通过无线信号CSI实现

通过设备uwb radar实现

 

百度专利说明:

基于WiFi中CSI信号强度的非侵入式呼吸心跳检测实现方法。本发明立足于对信道状态分析,实现了非侵入式人体健康监护。无线网卡从每个接收到的数据包中获取其中一种CSI,对CSI进行傅立叶变化,利用呼吸和心跳频率的不同从中分离出呼吸和心跳信号频域信息,再利用傅立叶反变换提取出各自的时域信息,并对其进行平滑处理,实现呼吸和心跳信号数据可视化。同时,将心跳信号与麻省理工学院的心律失常数据库进行曲线比对,如发现异常,提醒用户,该发明可广泛应用于家庭医疗监护。

注:基于相位的方法优于直接FFT方法,avoiding harmonics and intermodulation products

 

工具:

uwb脉冲雷达在哪里购买?The radar  was used to collect the data雷达收集数据,发送设备是什么?

脉冲传感器(使用Arduino的PulseSensor)和呼吸(RSP)传感器(NeuLog NUL-236传感器):采集的数据作为参考数据。最终用于计算误差,对数方法表示这个心率能降低误差

antenna:天线的作用是什么?

路由器:不设置密码的网址

tplogin.cn(设置的密码删除,保存)

数据:使用芯片的什么数据?

方法:(这一步大致了解一下)

①提出了一种利用相位变化的对数方法(LM)由周期性胸腔位移引起的反射脉冲,以准确地检测心率

优点:LM method is capable of suppressing harmonics and avoiding respiration and heartbeat intermodulation seriously hurting conventional methods (CM).

抑制谐波

避免呼吸和心跳互调(intermodulation 互调是什么意思?)

实验结果:

横轴表示心率,每分钟心跳多少次。纵轴表示归一化谱(什么是归一化谱)

传统方法和对数方法的比较

 

看完论文要知道目的:

通过uwb雷达实现无线测心率和呼吸数据,传统是呼吸传感器和心率传感器

无线   一个设备能测两个数据

我们获取到的CSI信号能检测心率吗?

 

Noncontact Multiple Heartbeats Detection and
Subject Localization Using UWB
Impulse Doppler Radar

胸部位移引起信号的相位变化,从而检测呼吸

检测由微小的心脏运动引起的反射脉冲的相位变化,从而检测出心率

工具:UWB radars(UWBDoppler radar,UBW:ultra-wideband超宽带 ):UWB多普勒雷达能够进行多次心跳检测和定位

 

UWB多普勒雷达监测生命体征,即呼吸速率(BR)和心率(HR)。

detecting the changes in time of flight of narrow pulses emitted by the radar and reflected from the human chest.

检测窄脉冲的变化(发射前和发射后的窄脉冲)

这里只用了一台无线设备吗?

 

respiration rate can be readily detected using Fast Fourier Transform (FFT) of the slow-time samples along the traversed range bins, but it is not straightforward to determine a subject heart rate with high accuracy in this manner

呼吸速率能很容易检测出

心率就不能使用同样的方法检测

 

a filter utilizing a Moving Target Indicator is introduced to cancel harmonics of respiration signals.

移动目标检测滤波器用于校区呼吸信号的谐波

 

Phase-Based Methods for Heart Rate Detection
Using UWB Impulse Doppler Radar
基于相位的方法同样是尽可能的滤掉呼吸产生的谐波

胸部位移引起信号的相位变化

一个电源,一个发射器,一个接收器和一个数据收集数字电路板

发射器不断发出脉冲信号

在参考波形情况下,实验波形效果不是很好:

波形都能刻画出来,心率肯定能做出来

 

接下来对波形进行分析(接着第6页继续看)

 

数据处理的一些方法:

1、通过CSI信号检测心率和呼吸论文

①CSI的处理

对接收信号进行IFFT(傅里叶逆变换):得到近似的时域功率延迟曲线

去掉时域较小的信号分量

将剩下的时域信号再进行FFT变换

②过滤(breathing from 0.2 Hz to 0.33 Hz [5] and heartbeat cycles from 1 Hz to 1.33 Hz [6])

需要移除身体移动产生的影响和高频噪声,通过滤波器滤波后得到如下图的结果

③子载波选择

每一个子载波对于呼吸和心跳都有不同的敏感程度。如果用到所有的子载波,计算成本会很高

相邻子载波的近似的CSI值

选择的方法:通过一个时间窗口计算CSI幅度的方差,用于量化那些子载波对运动比较敏感。选择方差较大的子载波,方差越大对呼吸和心跳产生的微小运动才能越敏感

④分割(这个步骤不是很明白)

 

3、WI-sleep(这个才叫真正的论文,用的每一个方法都解释了为什么不用其他方法,大多数论文都只是说了用这个方法,没有说为什么用这个方法)

直接选择了天线1的第10个载波

跌倒检测中的坐在椅子上的数据和行走的数据差别很大

最后

以上就是动听小虾米为你收集整理的基于WIFI信号的呼吸和心率检测(论文总结)呼吸和心率检测的全部内容,希望文章能够帮你解决基于WIFI信号的呼吸和心率检测(论文总结)呼吸和心率检测所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部