辅助虚拟现实数据手套及电刺激力触觉增强反馈电路系统设计
2021-03-08李兆基王海鹏阮伟华黄书豪
李兆基,王海鹏,2,阮伟华,黄书豪
(1.三江学院 电子信息工程学院,江苏 南京 210012;2.东南大学 射频与光电集成电路研究所,江苏 南京 210096)
手势姿态识别是虚拟现实(Virtual Reality,VR)领域中非常关键的一种交互方式。不同的实现方式和设备都会使用户得到不同的体验。近年来,随着VR设备受欢迎度的提高和人机交互(Human-Computer Interaction,HCI)[1]科学的不断发展,手势交互成为最符合人们习惯的交互方式。但手势交互研究相较听觉、视觉的交互方式还有较大的差距[2],这主要是由人手的灵巧性、复杂的皮肤形状和传感器的复杂性造成的。
目前手势姿态识别的方式还分为基于视觉和非视觉两种[3-4]。基于视觉的数据采集方式主要是采用摄像头对手部动作进行捕捉,目前比较常见的动作捕捉设备主要有微软公司的Kinect[5]、索尼公司的PS move以及Leap公司的Leap motion[6]和上海理工大学黄东方的基于改进ND-DTW算法的动态手势识别[7],这些均为基于图像处理的方式,对肢体动作的识别较为准确。但上述方法对检测细小位置的手指运动有一定难度,当识别物体的运动速度过快时会出现图像丢帧的问题。另外,国内的手势交互方式主要集中在如何实现手指姿态的判别上,尚未出现功能性电刺激手势交互设备。秦欢欢等人设计了采用双手力触觉反馈的人机交互系统[8]。该系统中,双手的位置跟踪精度达到0.8 mm并可以给手提供20 N和0.4 N·m的力触觉反馈。但该设备尺寸较大不利于个人用户使用,且存在不便移动的缺点。在力触觉反馈方面,国外有CyberGlove公司使用磁流变液智能材料构建的力反馈数据手套[9],该系统在设计尺寸上比东南大学的小很多,但是在设备重量上依旧没有得到很好地改善。
相比基于视觉识别的方式,本文设计使用基于非视觉的数据手套采集方式不会出现上述识别精度有偏差的现象,同时也不会出现识别物体脱离识别范围的情况。在进行力触觉的辅助反馈上,前期已经实现通过调节功能性电刺激(Functional Electrical Stimulation,FES)产生的刺激脉冲信号强度来控制不同的手部力量[10-13]。本文中使用该设备来解决力触觉反馈的问题,不仅可以使VR设备完成手势识别,还能通过功能性电刺激腕带完成虚拟现实中的力触觉增强反馈。
1 系统与方法
1.1 原型系统整体设计
针对VR使用者开发的手势交互识别系统,一套辅助虚拟现实数据手套及电刺激力触觉增强反馈系统需要解决以下问题:(1)使用者双手位置和姿态的精确获取跟踪。系统需要判断跟踪使用者的三维空间位置和手部姿态,使用无线连接的方式增大系统使用空间的自由度,同时不降低使用者在使用过程中的束缚;(2)双手力反馈的实现。当使用者在VR体验中手部触碰到虚拟物体时,能通过功能性电刺激的方式控制手部力量来实现力触觉反馈,让使用者感知到物体。同时该装置可以为使用者提供不同强度的刺激来达到不同力度的反馈。
系统的整体设计结构框图如图1所示,包括一个数据手套、一个FES腕带和数据收发与显示设备。其中手套具有手部运动及姿态数据采集功能,腕带使用FES作为VR的力触觉信息反馈。数据手套主要由弯曲度传感器、九轴运动姿态传感器、STM32主控模块和蓝牙模块组成。数据收发与显示设备主要用于三维图像的处理以及对接收到的数据进行识别,该部分可以判断人手对物体触摸状态信息并将反馈数据通过无线连接(Wireless Fidelity,WiFi)传输至电刺激腕带,产生不同强度的FES刺激脉冲,从而实现虚拟现实中的力触觉增强反馈。
图1 系统整体设计结构框图
1.2 硬件电路设计
手势姿态数据采集部分由STM32主控制器、5路弯曲度传感器、蓝牙模块和九轴运动姿态传感器组成。其中STM32主控制器主要负责弯曲度传感器数据、九轴运动姿态传感器数据的采集处理以及对蓝牙模块的控制。如图2(a)所示,利用5路的弯曲度传感,同时将传感器采用嵌入的方式包裹在手套的每根手指上,该种设计可以使传感器更贴合手指减少测量误差。采用的弯曲度传感器尺寸为每根长115 mm,宽5 mm,如图2(c)所示。最终把这些传感器嵌入在棉质的手套上固定如图2(b)所示。弯曲度传感器是由涂在柔性塑料基板上的大量电阻碳元素组成,制作成本较低,具有较长的机械性耐久性能(>1 000 000次),无移动或机械磨损的部件。当基板弯曲时,弯曲传感器根据弯曲程度按一定比例产生电阻输出,笔直状态下的电阻约为10 kΩ,最大弯曲的电阻可到达125 kΩ。
图2 手套设计与实物图
由于弯曲度传感采集手指曲度的信息是模拟信号,因此需要利用STM32内置模拟-数字转换器(Analog to Digital Converter,ADC)将采集的弯曲度模拟信号转换成数字信号(Digital Signal)进行处理。同时,为了使传感器输出电阻变化和输出电压变化之间成线性关系[14],本文采用如图3的电路设计[15]。
主控微处理器采用STM32F103RBT6作为核心处理器芯片,它主要负责对系统外部模块的控制和数据获取。为了减少系统硬件占用空间的资源并最大化减轻硬件重量,该部分只保留有用部分,去除无用的外设电路,最终主控设备重量控制在250 g以内。该硬件系统主要包含STM32F103的微处理器主控芯片、复位电路、晶振电路、串行调试(Serial Wire Debug,SWD)程序下载接口以及所有用到的通用输入/输出口(General Purpose Input Output,GPIO),以方便接入蓝牙模块来完成数据的上传和九轴运动传感器采集手部空间数据,进而实现特征提取和手势识别。
图3 弯曲度传感器电路图
功能性电刺激腕带包含一个主控制器STM32F103(ST Microelectronics Inc.)、WiFi转通用异步收发传输器(Universal Asynchronous Receiver Transmitter,USRT)模块、刺激电路驱动级、恒流H型桥和多路复用开关电路。其中微控制单元(Microcontroller Unit,MCU)通过WiFi转UART模块USRC322(济南有人物联网技术有限公司)读取控制终端发送的刺激参数数据;然后利用内置数字-模拟转换器产生刺激参数对应的脉冲信号并送至刺激电路驱动级;然后经过MCU控制的多路复用开关电路,将刺激脉冲分别送至对应的输出通道,生成与虚拟场景中对应的力触觉控制信号。刺激腕带实物如图4所示,设备的重量约320 g(含电池)。
刺激驱动电路包括电压-电流转换器和一个互补电流源,电压-电流转换器由两个耦合跨导放大器、一个串联电阻和一个放大器组成,可以为互补电流源提供精确的参考电流。刺激驱动级电路如图5所示。
图4 刺激腕带实物图
在功能性电刺激腕带的MCU中利用波形生成算法生成具有更新参数的波形信号。如图6(a)所示为双相非对称刺激波形,其中包括一个负向的脉冲和一个正向的脉冲。负脉冲幅度AN和正脉冲宽度TP的比值等于正脉冲幅度AP和负脉冲宽度TN的比值,即TP/AN=AP/TN,其中AN和AP的比值为N。为了使刺激电极在人手皮肤上不易造成肌肉疲劳[16],故设置N=4。MCU输出的DAC信号波形如图6(b)所示。
图5 刺激驱动级电路原理图
(a)
1.3 软件设计与算法实现
本文软件使用基于C++程序的设计,运行在电脑主机上,目的是为了完成虚幻4引擎(Unreal Engine 4,UE4)软件与个人计算机USB(Universal Serial Bus,USB)接口的数据通信。该程序主要分为两部分:手套数据接收识别部分和腕带刺激信号发射部分。程序的具体流程如图7所示。程序在开始运行时会判断手套的蓝牙以及腕带WiFi是否连接成功,在确定稳定连接的情况下手套的数据接收程序会进入九轴运动传感器校准,腕带则进入复位,完成刺激参数的校对。程序在接收到手套数据后,通过计算九轴运动传感器的欧拉角可以判断出手势的姿态,计算弯曲度传感器的数值可以判断手指的弯曲程度,最后将数据送到UE4软件中完成虚拟场景中的识别。UE4软件会根据手部抓握的物体给出一个碰撞信息,通过该程序可以发送刺激信号到手腕的硬件中。
手套在进行空间数据采集时,由于人手的轻微抖动和元器件的物理特性会导致采集数据出现一定的数据漂移现象,使用过程中会也出现一些不必要的随机噪声。这些因素都会给识别算法带来一定的难度导致结果不准确,因此采取一定的滤波降噪处理显得尤为重要。目前常用的传感器滤波算法有:非线性平滑滤波、小波变换、线性平滑滤波、卡尔曼滤波算法以及傅里叶变换[17]。
卡尔曼滤波是一种最优数据评估的算法,与控制原理中的状态观测器相似,需要预估测量值,并把预测值与实际测量值进行比较,然后乘以一个增益后返回,为下一时刻的计算提供估计值,更新的方程如下
X(f/f-1)=Ax(f-1/f-1)
(1)
(f/f-1)=P(f-1/f-1)+Q
(2)
式中,X(f/f-1)是上一时刻f-1最后输出的状态;Q为噪声的协方差。测量方程利用时间方程输出结果,当获取到观测值时进行滤波。通过测量更新算法得出最终结果,但是在实际运动中仍然还会出现位置误差。为了更加准确地让识别手势姿态数据判断手部的实时姿态,将误差控制在一个较好的范围,需要进行欧拉角的计算。在PC端利用卡尔曼滤波[18]原始数据融合加速度计和陀螺仪数据可以计算出欧拉角,分别用原始数据、加速度计数据、陀螺仪数据构建出3个姿态矩阵,矩阵通过乘积的计算得到
(3)
通过随姿态矩阵T的求解得到欧拉角
θ主=tan-1(-T12/T22)
(4)
(5)
γ主=tan-1(-T31/T33)
(6)
最后使用欧拉角微分方程进行姿态的求解,就能得出一个较好的欧拉角结果。
图7 软件总体流程设计
1.4 实验与方法
实验共招募5名健康志愿者(男性3人,女性2人,平均年龄为25.5±2岁)。所有志愿者签署知情同意书,配合参与原型系统手部姿态动作数据测试实验和实际功能测试实验。所有志愿者在受测试上肢部位均无任何神经肌肉或关节损伤。实验设备采用一套自主设计的原型系统(包含1个用于手势姿态识别的数据手套和1个FES刺激腕带),一套HTC VIVE定位设备,并设计了一个基于UE4的虚拟场景实例。
先从参与实验的人员中随机挑选出一名志愿者,按照实验要求佩戴姿态识别手套,完成姿态动作数据的测试。测试的动作内容为:手臂水平放置(手势参考动作)、手臂向上抬举90°、手掌水平向外翻转90°、手掌水平向内翻转90°、手臂向外90°展开手掌保持水平。记录每组实验的连续动作波形图,运动波形图主要记录加速度值和角度偏转值,每张波形图都包含手部X、Y、Z共3个坐标轴上的变化曲线。通过曲线变化和实际动作的状态可以直观地看出姿态数据手套的有效性。
姿态识别手套除了能识别手臂动作的姿态,还能识别手指运动姿态。手势模型共有3种不同的动作姿态,每位志愿者需要佩戴手套后把手贴合放置在设计好的手势模型上,通过观测虚拟场景实例中虚拟手掌的姿态动作与模型动作的匹配度即完成一组实验。实验过程中记录每位志愿者每根手指与对应虚拟手掌手指的匹配程度,最终通过统计学公式计算出各个手指的识别率。
为了进一步验证系统人机交互的有效性,在实例中设计了一个虚拟的机械手掌模型,虚拟机械手模型关节数以及手指长度均按照普通人手1∶1的比例进行设计,效果如图8所示。该虚拟机械手可用于检测手套交互的有效性并检测手套数据传输的延时,实验过程中志愿者可以随意完成不同的手指弯曲动作。同时实例中的机械手也会同步进行动作复现,通过显示器的动作变化可以直观地了解设备是否能够准确完成应有的动作。
腕带的功能主要用于辅助虚拟现实力触觉增强,该手腕的CH1~CH4通道都能输出5~30 V步进电压为5 V的刺激电压。通过虚拟现实场景中判断手部的碰撞数据,软件会根据物体的不同和人手运动情况通过WiFi模块发送不同的刺激参数设置包,包括系统开启/关闭状态、脉冲频率、刺激通道打开时间、刺激通道关闭时间、脉冲振幅参数、刺激波形和脉冲宽度。为了更好地评定这部分功能,实验采用单独给腕带发送刺激控制信号的方式进行。为了保证测试的安全性,该测试在专业人员的指导下完成。测试实物连接如图9所示。
图9 测试实物连接图
实验过程中要求志愿者通过虚拟手套来进行虚拟场景中的物体抓握以触发场景中虚拟手的碰撞信息,动作完成后碰撞信息将通过WiFi传输到手部的刺激腕带。腕带的输出端采用水凝胶将刺激电极贴附于手臂皮肤表面。由于采用的是四通道刺激方式,刺激手部不同位置都会产生不同的刺激反应。在实际使用中,参照医学上的“骨度折量寸”作为参考坐标贴附于手部的不同位置,完成抓握、腕屈、腕伸和五指伸4种不同动作[19]。电极贴附的位置以及刺激的功能点位如图10所示。
图10 抓握、腕屈、腕伸和五指伸对应电极位置
在此基础上,通过一个定制的扭矩测试装置来完成手腕关节扭矩的数据测试。定制装置采用1 kHz采样频率进行数据采集,通过PC对数据处理后可以提供一个直观的扭矩波形图。实验过程中提供了6种不同等级力度刺激脉冲,脉冲幅度从0~30 V递增,步进幅值为5 V,每种等级刺激脉冲间隔2 s进行一次触发,每次脉冲持续时间设计为1 s。
志愿者在进行上述测试项目时都会进行简单的使用培训。实验测试结束后,每位志愿者需要填写一份用户体验报告调查表。调查表用于收集志愿者在实验完成后对该项目评价。调查报告内容包括使用过程中出现的问题、实际动作与虚拟动作同步程度、穿戴舒适性、力触觉腕带效果、最后提出修改的意见和建议。
2 结果与结论
2.1 手部姿态动作数据测试结果
根据手部测试的流程,志愿者根据测试的动作按要求完成测试,实验记录的数据包括加速度和角度,最终结果如图11所示。其中,手势图中1-1作为其他手势的参考动作,手势1-1在Z轴上的加速度为1,X、Y轴的加速度为0;X、Y、Z轴对应的角度为0,当动作由1-1中的手势变化到其他动作时,X、Y、Z轴的加速度和角度发生了明显变化。在实际测量中,由于九轴传感在手部运动中不能完全贴合手掌的位置,实际位置变化与实际数据上会存在一定的误差。
由表1可知手套对每根手指识别的情况,在5组测试结果中最高的识别率达到了99%,在均值的结果中显示识别率能稳定在93.2%~96.6%,最终的结果显示手势识别的成功率为94.7±1.3%。
表1 各手指以及部分动作识别率
1-1 手臂水平放置 1-2 角度 变化曲线 1-3 加速度变化曲线
2.2 原型系统实际功能测试结果
用户通过不同的手指动作弯曲能实现对虚拟假手进行同步控制,图12为手指弯曲动作测试情况。由图12可知,原型系统中的手势识别手套能完成对各个手指以及手部空间位置的识别。
图12 手指弯曲动作测试情况
如图13所示,原型系统能较好地控制刺激脉冲强度的输出,输出共有6种不同等级的力度刺激脉冲,最大的脉冲幅度能达到30 V左右。在不同等级的脉冲刺激下对应有不同的手部力矩输出。在刺激幅度为5 V时,腕部的扭矩为0.2 N·m;在刺激幅度为30 V时,输出的扭矩为1.8 N·m (图13(a))。上述数据表明系统能实现预期功能,达到合适的扭矩输出,具有较好的人机交互功能。在实际使用过程中,该部分的设备功率控制在1.9 W(98 mA,20 V)左右可以达到低功耗的目的。
图13 志愿者刺激响应腕关节力矩与刺激脉冲波形
2.3 用户体验调查结果
在使用者的体验反馈中可以反映出设计的虚拟现实数据手套在功能和实用性上是否能满足设计要求。由表2所示的志愿者体验报告描述可知,设计的虚拟现实数据手套在使用过程中有较好的效果,能够在使用过程中很好地控制延时,没有出现由于手部移动速度太快而导致的虚拟场景实例中手部数据丢失现象;在力触觉交互方面也做到了较好的控制;穿戴设备没有因长时间的佩戴而引起穿戴者的不适。
表2 志愿者体验报告
2.4 对比与讨论
通过上述结果可知,该系统的总体效果达到了设计要求,但在手部姿态动作数据测试结果中还需要对传感器固定的位置进行进一步的修改。在手指准确率测试中,志愿者的手掌大小出现了个别识别错误的情况。造成该结果的原因还在于手套的材质上,手套采用的是棉质原料,在佩戴的过程中不能很好地贴合不同手型志愿者。因此,在后期将采用具有弹力的手套。在原型系统功能测试结果中,由于数据在传输过程中会受到其他信号的干扰,虚拟假手空间会出现位置漂移的现象。其原因是由于数据传输模块的选择和数据传输速度存在不同。在用户体验调查结果中出现腕带刺激导致的刺痛感,原因是由于每个使用者在对电刺激的承受度不同导致的,通过降低刺激的强度也能降低刺痛的感觉。
3 结束语
本文设计了辅助虚拟现实数据手套及电刺激力触觉增强反馈电路系统,功能均达到设计的要求,能够有效完成手势姿态识别与力触觉反馈增强功能。该设计在设备体积与重量上比其他设计方法有较大的优势,其中力触觉刺激腕带是目前还未在人机交互设备上使用过的新型交互设备。
本文的研究结论为实现虚拟现实的人机交互提供了一种行之有效的解决方案。该系统的设计除了可用于虚拟现实人机交互,还可以用于医疗行业中以针对瘫痪病人进行的肢体康复训练,是一种应用前景广阔的设计方案。