[D-手势识别装置] 陕西省一_D题_西安电子科技大学

  [复制链接]

1

主题

3

帖子

81

积分

一粒轻沙

Rank: 1

积分
81
楼主
查看: 13227回复: 5 发表于 2018-9-10 22:23:48   只看该作者
在选完题目后,我们猜测题目的评分是通过对手势识别的成功率和手的活动范围或活动角度来评分。故在硬件上尝试了两种方向的方案。
方案一:采用手型的Sensor
(这个方案的主是花时间在尝试不同形状排布的Sensor,但是手型传感器手的旋转活动角度不高是致命弱点)


方案二:使用旋转扫描等动态方法获取数据:

(FDC2214的采样特性大概是  采样精度=K/(采样速率*采样通道)故难以通过多通道的方法来提高精度,而采出来的波形并不容易识别,算法上并不能通过简单的数起伏波峰或者方差的方法实现。虽然最后测评并没有把活动角度放入测评项,但仍然期待有大佬可以分享能解决不受手活动角度限制的方案)


硬件上:

1.主要的时间花在了制作手型传感器上,我们使用PHOTOSHOP可以较方便绘制Sensor的形状,然后转印到覆铜板上腐蚀出来。
2.使用带屏蔽的同轴线连接Sensor和FDC2214,使用铝箔贴纸对装置中如四周,底部处理器等地方进行屏蔽,可以屏蔽大部分来自侧方的干扰。
3.玻璃盖板作为表面可以减小由表面形变带来的探测距离变化引起数据跳动。
4.PCB参照官方Demo制作,修改了封装的引脚便于焊接,经过两版修改效果与官方评估版无异。
最后使用了两块FDC2214芯片,采样6个通道数据并用剩余2通道作为触摸按键。


软件上:

分享下算法主要思路:
1.校准——各个通道减去无数据时测各自测得的电容值
2.采集标准手势的数据并归一化——采样五种手势的数据(一二三四五)得到5组(每组6通道)数据,并根据各个通道曾采到过的最大值对各自通道进行归一化。
3.采集要判定的手势数据并与前5组匹配——将该组数据与前5组各通道求方差和,得到对各组手势的方差和。
(在石头剪刀布模式下,对手指部分传感器数据求和作为新的频道)
4.方差和最小者为匹配结果。


这个方法可以解决大多数情况,通过采集10组标准手势的数据,将10种判定结果取众数作为结果可以进一步提高识别的鲁棒性。

详细代码可见技术报告和源码。





D题源码(BaseOn CCS TIVAC).zip (719.67 KB, 下载次数: 160)

D题技术报告.pdf (2.24 MB, 下载次数: 234)


摘 要


为了满足可以实现准确的手势识别,对实现进行各单元电路方案的比较论证及确定。系统以德州仪器的TIVA C 系列作为处理核心,通过FDC2214 电容传感器,以手掌形状分布的覆铜感应板,以及其他外部电路获取对应手势的信息,5mm 厚度的玻璃作为测试面板,底部木板包裹铝箔接地屏蔽,通过方差比较的算法对电容探测的数据进行处理,最后得到手势结果,通过OLED 屏幕输出。

关键字:手势识别FDC2214 屏蔽电容探测

1 系统方案
本系统使用了两块FDC2214 数字式电容转换器,电容感应板,电源模块,德州仪器TIVA C 处理单元等电路组成探测装置,通过检测电容感应板上不同区域的电容大小以及电容变化来判断现时所对应的手势,通过OLED 屏幕显示判决结果。该装置经过金属屏蔽处理,可抵抗外界的干扰,经过多次手势训练后可具有快速,稳定的识别能力,通过flash 擦写记录训练集实现断电记录数据。

1.1 电容探测器的选择
FDC2214 是电容式抗噪声和EMI、高分辨率、高速、多通道电容数字转换器系列。分辨率高达28 位,而FDC2214 的采样速率高达13.3ksps,便于实现使用快速移动目标的应用。并采用小外形尺寸无引线(WQFN16)封装,IIC 外设接口简化了与微控制器(MCU)的连接方式。每片含有4 通道电容检测。本题使用FDC2214 进行设计。

1.2 测量方案的论证与选择
方案一:使用动态测量法
制作机械机构对手掌平面电容进行周期性扫描。由于手掌的手指大致是以掌心为圆心发散分布,因此可以设计数片条状传感器,以掌心为转动轴心旋转,记录周期内的电容波形,即可获得手指的分布情况。我们可以通过拟合不同手势产生的波形,从而判决手势结果。该方案优点是手掌信息完整,分辨率高,因此可以感知以转轴为掌心任意方向摆放的手势,拓展性强,对于手势摆放的容错率极高。缺点是对与机械结构稳定性、算法及处理器运算能力的要求较高,对电容传感器的采样率要求较高,在旋转过程中的外界干扰极易导致波形发生畸变,从而影响判决效果,此外,旋转是的微小偏心会导致不同转动角下传感器平面与测量平面之间的间距发生变化,从而导致其幅度产生周期性变化,动态稳定性差,需要在算法设计中对幅度进行校正,增大计算量。



方案二:使用静态测量法
使用静态测量的方法直接将多个特定形状的电容探测金属板分布于手下方,手静止于传感器上方是会改变其容值。通过不同传感器所获得的电容分布即可计算对应的手势。
该方案优点是结构简单,稳定性高,不需要复杂的机械结构,同时成本低廉。缺点是金属探测板的分布与形状对测量精度影响较大,不同的金属探测板类型、探测板分布及探测板距离测试板的高度都会大大影响测试结果。因此该方案对探测板设计要求较高。



方案的选择:
以上两种方案均为可行的测量方案。相比而言,方案一技术难点更多、制造成本较高,但同时其普适性更强、测量效果更好;方案二技术难点较方案一少,其结构的制造不需要专业设备,但其对算法的依赖度较高,普适性不如方案一。综合时间成本、开发精力及产品需求的考虑,我们决定采用制造较为容易的方案二。

1.3 差分测量与单端测量方案的论证与选择
方案一:使用差分测量法(互电容法)
差分测量法即将探测板对应区域连接到FDC2214检测通道的A与B输入端,并测量出对应区域间的互电容。互电容电极实际上由两个独立的电极结构组成,当有物体出现在两电极相遇的区域时,两电极之间的互电容减小。这是因为物体的相互作用具有干扰两个电极之间的电场传播的效果。人耦合到地面,人体是导体。将手放在两个互电容电极之间具有与在它们之间放置接地大致相同的效果-它减少了它们之间的电场耦合,这减少了电容,由此便可得到相对的电容。此方法优点是近距离探测的灵敏度较高,数据较为更加精确。缺点是单个通道需要两根线,线束较为复杂,需要进一步的屏蔽处理。



方案二:使用单端测量法(自电容法)
单端测量法即将探测板直接连接到FDC2214芯片检测通道的A或B输入端,直接测量探测板与环境(虚地)的电容(自电容)。自电容电极将电场线投射出电极360度。从物理学角度来看,在电极附近具有接地结构将导致从电极突出的电场线集中在电极和地之间,而不是穿过覆盖层向上穿透到相互作用区域。这意味着电极可以与PCB的底侧以及覆盖材料相互作用,由此可测得传感器上方电容。该方法线路简单,可探测距离远且实现难度低,满足题目要求。



经过综合考虑,采用单端测量法。

1.4 电容探测金属板分布形状方案的论证与选择
方案一:单通道纯面积占比法
由于电容值大小与传感器上方被遮挡面积成正比例关系,因此使用单片大面积金属板直接探测不同手势下电容值的大小,通过比对电容值实现判决。该方案优点是大面积探测电容灵敏度高,不受手势摆放位置及方向的影响,对手势的摆放没有要求,且传感器的连接线路简单,判决算法设计简单。缺点是只能使用一个通道,因此数据的采集只有一个维度,对于个别面积占比近似的手势识别误差较大。由于传感器测量容值随被测物体的距离增加而急剧减小,因此该方案对手掌与测试面的贴合度要求高,性能提升空间小。此外,由于传感器平面过大,在保证测量灵敏度的基础上难以做到容值变化处在线性区,也就是说面积的占比变化与容值的变化将是非线性的,占比越大线性程度越差,因此对于测量手掌而言难以区分“4”和“5”。


方案二:阵列法
由于两片FDC2214芯片最多有8个电容探测通道,将8个通道平均分割为八个平面分布在正下方即可形成矩阵,通过获取不同手势对应的容值矩阵即可获得其训练集,从而判决手势。该方案优点是采样点多,采样维度高,八个通道判决权重相同,没有对于手势分布的要求,因此普适性较强,大多数产品应用中常用类似的阵列法获得平面上的分布。缺点是由于可用的通道只有8个,远远达不到构成采样阵列的条件,因此无法通过矩阵解析出手势的分布情况,而且由于手掌的特征点是成圆周分布的,若是采用阵列的方式,不仅达不到解析要求,难以兼顾四周的特征,而且还会浪费许多不必要的测量维度。


方案三:掌形分布法
由于通道数有限,为了充分利用每个通道,我们对方案二的阵列法进行改良优化,创新性采用手掌形排布,每一个手指均对应有一块测量传感器。优点是这样的针对性分布有利于手指接触面的探测,手掌的一共6个特征点对应于6个采样通道的数据更加有利于手势识别的精度与速度,而且数据处理同阵列法,算法设计较为容易。缺点是不同传感器由于大小不同而获得的容值变化幅度也不同,需要进行归一化处理,难以解决在手掌特定摆放位置存在的误差,对于传感器的区域分布需要仔细斟酌(如手指恰好摆放于两传感平面间)。


根据以上分析,对于题目所提的需求,我们选用了准确度较高且针对性较强的方案三,对于传感器的具体位置摆放及大小,我们通过多次尝试,得到了几种不同的分布方案:



对于上图三种分布我们进行依次尝试,最终确定使用最后一张图的分布,该分布测量效果最好,容错率最高,符合我们的需求。

1.5 干扰信号屏蔽方案的论证与选择
由于单纯的探测板容易受到外界物体的干扰,需要使用一定手段对探测板以及连接线路进行屏蔽,进而测量出较为稳定的数据。

方案一:使用有源屏蔽
有源屏蔽即通过增加缓冲器等有源器件来连接FDC2214 输入端INXA,保证信号的稳定性。可以通过将一导电平面直接放置在传感器下面(由绝缘隔开)并用与驱动传感器的信号相同的信号驱动它来实现驱动屏蔽。如果驱动传感器和屏蔽两者的信号是同相的并且具有相同的电位,则两个电极之间将不存在电场。此外,屏蔽的电场将使传感器的电场向传感器前方排斥,从而提供相当数量的屏蔽。因此,该方法通过最小化寄生电容大大恢复了传感器的灵敏度。如下所示,需要配置为电压跟随缓冲器的运算放大器以与驱动传感器的信号相同的信号驱动屏蔽。必须使用缓冲器连续向屏蔽提供足够的电流,以保持传感器和屏蔽元件之间的电位差为零。



方案二:使用无源屏蔽
无源屏蔽即通过金属层的包裹(如铝箔,铜丝等),将测量装置以及测量线都包裹于金属层内,来避免金属层收到来除了探测区外物体的干扰。缺点是带来了许多的寄生电容,传感器灵敏度下降;优点是方法简单,易于实现,对电路要求低,稳定度高,功耗不变。
方案二示意图如下,



经综合考虑,采用方案二。

1.6 主控芯片方案的论证与选择
方案一:使用STC89C51 单片机
51 单片机结构简单,易于操作。但51 典型主频只有1Mhz,在进行数据量较多的浮点运算时会出现性能不足的情况,且只有IO 模拟IIC,无程序在线硬件调试等,不能满足整体系统需求。

方案二:采用ST 公司的STM32 单片机
STM32 系列单片机性能优越,涵盖低性能到高性能需求,且提供丰富的库函数方便使用,但stm32 硬件IIC 不够稳定,ST 库函数中提供API 常常出现错误,不易于开发。

方案三:采用TI 公司的TIVA C 系列单片机
TM4C123GH6PM 微控制器是德州仪器公司推出的一款高性能单片机,具有非常稳定的硬件IIC,可以稳定的与FDC2214 进行通信,最高80MHz 的主频足以满足各个方面的需求。且具有两个12 位数模转换器(ADC)。其开发环境(CCS)支持在线断点调试,可以将变量输出成波形,易于开发。经过综合分析,采用方案三来实现测量算法。

2 电路与程序设计
2.1 电路的设计
2.1.1 系统总体框图



图三系统总体框图

2.1.2 电路中的一些典型问题及解决方案
• LC 振荡电路中的电容:实际应用中存在系统到系统的变化,主要是于器件偏差和环境漂移。电容器的容值是引起系统到系统的变化的主要因素。鉴于此选择了NP0 材质的陶瓷电容器和独石电容,这两种比较稳定和介质损耗较小的电容适于应用在此电路中。

• 传感器连接线:因为设计要求,传感器需要离板,因此需要使用连接线将PCB 迹线连接到金属传感器上,最初采用普通的铜线作为连接,但是其带有线电容。

• 而且因环境有较大改变,最终采用带屏蔽的射频线,虽然也会有寄生电容使得灵敏度下降但是其带有着极强的抗干扰性,相比较之下选择了这种带屏蔽的线作为连接线。

• 屏蔽程度和灵敏度:因为本组采用的是寄生电容最大的屏蔽方案,屏蔽程度越大寄生电容就会越大,直接导致的就是灵敏度的下降,识别准确率下降。为此我们采取通过对各种不同屏蔽程度下识别准确率的比较并配合算法上的调整找到最优解。

• 测试板:由于传感器是由覆铜板制成,不能直接用于测量,需在其上方加入介质覆盖层。最初是使用亚克力作为支撑板和传导介质,后经测试发现被检测的手部会使得亚克力发生形变,电容有发生不规则变化无法准确识别手势;后改为玻璃作为测试板,虽不会发生形变且介电常数比之前大,但是由于覆盖层和传感器之间的距离变大使得目标接触区域中剩余的电场数量减少鉴于此。下图显示了覆盖层厚度与电路灵敏度之间的关系。从平行板电容方程来看,电容与材料厚度成反比(C~1 / d)。因此采购了不同厚度的玻璃进行测试,最终发现5mm 厚的玻璃所得效果最好。



2.2 程序的设计
2.2.1 程序功能描述与设计思路
功能:
1.可通过I2C 通信获取传感器数据
2.可通过高速SPI 通信输出屏幕图案,SPI 传输速率达到10M
3.可通过串口通信进行调试
4.可通过定时器获取工作时间
5.可通过无线串口进行无线调试
6.调节传感器参数使得采样频率达到50hz
7.通过计算方差、神经网络等思想实现判断手势
8.可方便自定义显示内容
9.良好的人机工程,操作者便于操作校准
10.通过状态机调整程序工作状态

思路:
1. 首先初始化板级驱动
2.初始化外设驱动
3.初始化状态机,初始化状态参量
4.等待初始化完毕后,以50hz 的采样率采样电容传感器FDC2214 的4 个通道数据
5.保持50hz 的频率对数据进行处理,获取方差等,对识别结果做出判别
6.对结果进行过滤,保证结果的平稳
7.以5hz 的频率通过OLED 屏幕输出测试结果
8.状态机作为程序的工作状态仲裁核心,用于通过感知按键的触发而切换工作状态

2.2.2 程序流程图



2.2.3 算法的实现
1.读取传感器读数,统计近5 次采样数据取平均,粗略去除数据毛刺
2.计算处理后的各个传感器数据与训练集中不同状态的各个传感器数据的
方差,存到数组中。计算方差过程中,各个传感器需除以训练过程中该传感器获得的最大容值,以此对数据进行归一化处理
3.为了兼顾手指在测量时跨出理想的测试范围,我们在现有维度的基础上增加一个维度,用于记录除拇指外的4 个手指所对应的的传感器数值之和,可用于适当中和手指跨出测试区产生的差值
4.统计每个状态的方差和,找出方差和最小的一个状态,即为匹配状态
5.由于训练集数量庞大,每个训练集皆为10*9 的浮点型矩阵,因此采集完训练集后需要将训练集存入flash 内,每次开机时从flash 中取出
6.训练思想为记录下每种测试状态对应的各个传感器值,一个训练集即为一个[状态数×传感器]维度的浮点型矩阵
7.在猜拳模式下,我们可以忽略掉四指所对应的的4 个维度差异,而只关注四指和作为的第9维度
8.通过增加训练集的数量可以增加该算法的普适度

3 测试方案与测试结果
3.1 测试
方案
通过多个人使用该装置进行一,二,三,四,五, 石头,剪刀,布等手势进行判定,并记录多次得到数据结果。

3.2 测试条件
测试条件:检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

3.3 测试结果及分析
3.3.1 测试结果(数据)


注:A 级到C 级屏蔽程度逐级上升

3.3.2 测试分析与结论
1.亚克力材料和玻璃相比易于形变且介电常数较小,选用玻璃更好。
2.玻璃过厚会减少有效电场通过数降低识别率,选用5mm 玻璃效果较为理想。
3.屏蔽级别过小会使得系统抗干扰性下降所得结果不稳定导致识别率下降,而屏蔽程度过大会导致寄生电容的增长降低灵敏度,从测试结果看B 级别的屏蔽效果最好。
4.识别率会随着训练次数的增加而增加。

附录1:电路原理图


0

主题

8

帖子

36

积分

一粒轻沙

Rank: 1

积分
36
沙发
发表于 2018-9-14 10:33:50   只看该作者
厉害的~~

0

主题

10

帖子

152

积分

二氧化硅

Rank: 2

积分
152
板凳
发表于 2018-9-14 19:04:30   只看该作者
如果能有视频演示一下就更好了。学习了

1

主题

3

帖子

81

积分

一粒轻沙

Rank: 1

积分
81
4#
发表于 2018-9-14 21:43:26   只看该作者

0

主题

19

帖子

95

积分

一粒轻沙

Rank: 1

积分
95
5#
发表于 2019-7-14 13:39:21   只看该作者
谢谢分享

0

主题

1

帖子

19

积分

一粒轻沙

Rank: 1

积分
19
6#
发表于 2020-9-6 15:19:43   只看该作者
好东西学习一下
快速回复 返回顶部 返回列表