瞿惠琴,吴孔培,叶 倩
(无锡职业技术学院 物联网技术学院,江苏 无锡 214121)
随着智能穿戴设备及智能移动终端的普及,手势识别在人机交互领域扮演着越来越重要的角色[1]。手势识别技术分为接触式和非接触式2种类型,非接触式手势识别方法增加了人机交互的灵活性和适用性。大多数非接触式手势识别基于计算机视觉技术来实现,但是基于视觉的识别方法一般对光线比较敏感、算法复杂度较高、需要较多的系统资源[2]。相比而言,基于传感器的手势识别技术因为不受环境、光线的影响,识别精度较高,占用资源少等优点而渐渐普遍[3]。在基于传感器的手势识别研究领域,张发辉等人提出了将手指关节的姿态信号与手臂表面肌电信号融合用于识别手势的方法[4-5],但这种方法使用的表面肌电信号传感器和姿态信号传感器都需要接触人体,无法实现非接触式检测。杜京义等人研究了基于环境亮度光学传感器APDS-9960的非接触手势感测技术[6],但APDS-9960传感器仅能够识别向上、下、左、右4个方向滑动的动态人体手势。电容传感器因具有非接触、结构简单、精度高、动态性能好等优点,广泛应用于厚度、液位、压力、加速度及流速等测量领域。随着集成电路的发展和材料的进步,影响电容传感器绝缘和屏蔽的因素已得到较好解决[7]。综合以上情况,设计一种基于电容传感器的非接触式手势识别系统。采用平行极板电容传感器采集多种手势样本数据,电容-数字转换器FDC2214把传感器信号转换成数字量,单片机根据FDC2214的数据计算分析,判别出手势并输出给显示设备。
手势识别系统主要由单片机ATmega2560、电容-数字转换器FDC2214以及自制的电容传感器等组成,系统框图如图1所示。系统要识别的手势包括“剪刀”“石头”“布”“1”“2”“3”“4”“5”共8个单手手势。
图1 手势识别系统
采用一整片覆铜板作为感测平面搭建实验装置,利用FDC2214的一个数据通道采集手势样本数据,再通过单片机串口读取数据分析。经过多次测试后发现如果用一整片覆铜板作为感测平面来采集手势数据,后续软件算法较复杂,且识别错误率高。为了提高识别准确率,把覆铜板上的铜箔分割成4片面积相等的铜箔,如此就形成4个感测平面,在手势识别时,相当于4个电容传感器同时采集数据,并且由于手势特征,每个传感器采集到的数据不同。4路数据能更全面反映这个手势的特征,从而降低了软件算法的复杂度,也提高了识别准确率和响应速度。图2所示为电容感测平面示意图,每个传感器的输出对应一个数据通道。
图2 电容感测平面示意
随着电容传感器的广泛应用,电容-数字转换器也很快成为主流,相比于传统的电容传感器测量电路,电容-数字转换器具有响应快、分辨率高、功耗低、抗电磁干扰的特点。系统选用的是Texas Instruments公司的电容-数字转换器FDC2214,它具有28位分辨率,4个信号输入通道,对应4个电容传感器[10],图3所示电路图中Cs1~Cs4即为4个等效电容。FDC2214的每个通道输入端连接一个电感和电容,由于FDC2214内置振荡电路驱动器,所以可组成LC振荡电路,当电感值为18 μH,电容值为33 pF时,可以产生6.5 MHz的振荡频率[11]。电容传感器与FDC2214的连接采用单端传感器方式,等效电容Cs1~Cs4的一端连接FDC2214的IN0B~IN3B,在检测手势时,等效电容值发生变化,导致LC电路振荡频率的变化[12]。
图3 手势识别电路图
FDC2214的振荡电路驱动器后面跟随一个多路复用器,多路复用器依次把各输入通道连接到测量传感器频率的核心core上。核心core基于参考频率fR来测量传感器通道频率fS,fR既可以是FDC2214内部的时钟频率,也可以是外接时钟源频率,外部时钟频率取40 MHz,fS在多路复用器中被二分频为fS/2,最终核心core把频率转换成数字量D输出,每个传感器通道输出的测量数据为[13]:
由上式可得到该通道上振荡电路的频率为:
ATmega2560单片机是高性能、低功耗、外设丰富的8位微控制器,单片机与FDC2214采用I2C通信方式,如图3所示。单片机外设包括显示和按键电路,手势识别结果通过OLED屏显示,OLED屏自发光、功耗低,与单片机也是通过I2C协议通信。系统还设置了矩阵键盘,其功能包括复位、工作模式选择、手势记录编码等。
系统的软件设计主要包括手势记录和手势判定2个部分。在手势记录模式下,系统对任意人员的手势数据进行采集,经过有限次手势演示和数据采集后,系统提取有效数据并保存;在手势判定模式下,系统对已有手势记录的人员进行手势识别,并快速给出判定结果。
当某个手势状态稳定时,4个传感器通道的数据并行输出,单片机根据采集的数据计算出该手势样本的阈值。以IN0通道为例,手势演示时,单片机连续采集IN0通道的50个数据,根据中心极限定理,采集的数据符合正态分布,其算术平均值为:
式中n=50,根据平均值可计算出标准差为:
其它3个通道的数据阈值计算以此类推,为了缩短后续手势判定的时间,把4个传感器通道的阈值数据相加求和为一个阈值。记录手势时,手势演示次数有限,一般为3次,系统对3次记录的阈值数据求平均值后保存,最终形成该手势的判定条件。系统记录手势样本数据时,对不同的手势利用编码规则来对其数据编码标注。
由于需识别的手势数目较少,所以在手势判定时采用简单匹配算法。有需判定的手势时,首先对每个传感器通道连续采集50个数据求出算术平均值,再把4个平均值相加求和得到需判定的手势数据Dh,Dh和已存储的样本数据逐个比对,并计算误差值,确定误差最小的手势样本为判定结果。
实验装置采用+5 V直流稳压电源供电,为了减小人体对电容电场的干扰,采集手势样本和手势检测时,装置周围仅留测试人员一人。对任意人员进行8种手势样本采集,要求每种手势演示3次,统计发现每种手势样本的记录时间均小于60 s。对手势样本已被记录的人员进行手势判定,部分测试结果如表1所示。
表1 手势识别测试部分数据
手势判定条件(手势样本)手势判定1 手势判定2手势判定3判定时间/ ms“剪刀”2 832±132 8232 8372 832910“石头”2 764±202 7622 7692 782930“布”2 725±142 7242 7372 734880“1”2 759±82 7562 7592 759930“2”2 654±92 6562 6542 654890“3”2 577±102 5782 5752 577910“4”2 451±122 4512 4552 451940“5”2 407±102 4092 4072 407900
除了“石头”和“1”这2个手势,其他手势判定条件给出的阈值范围互不相同,如此在判定手势时就能快速准确匹配条件,得出结果。“石头”和“1”这2个手势的阈值数据重复,如果仅根据阈值条件判定,无法准确区分,解决的方法是再增加一个判定条件:检测传感器通道IN0,IN1上的数据。如果是“1”手势,食指与IN0,IN1通道对应的覆铜板会构成电容;如果是“石头”手势,则2个通道上对应的电容值很小,系统可根据通道上的数据差异来区分。
相比于基于视觉的手势识别装置,本实验装置结构和电路都较为简单、成本低,测量时不受光线干扰,对于简单静态手势,装置判别的准确率和速度与基于视觉的识别装置相当,但本装置无法实现动态手势的判别[14]。
研究了电容传感器识别手势的工作原理,分析了传感器的结构参数对线性度、准确率的影响,提出了4个感测平面的传感器结构,基于电容传感器、电容-数字转换器和单片机设计了手势识别系统,并利用正态分布阈值判别法来实现手势识别。测试结果表明:极板间距为3 cm时,手势样本数据的采集时间小于60 s,对8种手势的识别准确率高于95%,识别时间均小于1 s。系统结构简单、工作稳定,实现了非接触式测量,为人机交互中的手势识别提供了一个有效的解决方案[15]。