一种基于IWR6843雷达的跌倒检测系统的设计和实现(TI文档)

2023-12-19 19:45

本文主要是介绍一种基于IWR6843雷达的跌倒检测系统的设计和实现(TI文档),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

摘要

        随着年龄增长,人体各项生理机能退化严重,老年人很容易发生跌倒,导致身体受到严重的伤害。近年来,随着国内人口老龄化越来越严重,主要针对老年人的跌倒检测系统正受到越来越多的关注。和常用的加速度传感器和视觉技术相比,基于毫米波雷达的跌倒检测系统具有非接触式,全天候工作和隐私友好等优点,正受到越来越多的关注。TI 的IWR6843 是业内第一款基于RF-CMOS 工艺,将中射频电路,VCO,ADC,DSP 和硬件加速器集成在单颗芯片内的60GHz 毫米波雷达SoC,它具有集成度高,成本低,开发简单等优点,已经在智能建筑,智能工厂,交通监控,安防,液位检测等领域获得了广泛的应用。本文介绍了一种基于IWR6843 芯片的毫米波雷达跌倒检测系统的设计和实现。它基于TI 提供的IWR6843 三维人员统计的参考设计,采用了基于人员高度变化判断跌倒的高效算法,可以在室内环境中检测出人员的跌倒。测试结果表明这一系统具有检测范围广,准确度高,反应快速的特点,能广泛应用在浴室,卧室,养老院等场景的老年人跌掉检测。

1. 背景

        中国人口中老人所占的比例越来越大,老人的健康问题正受到越来越多的关注。根据世界卫生组织的统计[1],每年在65 岁及以上的老人中大约有28-35%的人会跌倒至少一次,这一比例在70 岁以上的老人中会增加到32-42% . 随着年龄的增长,身体机能的退化,老人跌倒的频率也会增加。跌倒已经成为导致老人死亡和意外伤害的主要因素之一。因此跌倒检测技术对于保护老人的身体健康具有很大的积极意义,正受到越来越多厂家的关注。
        当前可以应用在跌倒检测上的技术方案主要有加速度传感器,基于摄像头的视觉技术和毫米波雷达三种。这三种传感器技术在跌倒检测应用上的优势和劣势对比请参考表1. 加速度传感器通常集成在智能手表或手环中,比如在Apple Watch 中已经集成了通过加速度传感器来检测跌倒的功能,它需要用户佩戴才能实现检测。摄像头进行跌倒检测需要光线足够,同时摄像头和被检测人之间没有物体遮挡,并且用户对摄像头可能存在的隐私泄露风险比较担心。通过比较我们发现,毫米波雷达的跌倒检测系统具有识别率高,无需穿戴,隐私性好的优点,正受到越来越多的客户关注。

表 1.常见跌倒检测传感器方案的比较

传感器优势劣势
加速度传感器成本低;
对于一般的跌倒识别率高;
方便和按键告警功能一起集成在手表或手环上
对于缓慢跌倒的识别率低;
传感器需要佩戴在用户身上,舒适性差;
传感器需要频繁取下充电,充电时无法对用户进行检测
摄像头在光线足够的无遮挡环境下识别率高需要复杂的视觉分析算法,成本高;
在光线不足,有物体遮挡视线的情况下无法识别;
存在隐私泄露的风险
毫米波雷达成本适中;
对于一般的跌倒识别率高;
不受光线影响,可穿透非金属障碍物;
没有隐私泄露的风险
有一定的虚警概率;
对雷达的安装位置有一定的要求

        文献[2], [3]中介绍了传统的基于雷达实现跌倒检测的系统。传统的雷达方案主要利用了人在跌倒过程中的速度变化特征(Doppler signature),首先对雷达回波信号进行时-频域的联合变换,然后从中提取出和跌倒有关的若干特征,最后通过模型分类器来判断是否跌倒。

图 1. 一个跌倒运动的信号时频分布: (a)STFT, (b) WVD, (c) EMBD

        文献[3] 给出了一个跌倒运动的雷达信号时频分布如图1, STFT, WVD 和EMBD 是不同的时-频域分析方法。从图1 中我们可以看出人在跌倒的开始阶段有个短时间内加速的过程,当倒在地面上后又有一个长时间内减速的过程。文献[2],[3]中设计的特征提取和分类器主要针对这一速度变化的特征来做跌倒的判断。这种方法需要对雷达回波信号进行运算量比较大的时频分析,同时特征的定义和分类器的设计也比较复杂。只通过速度信息来判断跌倒在某些场合的准确度并不高,比如人在房间内快速走路时的速度变化特征和跌倒就比较类似,很难通过分类器来区分。并且因为雷达的测速能力只在目标沿着雷达径向运动的时候比较敏感,如果目标沿着和雷达垂直的方向运动并跌倒,
此时因为雷达的测速敏感度的下降,对于跌倒的检测成功率也会降低。

        TI 的IWR6843 是业内第一款基于RF-CMOS 工艺,将中射频电路,VCO,ADC,DSP 和硬件加速器集成在单颗芯片内的60GHz 毫米波雷达SoC. IWR6843 具有集成度高,成本低,开发简单等优点,已经在智能建筑,智能工厂,交通监控,安防,液位检测等领域获得了广泛的应用。IWR6843 包含3 个发射和4 个接收通道,结合特定的天线设计 (比如TI IWR6843ISK-ODS) 可以同时实现水平和垂直两个方向的角度估计。它集成了一个600MHz 主频的TI C674x DSP 和雷达算法加速器(HWA),可以高效并灵活地实现不同应用的算法处理。

        TI 在mmwave Industrial Toolbox 中提供了一个IWR6843 3D people counting 的参考设计[4]. 这个参考设计在IWR6843 上实现了室内15m 范围内准确的人数统计和跟踪。基于这个参考设计本文介绍了一种基于点云高度变化在室内判断人员跌倒的方法,这种方法实现简单,检测范围广,准确度高。本文详细介绍了它的算法原理和实现方式,并给出了测试结果。

2. 3D People Counting

        IWR6843 3D people counting 的参考设计可以在TI 的IWR6843 ODS 或IWR6843 ISK 开发板上运行。IWR6843 ODS 可以支持水平和垂直方向各120 度的视角 (FOV), 因为它在垂直方向FOV 比IWR6843 ISK 大,更有利于检测人的高度,我们选用它作为跌倒检测的硬件平台。IWR6843 ODS 上集成了三根发射,四根接收的短距离patch 天线 (大约可以在12 到15 米范围内检测到人). 它的天线和波形配置如图2 所示,天线详细的性能参数请参考文献[5].

        IWR6843 ODS 上的三根发射天线布置成L 形,不同发射天线之间间隔λ, 四根接收天线布置成一个2x2 的方形,不同接收天线之间间隔𝜆⁄2. 这样的天线布局可以使用3T4R TDM MIMO 波形配置,由Tx1, Tx2 和TX3 在时间上轮流发射chirp,Rx1/2/3/4 作为接收天线,通过虚拟天线算法,将Rx1/2/3/4 在连续三个chirp 周期内的接收天线数据联合使用,虚拟出图2 中右半部分的1T12R 的天线阵列以获取更高的角度分辨率,这个虚拟天线阵列在水平和垂直方向各有4 根天线,可以实现大约30 度左右的水平和垂直角度分辨率。

        参考文献[4],IWR6843 ODS 上3D people counting 的处理流程如图3(到Group Tracking 为止),主要的处理流程包括下面几步:

         Range 维FFT:对每根接收天线的ADC 数据进行1D 加窗(Windowing)和1D 快速傅立叶变换(FFT)。

         水平方向Capon BF:首先进行静态载波去除,然后在ODS 水平方向4 根天线上计算空间相关矩阵,最后通过Capon BF 生成距离/水平方向热图(Heat map)。

         距离/水平方向CFAR:通过二维CFAR,在上一步生成的距离/水平方向热图上检测出目标点。
         垂直方向BF:和垂直角度估计首先在上一步得到的每个[距离,水平角]的目标点上计算所有接收天线上的空间相关矩阵,然后通过垂直方向的BF 生成目标在垂直方向的热图,最后在这个热图上通过峰值搜索获得目标的垂直角度。

         速度估计:首先对于上一步得到的每个[距离,水平角,垂直角]目标点计算空间BF 向量,然后用这个BF 向量对目标距离bin 进行空间滤波并计算Doppler 谱,最后在这个Doppler 谱上通过峰值搜索来获得目标的速度。在这一步之后,我们就获得了一个包含目标[距离,水平角,垂直角,速度]的点云。

         Group tracking:根据上一步产生的点云信息,通过Group Tracking 算法进行目标聚类,并对目标进行跟踪和预测。在这一步之后,我们将获得一个跟踪目标的列表,列表中的每个目标都包含[空间位置,速度,加速度]信息。

图 2. IWR6843 ODS 雷达天线波形配置

图 3. 3D people counting (包含跌倒检测) 的信号链

        IWR6843 ODS 天线在垂直方向有120 度的视角,结合3D people counting 的垂直角度估计算法,可以检测出物体在垂直方向的角度。对于室内距离雷达比较近的人员,3D people counting 的点云输出可以清楚地显示出人的轮廓。如图4 所示,当一个人站在雷达前方大约1 米的位置时,从雷达输出的点云中可以看出人的头,肩膀,手和腿的大致轮廓。从这些丰富的点云信息中,我们可以提取出人的高度,并进行跌倒检测,后面将介绍具体的方法。

图 4. 3D people counting 的垂直方向检测效果

3. 跌倒检测

        为了提高跌倒检测的性能,我们希望雷达能够对人员形成尽可能丰富的点云,而点云的密度和雷达的安装位置有很大的关系。为了让雷达的主波束能更多的照射到人的身体,我们选择如图4 的雷达安装方式,IWR6843 ODS 安装在2 米的高度,下倾角30 度。这样雷达的主波束斜向下能照射到成年人的头,躯干和脚,可以形成比较丰富的点云。本文后面的测试结果都基于这种安装方式。

        雷达波形参数的设计对于跌倒检测的性能也有很大的影响。考虑到跌倒检测主要针对浴室,卧室,养老院等相对有限的空间,对于雷达的最远检测距离并没有太高的要求,一般能覆盖到7m 左右就可以了。人在室内的运动速度不会太快,所以对于雷达最大检测速度的要求也不高。但是需要雷达有高的速度分辨率。因为3D people counting主要是通过速度信息来区别人和室内其他的静止物体 (比如桌子,床等),速度分辨率越高雷达就越容易把人从室内复杂的环境中提取出来,并生成更多的点云(这非常有利于通过点云高度进行跌倒检测). 通过反复的实验,我们选用了表2 的雷达波形参数来实现跌倒检测。我们采用了TX0->Tx1->Tx2 轮流发射的TDM 方式来形成图2 中的虚拟天线阵列,同时通过加长的chirp Idle time 和ADC start time 来增加Active frame period 从而获得了0.095m/s 的高速度分辨率。

表 2.跌倒检测使用的雷达波形参数

波形参数配置说明
Start Freq (GHz)60.75
Idle time (us)30通过加长的Idle time 增加Active frame period 以获得更高的速度分辨率
ADC start time (us)25通过加长的ADC start time 增加Active frame period 以获得更高的速度分辨率
Ramp end time (us)59.1
Slope (MHz/us)54.71
Num of ADC samples96
ADC sampling rate (ksps)2950有效的ADC 采样时间为32.54us
Bandwidth (MHz)1780对应的距离分辨率是8.4cm, 最远检测距离为7.25m
Chirp period (us)89.1对应的最高检测速度是4.58 m/s
Num of chirps96 * 3TDM MIMO 发射方式按照TX0->TX1->TX2 循环96 次
Frame period (ms)70对应的雷达数据刷新率为14Hz
Active frame period (ms)25.66对应的速度分辨率是0.095m/s

        通过上面介绍的雷达安装方式和波形参数,运行3D people counting,当人在雷达前运动的时候能够获得比较多的点云,同时通过Group tracker 可以跟踪到人的运动轨迹(图4 中点云外面的红色长方体边框就代表了一个被跟踪到的人),从这些信息中我们可以计算出人的高度。如图5 所示,人在跌倒的过程中,有一个高度快速下降的过程。当我们在获得了连续一段时间内人的高度信息后,通过比较人在不同时刻的高度差就能判断出有没有跌倒。        

图 5. 人在跌倒过程中的高度变化

        我们在图3 所示的常规3D people counting 信号链的后面增加了一个跌倒检测的模块,通过对点云信息和Group tracker 输出的跟踪信息进行处理,来实现跌倒检测。跌倒检测算法在每个frame 的tracker 结束后运行一次,算法的流程如图6 所示。 考虑跌倒检测的实际应用场景,在算法设计的时候,做了下面几点考虑:

         考虑跌倒危险性最大的场景是房间内只有一个人的情况(如果房间里有更多的人,可以及时发现并报警),我们设计跌倒检测算法只在tracker 输出的目标(Target)数为1 的时候工作。如果tracker 输出的目标数不为1,直接跳过跌倒检测逻辑。

         当tracker 输出的目标数为1 的时候,可以通过tracker 输出的目标所包含点云的Index 信息在速度估计模块输出的点云中找到归属于这个目标(人)的所有点。因为点云输出信息中的坐标是(距离,水平角,垂直角),为了方便提取高度信息,需要通过坐标转换,变为(X,Y,Z)坐标。

         通过上一步中得到的目标所有点集合的(X,Y,Z)信息计算目标高度的方法有很多种(比如求Z 的最大值,对Z 取平均值等),考虑到人在跌倒过程中头部下降的高度最大,我们选择了求Z 的最大值,并以这个最大值Z_max 代表目标的瞬时高度(instant_height)。这种方法的性能还需要通过更多的实验来验证。

         为了减少目标瞬时高度波动对检测结果的影响,我们对上一步得到的目标瞬时高度进行平滑滤波以产生平均高度(ave_height,平滑滤波的计算方法见公式1 和2),并用得到的平均高度进行跌倒检测。

         为了提高跌倒检测的准确度,减少虚警,我们设计了一个计数器age 来统计目标连续出现的frame 数,当目标已经被连续track 到40 个frame (age > 40)以后,才进入跌倒检测的判决逻辑。

         跌倒检测的判决准则是在连续5 个frame 内满足下面的条件:当前frame 上目标的的平均高度比前面第20 个frame 的平均高度下降超过0.25m。

        图6 中计算目标在当前frame 的平均高度ave_height 的公式如下:
        𝑎𝑣𝑒_ℎ𝑒𝑖𝑔ℎ𝑡(𝑛) = 0.1 ∗ 𝑖𝑛𝑠𝑡𝑎𝑛𝑡_ℎ𝑒𝑖𝑔ℎ𝑡 + 0.9 ∗ 𝑎𝑣𝑒_ℎ𝑒𝑖𝑔ℎ𝑡(𝑛 − 1) (1)
        𝑎𝑣𝑒_ℎ𝑒𝑖𝑔ℎ𝑡(𝑛) = 𝑖𝑛𝑠𝑡𝑎𝑛𝑡_ℎ𝑒𝑖𝑔ℎ𝑡 (2)

图 6. 跌倒检测算法的流程图

4. 测试结果

        在对上一节介绍的跌倒检测算法进行测试前,我们对3D people counting 的算法配置进行了一些调整和优化,包括增加垂直方向FOV,过滤静态目标和优化跟踪参数等。

        为了方便观察测试的结果,当跌倒检测模块发现有跌倒发生的时候,我们通过软件控制GPIO 闪烁IWR6843ODS 上的LED 灯,这样我们能直观地判断系统有没有检测到跌倒发生。图7, 8 和9 是我们现场测试视频中抓取的截图。如图7 所示,当人在雷达前方正常行走的时候,IWR6843 ODS 上的LED 熄灭,表示此时未检测出跌倒发生。如图8 和9 所示,无论人在雷达前方正对或者侧对雷达摔倒,IWR6843 ODS 上的LED 都会立即开始闪烁,表示此时检测出跌倒发生。
        在实验室的初步测试结果表明,本文介绍的系统对于跌倒检测的反应快,准确率高,误报率低,达到了我们的设计目标。

图 7. 正常行走时的测试结果

图 8. 正对雷达跌倒时的测试结果

图 9. 侧对雷达跌倒时的测试结果

5. 总结

        和常用的加速度传感器,摄像头相比,基于毫米波雷达的跌倒检测系统具有非接触式,全天候工作和隐私友好等优点。本文基于TI 的IWR6843 这一业内第一款RF-CMOS 工艺的单芯片60GHz 毫米波雷达SoC,设计了一个室内人员的跌倒检测系统。得益于IWR6843 的多通道和强大的数字信号处理能力,本系统可以准确地测量出室内人员的高度变化,并快速地检测出跌倒的发生。本文详细介绍了这一系统的设计原理和实现方式,并给出了实验室的测试结果。根据初步的测试结果,本系统具有反应快,准确度高,误报率低的特点,能广泛应用于浴室,卧室,养老院等室内场景的老年人跌掉检测。

参考文献

[1] World Health Organization, “WHO Global Report on Falls Prevention in Older Age”
[2] Zhengyu Peng, José-María Muñoz-Ferreras, Roberto Gómez-García, Changzhi Li, “FMCW Radar Fall Detection based on ISAR Processing Utilizing the Properties of RCS, Range, and Doppler”, 2016 IEEE MTT-S International Microwave Symposium (IMS)
[3] Moeness G. Amin, Yimin D. Zhang, Fauzia Ahmad, K.C. Dominic Ho, “Radar Signal Processing for Elderly Fall Detection: The future for in-home monitoring”, IEEE Signal Processing Magazine (Volume: 33 , Issue: 2 , March 2016 )
[4] TIDEP-01000, People Tracking and Counting Reference Design Using mmWave Radar Sensor
[5] SWRU546C, mmWaveICBoost and Antenna Module

这篇关于一种基于IWR6843雷达的跌倒检测系统的设计和实现(TI文档)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/513480

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

如何通过Python实现一个消息队列

《如何通过Python实现一个消息队列》这篇文章主要为大家详细介绍了如何通过Python实现一个简单的消息队列,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录如何通过 python 实现消息队列如何把 http 请求放在队列中执行1. 使用 queue.Queue 和 reque

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2