基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法转让专利

申请号 : CN201610152570.1

文献号 : CN105741491B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何坚周明我张岩张丞

申请人 : 北京工业大学

摘要 :

本发明公开了基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法,包括:采集模块、处理模块、传输模块、识别模块、判断模块和通知模块;采集模块用于采集人体活动中上躯干部位的三维加速度和三维角速度数据;处理模块通过三维加速度和三维角速度数据计算合加速度与合角速度;识别模块基于卡尔曼滤波与KNN算法对人体活动状态进行分类识别,识别出人体的运动类型;判断模块判断是否为“跌倒”类型,当判断结果为“跌倒”类型时,通知模块通过设置的报警方式通知设定的联系人。本发明通过基于卡尔曼滤波与KNN算法对人体活动状态进行识别,检测准确率高、误报率低;具备通信功能,能够实时通知跌倒老人的亲属,确定跌倒位置。

权利要求 :

1.一种基于卡尔曼滤波与KNN算法的跌倒检测报警系统,其特征在于,包括:采集模块、处理模块、传输模块、识别模块、判断模块和通知模块;

所述采集模块包括三轴加速度传感器和三轴陀螺仪,三轴加速度传感器和三轴陀螺仪以采样频率f分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度 数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度, 为沿x轴方向的角速度, 为沿y轴方向的角速度, 为沿z轴方向的角速度;

所述处理模块与所述采集模块相连,用于计算合加速度a与合角速度 其中:所述识别模块通过所述传输模块与所述处理模块相连,用于对接收的合加速度数据和合角速度数据进行卡尔曼滤波,并通过KNN算法对人体活动状态进行分类识别,识别出人体的运动类型;所述运动类型包括:“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型、“步行”类型中的一种或多种;所述卡尔曼滤波包括:同时计算所采集的合加速度与合角速度数据中第k个数据的预测值,第k个数据包括第k个合加速度数据或第k个合角速度数据;

X(k|k-1)=AX(k-1|k-1)+BU(k)其中,X(k|k-1)为第k个合加速度a或合角速度 的预测值,X(k-1|k-1)为上一个数据的最优化估算值,即第k-1个合加速度a或合角速度 的滤波结果;A和B为系统参数,U(k)为第k个数据对系统的控制量;

计算第k个数据预测值的协方差矩阵,度量其精确程度;

P(k|k-1)=AP(k-1|k-1)AT+Q(k)其中,P(k|k-1)为第k个数据预测值的协方差矩阵,P(k-1|k-1)为X(k-1|k-1)对应的协T方差,A为系统参数A的转置矩阵,Q(k)为第k个数据的过程噪声的协方差;

计算第k个数据的卡尔曼增益系数Kg(k);

T

其中,P(k|k-1)为X(k|k-1)对应的协方差,H与H分别为测量系数及其相应的转置矩阵,R为测量噪声的协方差;

计算第k个数据的最优化估算值;

X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]其中,X(k|k)为第k个数据的最优化估算值,即第k个合加速度a或合角速度 的滤波结果,Z(k)为第k个数据的测量值,即第k个合加速度a或合角速度 H为测量系统的系数;

计算第k个数据的滤波结果的协方差矩阵P(k|k);

P(k|k)=(1-Kg(k)H)P(k|k-1);

检验k值是否与接收到的数据长度相等,若相等,进行后续操作;否则使k=k+1,循环;

其中,第一个数据的最优化估算值及其对应的协方差为预设值,通过卡尔曼滤波实现第二个数据至所有数据的检测;

所述判断模块与所述识别模块相连,用于判断人体的运动类型是否为“跌倒”类型;

所述通知模块与所述判断模块相连,当判断模块的判断结果为“跌倒”类型时,通知模块通过设置的报警方式通知设定的联系人。

2.如权利要求1所述的基于卡尔曼滤波与KNN算法的跌倒检测报警系统,其特征在于,所述判断模块中,当判断结果不属于“跌倒”类型时,则返回采集模块重新进行数据采集。

3.如权利要求1所述的基于卡尔曼滤波与KNN算法的跌倒检测报警系统,其特征在于,所述识别模块包括:初始化子模块,与所述传输模块相连;用于接收人体活动中上躯干部位的合加速度与合角速度;

滤波子模块,与所述初始化子模块相连,用于对合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据;

采样子模块,与所述滤波子模块相连;采样子模块内建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m;用于以采样频率f接收滤波子模块中的合加速度与合角速度并分别依次存入滑动窗口acc[m]和angle[m]中;

判定子模块,与所述采样子模块相连,用于判定滑动窗口acc[m]和angle[m]是否已经填满;若没有填满,则继续进行合加速度数据和合角速度数据采集;

计算子模块,与所述判定子模块相连,当滑动窗口acc[m]和angle[m]均已填满,将滑动窗口acc[m]中的合加速度数据和angle[m]中的合角速度数据作为测试样本,计算子模块基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;所述训练样本是指包含所有运动类型的数据库,每类运动类型包括多个该类型的训练样本,每个运动类型的训练样本与测试样本的长度相同,均为m;

其中:测试样本与每个训练样本之间的欧几里得距离的计算公式为:式中:D(t,di)表示测试样本t与训练样本di之间的欧几里得距离;

at和 为测试样本的合加速度与合角速度,at1和 分别代表测试样本t在滑动窗口acc[m]与angle[m]内的第一个合加速度与合角速度数据;

ai和 为第i个训练样本的合加速度与合角速度,ai1和 分别代表第i个训练样本内的第一个合加速度与合角速度数据;

依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。

4.如权利要求1所述的基于卡尔曼滤波与KNN算法的跌倒检测报警系统,其特征在于,所述处理模块为微处理器,所述传输模块为蓝牙设备。

5.如权利要求1所述的基于卡尔曼滤波与KNN算法的跌倒检测报警系统,其特征在于,所述通知模块中设置的报警方式包括:向预设联系人号码拨打电话进行报警,或者向预设联系人号码发送含有用户位置信息的短信进行报警。

6.一种监控终端,其特征在于,包含权利要求1-5任一项中的识别模块、判断模块、通知模块,所述识别模块、所述判断模块、所述通知模块依次相连。

7.一种如权利要求1-5任一项所述的基于卡尔曼滤波与KNN算法的跌倒检测报警系统的报警方法,其特征在于,包括:步骤1、采集模块中的三轴加速度传感器和三轴陀螺仪以采样频率f分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度 数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度, 为沿x轴方向的角速度, 为沿y轴方向的角速度, 为沿z轴方向的角速度;

步骤2、处理模块计算合加速度a与合角速度 其中:

步骤3、传输模块传输合加速度a和合角速度 数据到识别模块;

步骤4、识别模块对接收到的合加速度与合角速度的数据进行卡尔曼滤波,并通过KNN算法对人体活动状态分类识别,识别出人体的运动类型;

步骤5、判断模块判断人体的运动类型是否为“跌倒”类型,若为“跌倒”类型则执行步骤

6,否则执行步骤1;

步骤6、通知模块根据所设置的报警方式通知预设的联系人。

8.如权利要求7所述的报警方法,其特征在于,所述步骤4包括:步骤401、接收人体活动中上躯干部位的合加速度与合角速度;

步骤402、对接收到的合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据;

步骤403、建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m;以采样频率f接收人体活动中上躯干部位的合加速度与合角速度并分别依次存入滑动窗口acc[m]和angle[m]中;

步骤404、判断滑动窗口acc[m]和angle[m]是否已经填满,没有填满则继续执行步骤

403,否则执行步骤405;

步骤405、基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;

其中:测试样本与每个训练样本之间的欧几里得距离的计算公式为:式中:D(t,di)表示测试样本t与训练样本di之间的欧几里得距离;

at和 为测试样本的合加速度与合角速度,at1和 分别代表测试样本t在滑动窗口acc[m]与angle[m]内的第一个合加速度与合角速度数据;

ai和 为第i个训练样本的合加速度与合角速度,ai1和 分别代表第i个训练样本内的第一个合加速度与合角速度数据;

依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。

9.如权利要求8所述的报警方法,其特征在于,所述步骤402中对接收到的合加速度与合角速度的数据进行卡尔曼滤波的方法为:步骤4021、同时计算所采集的合加速度与合角速度数据中第k个数据的预测值,第k个数据包括第k个合加速度数据或第k个合角速度数据;

计算公式为:

X(k|k-1)=AX(k-1|k-1)+BU(k)其中,X(k|k-1)为第k个合加速度a或合角速度 的预测值;

X(k-1|k-1)为上一个数据的最优化估算值,即第k-1个合加速度a或合角速度 的滤波结果;

A和B为系统参数;

U(k)为第k个数据对系统的控制量;

步骤4022、计算第k个数据预测值的协方差矩阵,度量其精确程度;

计算公式为:

P(k|k-1)=AP(k-1|k-1)AT+Q(k)其中,P(k|k-1)为第k个数据预测值的协方差矩阵;

P(k-1|k-1)为X(k-1|k-1)对应的协方差;

AT为系统参数A的转置矩阵;

Q(k)为第k个数据的过程噪声的协方差;

步骤4023、计算第k个数据的卡尔曼增益系数Kg(k);

其中,P(k|k-1)为X(k|k-1)对应的协方差;

H与HT分别为测量系数及其相应的转置矩阵;

R为测量噪声的协方差;

步骤4024、计算第k个数据的最优化估算值;

计算公式为:

X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]其中,X(k|k)为第k个数据的最优化估算值,即第k个合加速度a或合角速度 的滤波结果;

Z(k)为第k个数据的测量值,即第k个合加速度a或合角速度H为测量系统的系数;

步骤4025、计算第k个数据的滤波结果的协方差矩阵P(k|k);

P(k|k)=(1-Kg(k)H)P(k|k-1);

步骤4026、检验k值是否与接收到的数据长度相等,若相等,直接执行步骤403,否则使k=k+1,循环步骤4021~步骤4025;其中,第一个数据的最优化估算值及其对应的协方差为预设值,通过卡尔曼滤波实现第二个数据至所有数据的检测。

10.如权利要求7所述的报警方法,其特征在于,所述步骤6中设置的报警方式包括:向预设联系人号码拨打电话进行报警,或者向预设联系人号码发送含有用户位置信息的短信进行报警。

说明书 :

基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法

技术领域

[0001] 本发明涉及电子检测技术领域,尤其涉及基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法。

背景技术

[0002] 目前人口老龄化程度的日益加剧,跌倒已经成为影响老年人健康的一个严重问题,它不仅严重影响了老年人的身体健康和独立生活能力,还造成了老年人心理上的负担和恐惧,有时造成的后果甚至是致命的。采取适当的措施进行跌倒检测报警可以使他们得到及时的救助,避免一些不必要的麻烦,同时也能减少医药开销。
[0003] 现在针对老年人的跌倒检测方法主要分为三种:第一种是基于视频监测,在特定区域安装视频监视器,在该区域对人体进行跟踪监测;第二种是基于振动监测,在地面安装振动传感器,当振动传感器周围一定范围内人体跌倒时,振动传感器会振动;第三种是基于人体姿势和动作监测,人体跌倒前姿势和方向会发生变化,通过测定人体跌倒过程中各种物理量的变化,来判断人体是否跌倒。这几种方法各有利弊,基于视频监测和基于振动监测都受到环境和空间的限制,视频监测还涉及隐私的问题,振动监测的识别准确率不好,很容易造成误判。而基于人体姿态和动作的监测采用的是移动便携设备,环境和空间上没有受到限制,也能和现有的通信技术、检测技术相结合,更有利于老年人跌倒的检测。然而针对人体姿态和动作的监测,目前国内外的研究趋势主要是基于加速度阈值的判定,但是阈值法存在很大局限;当人体进行蹲起、坐下等与跌倒动作幅度相似的运动时,就很容易发生误报。这种检测方法比较单一,造成的误警率比较高,也不具备通信功能,不能实时通知跌倒老人的亲属,确定跌倒位置。

发明内容

[0004] 针对上述问题中存在的不足之处,本发明提供基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法。
[0005] 为实现上述目的,本发明提供一种基于卡尔曼滤波与KNN算法的跌倒检测报警系统,包括:采集模块、处理模块、传输模块、识别模块、判断模块和通知模块;
[0006] 所述采集模块包括三轴加速度传感器和三轴陀螺仪,三轴加速度传感器和三轴陀螺仪以采样频率f分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度ωx、ωy、ωz数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度,ωx为沿x轴方向的角速度,ωy为沿y轴方向的角速度,ωz为沿z轴方向的角速度;
[0007] 所述处理模块与所述采集模块相连,用于计算合加速度a与合角速度ω,其中:
[0008] 所述识别模块通过所述传输模块与所述处理模块相连,用于接收合加速度数据和合角速度数据,并对人体活动状态进行分类识别,识别出人体的运动类型;所述运动类型包括:“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型、“步行”类型中的一种或多种;
[0009] 所述判断模块与所述识别模块相连,用于判断人体的运动类型是否为“跌倒”类型;
[0010] 所述通知模块与所述判断模块相连,当判断模块的判断结果为“跌倒”类型时,通知模块通过设置的报警方式通知设定的联系人。
[0011] 作为本发明的进一步改进,所述判断模块中,当判断结果不属于“跌倒”类型时,则返回采集模块重新进行数据采集。
[0012] 作为本发明的进一步改进,所述识别模块包括:
[0013] 初始化子模块,与所述传输模块相连;用于接收人体活动中上躯干部位的合加速度与合角速度;
[0014] 滤波子模块,与所述初始化子模块相连,用于对合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据;
[0015] 采样子模块,与所述滤波子模块相连;采样子模块内建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m;用于以采样频率f接收滤波子模块中的合加速度与合角速度并分别依次存入滑动窗口acc[m]和angle[m]中;
[0016] 判定子模块,与所述采样子模块相连,用于判定滑动窗口acc[m]和angle[m]是否已经填满;若没有填满,则继续进行合加速度数据和合角速度数据采集;
[0017] 计算子模块,与所述判定子模块相连,当滑动窗口acc[m]和angle[m]均已填满,将滑动窗口acc[m]中的合加速度数据和angle[m]中的合角速度数据作为测试样本,计算子模块基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;所述训练样本是指包含所有运动类型的数据库,每类运动类型包括多个该类型的训练样本,每个运动类型的训练样本与测试样本的长度相同,均为m;
[0018] 其中:测试样本与每个训练样本之间的欧几里得距离的计算公式为:
[0019]
[0020] 式中:D(t,di)表示测试样本t与训练样本di之间的欧几里得距离;
[0021] at和ωt为测试样本的合加速度与合角速度,at1和ωt1分别代表测试样本t在滑动窗口acc[m]与angle[m]内的第一个合加速度与合角速度数据;
[0022] ai和ωi为第i个训练样本的合加速度与合角速度,ai1和ωi1分别代表第i个训练样本内的第一个合加速度与合角速度数据;
[0023] 依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。
[0024] 作为本发明的进一步改进,所述处理模块为微处理器,所述传输模块为蓝牙设备。
[0025] 作为本发明的进一步改进,所述通知模块中设置的报警方式包括:向预设联系人号码拨打电话进行报警,或者向预设联系人号码发送含有用户位置信息的短信进行报警。
[0026] 本发明还公开了一种监控终端,包含上述的识别模块、判断模块、通知模块,所述识别模块、所述判断模块、所述通知模块依次相连。
[0027] 本发明还公开了一种基于卡尔曼滤波与KNN算法的跌倒检测报警方法,包括:
[0028] 步骤1、采集模块中的三轴加速度传感器和三轴陀螺仪以采样频率f分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度ωx、ωy、ωz数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度,ωx为沿x轴方向的角速度,ωy为沿y轴方向的角速度,ωz为沿z轴方向的角速度;
[0029] 步骤2、处理模块计算合加速度a与合角速度ω,其中:
[0030] 步骤3、传输模块传输合加速度a和合角速度ω数据到识别模块;
[0031] 步骤4、识别模块对接收到的合加速度与合角速度的数据进行卡尔曼滤波,并通过KNN算法对人体活动状态分类识别,识别出人体的运动类型;
[0032] 步骤5、判断模块判断人体的运动类型是否为“跌倒”类型,若为“跌倒”类型则执行步骤6,否则执行步骤1;
[0033] 步骤6、通知模块根据所设置的报警方式通知预设的联系人。
[0034] 作为本发明的进一步改进,所述步骤4包括:
[0035] 步骤401、接收人体活动中上躯干部位的合加速度与合角速度;
[0036] 步骤402、对接收到的合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据;
[0037] 步骤403、建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m;以采样频率f接收人体活动中上躯干部位的合加速度与合角速度并分别依次存入滑动窗口acc[m]和angle[m]中;
[0038] 步骤404、判断滑动窗口acc[m]和angle[m]是否已经填满,没有填满则继续执行步骤403,否则执行步骤405;
[0039] 步骤405、基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;
[0040] 其中:测试样本与每个训练样本之间的欧几里得距离的计算公式为:
[0041]
[0042] 式中:D(t,di)表示测试样本t与训练样本di之间的欧几里得距离;
[0043] at和ωt为测试样本的合加速度与合角速度,at1和ωt1分别代表测试样本t在滑动窗口acc[m]与angle[m]内的第一个合加速度与合角速度数据;
[0044] ai和ωi为第i个训练样本的合加速度与合角速度,ai1和ωi1分别代表第i个训练样本内的第一个合加速度与合角速度数据;
[0045] 依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。
[0046] 作为本发明的进一步改进,所述步骤402中对接收到的合加速度与合角速度的数据进行卡尔曼滤波的方法为:
[0047] 步骤4021、同时计算所采集的合加速度与合角速度数据中第k个数据的预测值,第k个数据包括第k个合加速度数据或第k个合角速度数据;
[0048] 计算公式为:
[0049] X(k|k-1)=AX(k-1|k-1)+BU(k)
[0050] 其中,X(k|k-1)为第k个合加速度a或合角速度ω的预测值;
[0051] X(k-1|k-1)为上一个数据的最优化估算值,即第k-1个合加速度a或合角速度ω的滤波结果;
[0052] A和B为系统参数;
[0053] U(k)为第k个数据对系统的控制量;
[0054] 步骤4022、计算第k个数据预测值的协方差矩阵,度量其精确程度;
[0055] 计算公式为:
[0056] P(k|k-1)=AP(k-1|k-1)AT+Q(k)
[0057] 其中,P(k|k-1)为第k个数据预测值的协方差矩阵;
[0058] P(k-1|k-1)为X(k-1|k-1)对应的协方差;
[0059] AT为系统参数A的转置矩阵;
[0060] Q(k)为第k个数据的过程噪声的协方差;
[0061] 步骤4023、计算第k个数据的卡尔曼增益系数Kg(k);
[0062]
[0063] 其中,P(k|k-1)为X(k|k-1)对应的协方差;
[0064] H与HT分别为测量系数及其相应的转置矩阵;
[0065] R为测量噪声的协方差;
[0066] 步骤4024、计算第k个数据的最优化估算值;
[0067] 计算公式为:
[0068] X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]
[0069] 其中,X(k|k)为第k个数据的最优化估算值,即第k个合加速度a或合角速度ω的滤波结果;
[0070] Z(k)为第k个数据的测量值,即第k个合加速度a或合角速度ω;
[0071] H为测量系统的系数;
[0072] 步骤4025、计算第k个数据的滤波结果的协方差矩阵P(k|k);
[0073] P(k|k)=(1-Kg(k)H)P(k|k-1);
[0074] 步骤4026、检验k值是否与接收到的数据长度相等,若相等,直接执行步骤403,否则使k=k+1,循环步骤4021~步骤4025;其中,第一个数据的最优化估算值及其对应的协方差为预设值,通过卡尔曼滤波实现第二个数据至所有数据的检测。
[0075] 作为本发明的进一步改进,所述步骤6中设置的报警方式包括:向预设联系人号码拨打电话进行报警,或者向预设联系人号码发送含有用户位置信息的短信进行报警。
[0076] 与现有技术相比,本发明的有益效果为:
[0077] 本发明公开的基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法,通过卡尔曼滤波对接收的合角速度和合角速度数据进行数据滤波,避免了噪声等外界因素对KNN算法的影响,降低了报警系统的误报率;通过KNN算法计算测试样本与训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。本发明可以更准确地描述人体动作复杂的变化趋势,有效避免阈值法存在的误差;检测准确率高、误报率低;具备通信功能,能够实时通知跌倒老人的亲属,确定跌倒位置;采用监控终端检测,方便小巧,便于携带;操作简单,检测方法没有受到环境和空间上的限制。

附图说明

[0078] 图1为本发明一种实施例公开的基于卡尔曼滤波与KNN算法的跌倒检测报警系统的框架图;
[0079] 图2为图1中识别模块的框架图;
[0080] 图3为本发明一种实施例公开的基于卡尔曼滤波与KNN算法的跌倒检测报警方法的流程图;
[0081] 图4为图3中识别人体活动状态的流程图;
[0082] 图5为本发明一种实施例公开的加速度、角速度坐标示意图。
[0083] 图中:1、采样模块;2、处理模块;3、传输模块;4、识别模块;4-1、初始化子模块;4-2、滤波子模块;4-3、采样子模块;4-4、判定子模块;4-5、计算子模块;5、判断模块;6、通知模块。

具体实施方式

[0084] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0085] 下面结合附图对本发明做进一步的详细描述:
[0086] 实施例1:如图1-2、5所示,本发明提供一种基于卡尔曼滤波与KNN算法的跌倒检测报警系统,包括:采集模块1、处理模块2、传输模块3、识别模块4、判断模块5和通知模块6;其中:识别模块4、判断模块5和通知模块6构成监控终端,识别模块4、判断模块5、通知模块6依次相连;该监控终端可为智能手机。
[0087] 采集模块1包括三轴加速度传感器和三轴陀螺仪,三轴加速度传感器和三轴陀螺仪安装在人体的上躯干部位,三轴加速度传感器和三轴陀螺仪以100次/每秒的采样频率分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度ωx、ωy、ωz数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度,ωx为沿x轴方向的角速度,ωy为沿y轴方向的角速度,ωz为沿z轴方向的角速度,如图5所示。
[0088] 处理模块2与采集模块1相连,处理模块2选用微处理器用于计算每个采集点的合加速度a与合角速度ω,其中:
[0089] 识别模块4通过传输模块3与处理模块2相连,用于接收合加速度数据和合角速度数据,利用卡尔曼滤波对接收的数据进行滤波处理,基于KNN算法对人体活动状态进行分类识别,识别出人体的运动类型;运动类型包括:“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型和“步行”类型等等;传输模块3采用蓝牙设备进行数据传输;
[0090] 识别模块4包括:初始化子模块4-1、滤波子模块4-2、采样子模块4-3、判定子模块4-4和计算子模块4-5;
[0091] 初始化子模块4-1,与传输模块3相连;用于接收人体活动中上躯干部位的合加速度与合角速度;
[0092] 滤波子模块4-2,与初始化子模块4-1相连,用于对合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据。由于报警系统受到硬件器材的影响,数据中的噪声往往会造成KNN算法的准确率降低,导致系统误报率的提升;为了滤除传感器可能带来的噪声数据,采用卡尔曼滤波算法可有效提高KNN算法的运行效率,进一步提高跌倒检测与报警系统的检测水平;卡尔曼滤波的原理为:卡尔曼滤波是通过将系统第k个数据的测量值Z(k)与预测值X(k|k-1)相结合,从而计算第k个数据的最优化估算值X(k|k),并将其作为k时刻的滤波结果;卡尔曼滤波适用于线性系统,由于在数据采样过程中,采样频率f很高,两帧间的时间间隔非常小,因此相邻帧的运动可视为呈线性;其具体的滤波过程为:
[0093] 一、预设第一个数据的最优化估算值及其对应的协方差,通过卡尔曼滤波实现第二个数据至所有数据的检测;同时计算所采集的合加速度与合角速度数据中第k个数据的预测值,第k个数据包括第k个合加速度数据或第k个合角速度数据;
[0094] 第k个合加速度数据的预测值和第k个合角速度的预测值分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0095] X(k|k-1)=AX(k-1|k-1)+BU(k)
[0096] 其中,X(k|k-1)为第k个合加速度a或合角速度ω的预测值;
[0097] X(k-1|k-1)为上一个数据的最优化估算值,即第k-1个合加速度a或合角速度ω的滤波结果;
[0098] A和B为系统参数,在理想模型中可直接设为1;
[0099] U(k)为第k个数据对系统的控制量,由于本发明设计的系统没有控制量,因此U(k)可以设置为0。
[0100] 二、计算第k个数据预测值的协方差矩阵,度量其精确程度;
[0101] 第k个合加速度数据预测值的协方差矩阵和第k个合角速度预测值的协方差矩阵分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0102] P(k|k-1)=AP(k-1|k-1)AT+Q(k)
[0103] 其中,P(k|k-1)为第k个数据预测值的协方差矩阵;
[0104] P(k-1|k-1)为X(k-1|k-1)对应的协方差,初始状态P(0|0)可设置为0;
[0105] AT为系统参数A的转置矩阵,在理想模型中可直接设为1;
[0106] Q(k)为第k个数据的过程噪声的协方差,理想状况下,根据接收到数据测量值的取值范围,可设置合加速度a的Q(k)为满足均值为0、方差为0.12的高斯分布的随机数,合角速度ω的Q(k)为满足均值为0、方差为10.80的高斯分布的随机数。
[0107] 三、计算第k个数据的卡尔曼增益系数Kg(k);第k个合加速度数据的卡尔曼增益系数和第k个合角速度数据的卡尔曼增益系数分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0108]
[0109] 其中,P(k|k-1)为X(k|k-1)对应的协方差;
[0110] H与HT分别为测量系数及其相应的转置矩阵,在理想模型中均可直接设为1;
[0111] R为系统测量噪声的协方差,噪声的协方差与三轴加速度传感器和三轴陀螺仪选取的型号有关;如本实施例的三轴加速度传感器采用Analog Devices公司的ADXL345,三轴陀螺仪采用InvenSense公司的ITG3200,故合加速度a的测量噪声协方差为0.005969,合角速度ω的测量噪声协方差为0.700000。
[0112] 四、计算第k个数据的最优化估算值;第k个合加速度数据的最优化估算值和第k个合角速度数据的最优化估算值分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0113] X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]
[0114] 其中,X(k|k)为第k个数据的最优化估算值,即第k个合加速度a或合角速度ω的滤波结果;
[0115] X(k|k-1)为第k个合加速度a或合角速度ω的预测值;
[0116] Kg(k)为第k个数据的卡尔曼增益系数;
[0117] Z(k)为第k个数据的测量值,即第k个合加速度a或合角速度ω;
[0118] H为测量系统的系数,在理想模型中均可直接设为1。
[0119] 五、计算第k个数据的滤波结果的协方差矩阵P(k|k);第k个合加速度数据的滤波结果的协方差矩阵和第k个合角速度数据的滤波结果的协方差矩阵分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0120] P(k|k)=(1-Kg(k)H)P(k|k-1);
[0121] P(k|k)为X(k|k)对应的协方差;
[0122] Kg(k)为第k个数据的卡尔曼增益系数;
[0123] H为测量系统的系数,在理想模型中均可直接设为1;
[0124] P(k|k-1)为X(k|k-1)对应的协方差。
[0125] 六、检验k值是否与接收到的数据长度相等,即:检验滤波过程从k=2是否一直到所有数据均滤波完成,若相等,则得到的滤波后的数据供采样子模块采集,否则使k=k+1,循环一~五;其中,第一个最优化估算值及其对应的协方差为预设值,通过卡尔曼滤波实现第二个数据至所有数据的检测。
[0126] 采样子模块4-3,与滤波子模块4-2相连;采样子模块4-3内建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m,窗口长度可以根据实际应用进行设置,本发明优选m=200;采样子模块4-3以100次/每秒的采样频率采集滤波子模块4-2中的合加速度与合角速度并分别依次存入滑动窗口acc[200]和angle[200]中;
[0127] 判定子模块4-4,与采样子模块4-3相连,用于判定滑动窗口acc[200]和angle[200]是否已经填满(滑动窗口acc[200]和angle[200]填充是同时进行的,因此acc[200]和angle[200]是同时填满的);若没有填满,则继续进行合加速度数据和合角速度数据采集;
[0128] 计算子模块4-5,与判定子模块4-4相连,当滑动窗口acc[200]和angle[200]均已填满,将滑动窗口acc[200]中的合加速度数据和angle[200]中的合角速度数据作为测试样本,计算子模块4-5基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;训练样本是指包含所有运动类型的数据库,每类运动类型包括多个该类型的训练样本,每个运动类型的训练样本与测试样本的长度相同,均为m=200。基于KNN算法的具体计算过程为:
[0129] 假设训练样本总量为100,分为“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型共5个运动类型,其中每个运动类型各占20个训练样本;训练样本的数据以及训练类型是预先采集的,其样本内的数据是已知的;每个训练样本的长度均为200(其中测试样本和每个训练样本的合加速度和合角速度本身是一个波形,为了便于计算其被分割成了200段);测试样本与100个训练样本基于KNN算法依次计算测试样本与每个训练样本之间的欧几里得距离;其计算公式为:
[0130]
[0131] 式中:D(t,di)表示测试样本t与训练样本di(i=1~100)之间的欧几里得距离;
[0132] at和ωt为测试样本的合加速度与合角速度,at1和ωt1分别代表测试样本t在滑动窗口acc[200]与angle[200]内的第一个合加速度与合角速度数据;
[0133] ai和ωi为第i个训练样本(i=1~100)的合加速度与合角速度,ai1和ωi1分别代表第i个训练样本内的第一个合加速度与合角速度数据;
[0134] 依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,其中欧几里得距离共计100个结果;从100个距离结果中找出其中J个最近距离,J根据实际应用进行设计,本发明中设定J=5;选取5个最近距离后测试样本与哪5个训练样本计算得到的最近距离,统计这5个训练样本的运动类型,根据运动类型所占概率的最大值,判断当前时刻测试样本所属的运动类型(若5个最近距离的训练样本的运动类型包括4个“跌倒”类型和1个“站立”类型,则由于“跌倒”类型所占的概率大,则判断当前时刻的运动类型为“跌倒”类型)。
[0135] 判断模块5与识别模块4相连,用于判断人体的运动类型是否为“跌倒”类型;当判断结果不属于“跌倒”类型时,则返回采集模块1重新进行数据采集,同时采样子模块4-3内的滑动窗口均移出一个数据重新进行计算;比如,第一次检测时,滑动窗口内的数据为1-200;第二次检测时滑动窗口的数据为2-201,依次类推;通知模块6与判断模块5相连,当判断模块5的判断结果为“跌倒”类型时,通知模块6通过设置的报警方式通知设定的联系人;
其中:通知模块6中设置的报警方式包括:监控终端向预设联系人号码拨打电话进行报警,或者监控终端向预设联系人号码发送含有用户位置信息的短信进行报警。
[0136] 进一步,本实施例的三轴加速度传感器采用Analog Devices公司的ADXL345,其测量范围是±16g;三轴陀螺仪采用InvenSense公司的ITG3200,其测量范围是±2000°/s;微处理器采用Atmel公司的ATmega168PA-AU;蓝牙模块采用CSR公司的BC04-B,其有效通讯距离为10米,波特率为115200bps;传感器采样频率为100Hz;若监控终端为智能手机,则智能手机运行Android4.0系统。
[0137] 实施例2:如图3-5所示,本发明还公开了一种基于卡尔曼滤波与KNN算法的跌倒检测报警方法,包括:
[0138] 步骤1、三轴加速度传感器和三轴陀螺仪安装在人体的上躯干部位,三轴加速度传感器和三轴陀螺仪以100次/每秒的采样频率分别实时采集人体活动中上躯干部位的三维加速度ax、ay、az数据和三维角速度ωx、ωy、ωz数据;其中:ax为沿x轴方向的加速度,ay为沿y轴方向的加速度,az为沿z轴方向的加速度,ωx为沿x轴方向的角速度,ωy为沿y轴方向的角速度,ωz为沿z轴方向的角速度,如图5所示;
[0139] 步骤2、微处理器计算每个采集点的合加速度a与合角速度ω,其中:
[0140]
[0141] 步骤3、蓝牙设备传输合加速度a和合角速度ω数据到监控终端;
[0142] 步骤4、监控终端对接收到的合加速度与合角速度的数据进行卡尔曼滤波,基于KNN算法对人体活动状态进行分类识别,识别出人体的运动类型;运动类型包括:“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型和“步行”类型等等;
[0143] 步骤401、接收人体活动中上躯干部位的合加速度与合角速度;
[0144] 步骤402、对接收到的合加速度与合角速度的数据进行卡尔曼滤波,得到卡尔曼滤波后的合加速度与合角速度的数据;由于报警系统受到硬件器材的影响,数据中的噪声往往会造成KNN算法的准确率降低,导致系统误报率的提升;为了滤除传感器可能带来的噪声数据,采用卡尔曼滤波算法可有效提高KNN算法的运行效率,进一步提高跌倒检测与报警系统的检测水平;卡尔曼滤波的原理为:卡尔曼滤波是通过将系统第k个数据的测量值Z(k)与预测值X(k|k-1)相结合,从而计算第k个数据的最优化估算值X(k|k),并将其作为k时刻的滤波结果;卡尔曼滤波适用于线性系统,由于在数据采样过程中,采样频率f很高,两帧间的时间间隔非常小,因此相邻帧的运动可视为呈线性;其具体的滤波过程为:
[0145] 步骤4021、预设第一个数据的最优化估算值及其对应的协方差,通过卡尔曼滤波实现第二个数据至所有数据的检测;同时计算所采集的合加速度与合角速度数据中第k个数据的预测值,第k个数据包括第k个合加速度数据或第k个合角速度数据;
[0146] 第k个合加速度数据的预测值和第k个合角速度的预测值分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0147] X(k|k-1)=AX(k-1|k-1)+BU(k)
[0148] 其中,X(k|k-1)为第k个合加速度a或合角速度ω的预测值;
[0149] X(k-1|k-1)为上一个数据的最优化估算值,即第k-1个合加速度a或合角速度ω的滤波结果;
[0150] A和B为系统参数,在理想模型中可直接设为1;
[0151] U(k)为第k个数据对系统的控制量,由于本发明设计的系统没有控制量,因此U(k)可以设置为0。
[0152] 步骤4022、计算第k个数据预测值的协方差矩阵,度量其精确程度;
[0153] 第k个合加速度数据预测值的协方差矩阵和第k个合角速度预测值的协方差矩阵分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0154] P(k|k-1)=AP(k-1|k-1)AT+Q(k)
[0155] 其中,P(k|k-1)为第k个数据预测值的协方差矩阵;
[0156] P(k-1|k-1)为X(k-1|k-1)对应的协方差,初始状态P(0|0)可设置为0;
[0157] AT为系统参数A的转置矩阵,在理想模型中可直接设为1;
[0158] Q(k)为第k个数据的过程噪声的协方差,理想状况下,根据接收到数据测量值的取值范围,可设置合加速度a的Q(k)为满足均值为0、方差为0.12的高斯分布的随机数,合角速度ω的Q(k)为满足均值为0、方差为10.80的高斯分布的随机数。
[0159] 步骤4023、计算第k个数据的卡尔曼增益系数Kg(k);第k个合加速度数据的卡尔曼增益系数和第k个合角速度数据的卡尔曼增益系数分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0160]
[0161] 其中,P(k|k-1)为X(k|k-1)对应的协方差;
[0162] H与HT分别为测量系数及其相应的转置矩阵,在理想模型中均可直接设为1;
[0163] R为系统测量噪声的协方差,噪声的协方差与三轴加速度传感器和三轴陀螺仪选取的型号有关;如本实施例的三轴加速度传感器采用Analog Devices公司的ADXL345,三轴陀螺仪采用InvenSense公司的ITG3200,故合加速度a的测量噪声协方差为0.005969,合角速度ω的测量噪声协方差为0.700000。
[0164] 步骤4024、计算第k个数据的最优化估算值;第k个合加速度数据的最优化估算值和第k个合角速度数据的最优化估算值分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0165] X(k|k)=X(k|k-1)+Kg(k)[Z(k)-HX(k|k-1)]
[0166] 其中,X(k|k)为第k个数据的最优化估算值,即第k个合加速度a或合角速度ω的滤波结果;
[0167] X(k|k-1)为第k个合加速度a或合角速度ω的预测值;
[0168] Kg(k)为第k个数据的卡尔曼增益系数;
[0169] Z(k)为第k个数据的测量值,即第k个合加速度a或合角速度ω;
[0170] H为测量系统的系数,在理想模型中均可直接设为1。
[0171] 步骤4025、计算第k个数据的滤波结果的协方差矩阵P(k|k);第k个合加速度数据的滤波结果的协方差矩阵和第k个合角速度数据的滤波结果的协方差矩阵分别采用下述公式进行计算,其计算过程同时进行,计算公式为:
[0172] P(k|k)=(1-Kg(k)H)P(k|k-1);
[0173] P(k|k)为X(k|k)对应的协方差;
[0174] Kg(k)为第k个数据的卡尔曼增益系数;
[0175] H为测量系统的系数,在理想模型中均可直接设为1;
[0176] P(k|k-1)为X(k|k-1)对应的协方差。
[0177] 步骤4026、检验k值是否与接收到的数据长度相等,即:检验滤波过程从k=2是否一直到所有数据均滤波完成,若相等,则直接执行步骤403,否则使k=k+1,循环步骤4021~步骤4025;其中,第一个最优化估算值及其对应的协方差为预设值,通过卡尔曼滤波实现第二个数据至所有数据的检测。
[0178] 步骤403、建立合加速度数据滑动窗口,用acc[m]表示,窗口长度为m;建立合角速度数据滑动窗口,用angle[m]表示,窗口长度为m,窗口长度可以根据实际应用进行设置,本发明优选m=200;采样子模块4-3以100次/每秒的采样频率采集滤波后的合加速度与合角速度并分别依次存入滑动窗口acc[200]和angle[200]中;
[0179] 步骤404、判定滑动窗口acc[200]和angle[200]是否已经填满,没有填满则继续执行步骤403,否则执行步骤405;
[0180] 步骤405、基于KNN算法计算测试样本与每个训练样本之间的欧几里得距离,并找出测试样本与所有训练样本的J个最近距离,判断当前时刻测试样本所属的运动类型;训练样本是指包含所有运动类型的数据库,每类运动类型包括多个该类型的训练样本,每个运动类型的训练样本与测试样本的长度相同,均为m=200。基于KNN算法的具体计算过程为:
[0181] 假设训练样本总量为100,分为“跌倒”类型、“站立”类型、“下蹲”类型、“上楼”类型、“下楼”类型共5个运动类型,其中每个运动类型各占20个训练样本;训练样本的数据以及训练类型是预先采集的,其样本内的数据是已知的;每个训练样本的长度均为200(其中测试样本和每个训练样本的合加速度和合角速度本身是一个波形,为了便于计算其被分割成了200段);测试样本与100个训练样本基于KNN算法依次计算测试样本与每个训练样本之间的欧几里得距离;其计算公式为:
[0182]
[0183] 式中:D(t,di)表示测试样本t与训练样本di(i=1~100)之间的欧几里得距离;
[0184] at和ωt为测试样本的合加速度与合角速度,at1和ωt1分别代表测试样本t在滑动窗口acc[200]与angle[200]内的第一个合加速度与合角速度数据;
[0185] ai和ωi为第i个训练样本(i=1~100)的合加速度与合角速度,ai1和ωi1分别代表第i个训练样本内的第一个合加速度与合角速度数据;
[0186] 依据上述公式计算得到测试样本与所有训练样本之间的欧几里得距离,其中欧几里得距离共计100个结果;从100个距离结果中找出其中J个最近距离,J根据实际应用进行设计,本发明中设定J=5;选取5个最近距离后测试样本与哪5个训练样本计算得到的最近距离,统计这5个训练样本的运动类型,根据运动类型所占概率的最大值,判断当前时刻测试样本所属的运动类型(若5个最近距离的训练样本的运动类型包括4个“跌倒”类型和1个“站立”类型,则由于“跌倒”类型所占的概率大,则判断当前时刻的运动类型为“跌倒”类型)。
[0187] 步骤5、监控终端判断人体的运动类型是否为“跌倒”类型,若为“跌倒”类型则执行步骤6,否则执行步骤1;
[0188] 步骤6、监控终端根据所设置的报警方式通知预设的联系人,报警方式包括:监控终端向预设联系人号码拨打电话进行报警,或者监控终端向预设联系人号码发送含有用户位置信息的短信进行报警。
[0189] 进一步,本实施例的三轴加速度传感器采用Analog Devices公司的ADXL345,其测量范围是±16g;三轴陀螺仪采用InvenSense公司的ITG3200,其测量范围是±2000°/s;微处理器采用Atmel公司的ATmega168PA-AU;蓝牙模块采用CSR公司的BC04-B,其有效通讯距离为10米,波特率为115200bps;传感器采样频率为100Hz;若监控终端为智能手机,则智能手机运行Android4.0系统。
[0190] 本发明公开的基于卡尔曼滤波与KNN算法的跌倒检测报警系统及方法,通过卡尔曼滤波对接收的合角速度和合角速度数据进行数据滤波,避免了噪声等外界因素对KNN算法的影响,降低了报警系统的误报率;通过KNN算法计算测试样本与训练样本之间的欧几里得距离,并找出其中J个最近距离,得到J个最近距离所属的J个测试样本的运动类型,计算J个测试样本中不同运动类型的出现概率的最大值,从而判断当前时刻测试样本所属的运动类型。本发明可以更准确地描述人体动作复杂的变化趋势,有效避免阈值法存在的误差;检测准确率高、误报率低;具备通信功能,能够实时通知跌倒老人的亲属,确定跌倒位置;采用监控终端检测,方便小巧,便于携带;操作简单,检测方法没有受到环境和空间上的限制。
[0191] 以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。