基于WIFI 信号的手势识别控制系统
2023-02-10林瑾,刘辉,陈华
林 瑾,刘 辉,陈 华
(1.广东东软学院,广东 佛山 528225;2.广东技术师范大学,广东 广州 510665)
随着计算机科学的快速发展,计算机人由以机器为中心的模式逐渐转化为以机器人为中心的模式,即以人为本。其核心目标是实现机体对人类活动的认识与了解[1],促使物理世界与信息世界的融合,实现人机交互,因此人机交互技术至关重要。实际上,过去几十年以来,人们一直在不断创造新的技术来实现更有效的人机交互,如手势识别[2]、动作分类等技术手段,已经逐渐运用在人们日常生活中。目前,人类行为感知与分析技术主要利用的是环境中的无线定位技术信号,具有良好的通用性和可扩展性。
近年来基于WIFI 信号的人体行为分析技术引起了学者们的广泛关注。早在2000年时,Bahl等就提出了Radar,一个基于WIFI 信号强度信息(Received Signal Strength,RSS)进行室内定位的系统,这是WIFI 信号首次被用来进行感知[3]。随后基于WIFI 的室内定位技术获得了很大的发展。2016 年,周戈基于WIFI 信号的手势识别技术研究,构建了初步的手势识别模型,但其平均识别率不高,为94.8%。
因此,该文研究一种基于WIFI 信号的手势识别控制系统,可以有效地识别八种不同动作的手势,并区分控制多种设备运行,将识别率提高到98%。
1 系统设计与流程
该文选取内置有加速度传感器的智能手势设备作为数据采集设备,系统框图如图1 所示,处理过程如下:
图1 系统框图
1)选取多个带WIFI 模块的被控制设备作为手势控制对象。
2)基于WIFI 信号,根据三边测量定位算法定位并确定被控制设备。
3)选取内置有加速度传感器的手势设备作为数据采集设备,初始化手势设备,用户佩戴手势设备摆出手势动作;mpu6050 模块读取x,y,z轴上手势设备的位置变化,得到加速度信息,采集信息并传送到控制端进行处理;PC 端将收到的数据进行均值滤波预处理数据、动态时间规整算法及特征提取,将匹配的手势动作转化为简单指令;将指令通过WIFI 模块传送给被控设备,并驱动被控设备开启指定动作。
系统结合WIFI 定位算法及手势识别算法实现了八种不同手势动作的识别并区分控制设备。
2 实现算法
2.1 RSSI定位算法
系统对接收的WIFI 设备进行采样,考虑到室内外环境的差异、测量精度和能耗等因素,基于距离的RSSI(Received Signal Strength Indication,接收信号强度指示)定位方法更适用于物联网环境。采用RSSI算法检测信号的优点是实现简单、硬件成本较低、可以多次测量。定位精度取决于所选设备的传播损耗模型,而室内障碍也会使信号衰减从而影响定位精度。大多数室内定位系统采用上述方法,或结合多种方法来估算定位目标。RSSI 由于非接触和非可视优势,已成为室内定位技术的首选[4]。
该系统是基于RSSI 三边测量定位算法实现的,分为测距和定位,在测距阶段,未知位置接收来自三个不同节点设备的信号强度[5],并根据无线信号的传输损耗模型将其转换为从目标到相应设备的距离。无线信号的传输通常受到路径损耗和阴影衰落的影响,接收信号功率随距离的变化与信号传输对数距离路径损耗模型有关,模型公式如式(1)所示:
式中,d是计算所得距离(单位为m),A是发射端和接收端相隔1 m 时的信号强度,n为信号路径传播耗散系数,受信号传输环境影响;RSSI 为接收到的信号强度。A和n的值确定后,根据式(1)可得到节点间距离d的计算公式为:
由式(2)可以算出节点之间的距离d。该系统根据节点设备的距离值可锁定受控设备。
锁定设备后,从接收设备上获取手势设备的手势信号,首先对手势设备进行定位,从测距阶段得到已知节点和信号源的距离值,三个节点的坐标是已知的,未知节点位于三个圆的交叉处,测量点的位置坐标可以通过节点间的距离计算出来,三边测量法如图2 所示,根据WIFI 模块的信号强度(RSSI),通过三边测量法得到被控设备与手势设备的距离。假设三个已知的坐标节点为FM1(X1,Y1),FM2(X2,Y2)和FM3(X3,Y3),它们与未知节点之间的距离分别为d1,d2和d3,未知节点坐标为(X,Y),则可以得到式(3)。为了方便计算,该文假定各节点均位于同一平面上,即只计算X,Y方向上的平面距离。
图2 三边测量法
对式(2)进行相应的数学转换后,可以得到未知节点坐标。
当已知节点连接到未知节点网络时,可以得到三个已知节点与未知节点之间的距离,通过三边测量的定位算法,获取未知节点的坐标,未知节点的坐标可以被多次计算,然后取其平均值,得到较准确的目标位置。由于外物或人体的遮挡后信号会损耗,导致RSSI值降低,计算所得的距离也有误差,在所有的测试次数中得到整体定位的误差均值为1.13 m,这个定位误差满足该项目具体环境中的实时定位要求。
系统分别连接三个ESP8266 模块设备且分别设置WIFI 名为“FM1”“FM2”“FM3”,根据公式可得出未知节点到三个设备的距离,从而选定合适的接收设备,确定手势设备的位置后,从接收设备上获取手势设备信号。
2.2 手势数据采集
该系统的手势动作采用手势设备中的加速度计MPU6050 采集数据,MPU6050 传感器可通过内部IIC接口总线向主控芯片直接发送三轴加速度及三轴角加速度,然后通过串口输出。当重力对陀螺仪系统产生一个大小为F的合外力时,结合牛顿第二定律,得到X、Y、Z轴向上的分力,可根据重力加速度计算出对陀螺仪系统各个方向产生的加速度,一旦手势设备开启,采集单个手势信号数据段,传感器就会持续输出各个轴上的加速度数据,其中,包括无动作数据和手势数据[6],图3-5 所示是手势动作和静止时采集到的三个方向轴上的数据加速度信号。当手有动作时,采集到的加速度信号在各个坐标上会产生剧烈的波动,静止时波动较小。
图3 X轴采集的数据图
图4 Y轴采集的数据图
图5 Z轴采集的数据图
2.3 数据预处理
手势数据在采集过程中会受到手抖动及环境等因素的影响,从而产生一些干扰数据,如高频噪声,这些数据会降低手势识别率,也会增加数据提取的难度,因此在数据提取之前,先对数据进行滤波处理[7]。为了提高识别率,可采用滑动均值滤波算法滤除高频分量,将每一次采样的数据与之前采样的数据不断地取平均值,将计算出来的结果作为当前的有效采样值[8],如式(4)所示:
式中,ar为采集的原始加速度数据,a为滤波后的手势加速度,该文取k=5,即滑动窗口滤波器的点数设为11。经预处理的加速度偏移已被移除,并且曲线更加平滑[9]。
2.4 手势动作特征提取
用户在做手势动作时,不同使用者手势动作持续时间不同,这会导致信道状态信息波形长度也相应的有不同长度,最终手势动作提取出的特征也会有差异,从而影响手势识别率,系统采用动态时间规整DTW 算法[10-11]解决这一问题.设手势库的手势信号Y为(Y1,Y2,…,Ym),其中,m为手势库手势数据点的总数,待识别手势信号X为(X1,X2,…,Xn),其中,n为待识别手势数据点的总数,m≠n,DTW 算法要先计算X和Y中每个数据点的距离[10],得到一个大小为m×n的矩阵D(i,j),D(i,j)的求解公式如下:
其中,1≤i≤m,1≤j≤n,D(i,j)必须从D(1,1)开始,到D(m,n)结束,以保证X和Y每个数据点都在D(i,j)中出现,此外D(i,j)中的i和j必须是单调增加的,以保证对应数据点之间没有交叉,匹配距离D(m,n)可根据如下公式求得:
最后,将待识别的手势数据与手势库中的每个手势信号进行匹配,由手势库表示的与最小匹配距离相对应的手势就是待识别的手势。
2.5 WIFI识别算法与手势识别算法的结合
WIFI 识别是基于环境中已有信号,分析信号的特征来感知交互设备或者人体行为信息,该系统将WIFI 定位识别算法和手势识别算法相结合,主要包括3 个步骤,首先是手势设备感知环境中已有的WIFI 设备信号,根据已有的WIFI 信号强弱得出设备距离,锁定被控设备;其次,获取手势设备上的人体手势信息,并进行采集、滤波等预处理,再利用DTW算法提取包含手势动作的有效特征,通过手势库的信息匹配对提取的特征进行分析识别;最后将手势信号转化成指令,并通过WIFI 传输给受控设备,受控设备根据手势设备的位置和手势信息判断是否启动控制。该系统通过WIFI 识别来感知设备和人的行为,利用环境中广泛存在的WIFI 信号,具有良好的通用性和可扩展性,并将WIFI 和手势识别相结合,与传统的识别方法如计算机视觉和红外传感相比,基于WIFI 的手势识别技术具有不可视、成本低、不受光照限制等优点。该系统的WIFI 识别行为不仅可以准确定位识别的控制环境设备,也可以识别人体行为动作,实现在无接触的情况下对指定位置的设备做特定的控制,达到人机交互的效果。
3 测 试
3.1 测试条件
采用HT32F165664LQFP 作为主控芯片,结合各种传感器以及MPU6050、nRF24101、ESP8266 组成一个基于RSSI 技术的WIFI 室内定位手势识别控制系统。
3.2 测试过程
测试环境是在室内进行的,在AP 模式下分别放置设备1“FM1”、设备2“FM2”和设备3“FM3”三个WIFI 信号,形成大面积的三角形,经过三边测量定位算法计算测试锁定的被控设备的位置。在测试过程中,使用单片机连接无线WIFI模块,在STA 模式下搜到“FM1”,“FM2”和“FM3”的信息,根据WIFI 定位算法得到信号WIFI 强度及设备离手势设备的距离。
测试环境是在室内进行的,在10 m 的范围内,首先训练每个手势动作,测试的手势有向前、向后、向左、向右、向上、向下、从中间向左滑动、从中间向右滑动共8 种,在测试数据之前,收集了每一种手势的标准数据作为手势库,然后每种手势重复测试20 次实验,最终获取到200 个数据[11-15],手势波形图如图6-9 所示。
图6 向前、向后的手势
3.3 测试结果
为了验证算法的有效性,设计了一个手势硬件设备,以HT32F165664LQFP 为主控芯片,将采集的数据通过无线WIFI 发送给设备端进行识别处理,设备与STA 模式的ESP8266 模块连接。用手机不断扫描更新WIFI 的信息记录,得到附近的设备名称及设备的信号强度,该文使用3 种设备重复扫描50 次,经测试得出,信号强弱与设备的距离有关。
图7 向左、向右的手势
图8 向上、向下的手势
图9 从中间向左、右滑动的手势
PC 端得到用户所需的有用的三个设备信号数据,经过5 次移动主控设备可以得到不同的信号强度,根据信号强度锁定被控设备。
经过实际测试数据后,根据测得的RSSI 值进行分析,找出误差。在某些情况下(室内空旷),数据基本准确,误差在可接受范围内。
实验者对每种手势进行模型训练,从而构建基于实验者的手势库,该文共定义8 种手势来验证识别方法的有效性,如图10 所示。
图10 手势的具体动作
实心圆圈为手势起点,实心箭头为手势终点。在数据的采集过程种,采样频率为64 Hz,两个手势之间至少间隔1。选择5 位同学,在满足手势定义和采集要求的前提下,以各自的力度和方式重复各个手势40 次,并经过5 位同学不同方向手势动作各做40 次实验,采集数据进行预处理,把待测手势数据经过DTW 动态时间规整算法跟对应实验者的手势库进行手势库特征值匹配,在200 个样本中大概有4 个会出错,最终的手势识别率均达到98%左右。
如表1 所示,经过实验发现,向上和向右识别速率最高,其次是向前和中间向左右滑动,而向下识别率相对较低,平均识别率为98.125%。
表1 各种手势的测试识别率
表2 比较了该文及其他文献中提出的不同手势识别算法的性能。可以看出,该文提出的动态时间规整算法的性能略高于其他算法。
表2 不同手势识别算法的识别率比较
4 结束语
通过RSSI 定位算法和基于加速度传感器手势识别算法相结合的方法进行检测识别,所采集到的数据能有效解决多个设备的识别问题及手势的识别问题。该系统通过串口将采集到的数据实时传送到PC,然后进行采集、预处理、特征提取等操作,最后实现选中设备并能手势控制设备的目的。实验结果表明,向上和向右手势识别率最高,其次是向前和滑动,而向下识别率相对较低。手势识别率基本能达到98%,通过这种控制方法,可以快速地识别被控设备并通过简单的手势完成设备的控制,但该方法对于复杂手势动作和WIFI 设备太靠近的情况下识别率不高,今后将研究更复杂的手势动作,提高识别精度。