许明西,何汉武,吴悦明,邹序焱,陈友滨
广东工业大学 机电工程学院,广州 510006
虚拟现实技术是以人为中心,通过计算机建立一个再现人的视觉、听觉、触觉、嗅觉等多种感官虚拟世界的技术。在理想的虚拟世界中,人能够获得来自真实世界中的各种感受,当前的虚拟现实主要是视觉和听觉的虚拟呈现,而触觉和嗅觉的虚拟呈现与现实有较大差距。触觉是皮肤的基本感觉之一,绝大多数动物拥有遍布全身的触觉器官。狭义的触觉是指外部轻微刺激作用于皮肤触觉感受器所引起的肤觉。广义的触觉还包括外部作用力使得皮肤变形所引起的肤觉,即压觉,亦称为“触压觉”[1]。触觉的分类有很多,本文讨论的热触觉属于触觉中的一种。
虚拟现实技术对当前教育起到重要的推动作用[2-3]。其中,虚拟实验的推广弥补了真实实验中原材料不足、设备成本高、危险实验依靠演示等缺陷。如化学实验中,减少了实验材料的浪费,提供了对实验现象的另一种表现形式。虚拟实验的使用效果依靠对视听触嗅等多通道信息的再现。当前虚拟实验都表现为视觉呈现和交互操作,对触觉再现主要是力反馈[4]和振动电机提供的振动反馈[5]。触觉由于其传输的形式不同于视觉,在虚拟世界中的触觉感知必须来源于真实世界的触觉感受。目前,市场上已有部分以数据手套形式出现的热触觉再现产品,如PowerClaw、Senso、HaptX 等,但都通过手部皮肤直接接触制热源,只能对手部产生热刺激,该类产品存在热触觉感知区域有限、成本高、硬件配置要求高等缺点,且不是针对虚拟实验场景而设计的产品。虚拟实验中,人体皮肤热触觉的产生主要来自于非接触的热源刺激,通过接触式的热触觉再现非接触式的热触觉会降低虚拟实验的沉浸感。
在冷热触觉的研究领域,当前的研究主要基于帕尔贴(Peltier)效应[6]来复现人体在虚拟场景下对温度的感知。如Guiatni等人[7]设计了一种远程热触觉再现装置,通过帕尔贴能够使操作者感受到远程物体的温度变化;Citerin等人[8]设计了一个在虚拟环境下进行交互并感知运动和热反馈的装置,该装置针对的是单个手指和一个虚拟对象之间的热传递;Nakatani 等人[9]使用帕尔贴设计了一个小尺寸可穿戴触觉模块,可同时提供振动和热触觉;Gallo 等人[10]设计了一个由帕尔贴组成的热显示器,能够在指尖下的四个不同位置提供可独立控制的热刺激;Peiris等人[11]为虚拟现实领域的HMD设计了一个热触觉反馈模块,该模块由帕尔贴组成并集成在VR头盔内,直接在用户脸上提供热反馈。以上研究都是针对不同的应用场景,不能直接用于虚拟实验的热触觉再现。
PTC(Positive Temperature Coefficient)电阻是一种具有正温度系数的热敏半导体材料,材料的电阻值在一定范围内保持基本不变或仅有较小变化,而当温度达到某个特定温度时,材料的电阻值随着温度的升高发生突变,在一个很小的温度范围(通常为几摄氏度到十几摄氏度)内迅速增大到原来的103~105倍,此特定温度被称为居里温度[12]。PTC 热敏电阻在卫星、电路控制及汽车[13-14]等领域均有运用。PTC热敏电阻与电阻丝或红外发热元件相比,具有无明火、自动控温、转热效率高等优点,适用于安全性高的场合。
综上所述,目前已有的虚拟现实热触觉再现装置都属于接触式,对于非接触的热触觉呈现效果较差。利用帕尔贴效应复现热感知,会同时产生热量和冷量,产热小、控温不便,且需要与帕尔贴保持接触,限制了热感知的交互方式。因此,本文设计了基于Arduino 单片机利用PTC 发热体提供热触觉的系统。该系统的热源能对虚拟热源的空间位置自动定位,并使用了PID 算法控温,能与HTC VIVE 进行串口通信,并在虚拟环境下提供热触觉交互。
现实中产生热量有很多种方法,不同热量发散方式人体皮肤有不同的感知。本系统针对的是虚拟实验下的热触觉再现,在实验过程中产生热量的热源基本都是静止不动的,因此热触觉的产生是一种被动的方式,需要操作者靠近或接触热源才能够感知热量,使用非接触的热触觉能够更好地提供虚拟实验的真实感。
本系统主要由交互系统、定位系统、控温系统组成,如图1 所示。交互系统使用HTC VIVE 设备,VR 头盔显示虚拟场景,手柄控制器提供定位与交互功能。定位系统使用42 步进电机,主要作用是调整制热模块的位置和方向。控温系统采用PTC加热体作为制热源,使用DSB18B29 温度传感器测量温度,结合PID 控制算法实现控温。本系统的热触觉再现是通过热气传递热量产生热感知。
图1 系统控制结构示意图
本系统的热触觉再现装置实物如图2所示,PC端与下位机使用蓝牙模块HC-05进行串口通讯,虚拟场景可以同时在PC端和HTC VIVE头盔中显示。
图2 系统装置图
控温系统由PTC 加热体、DS18B20 温度传感器、LCD1602显示屏组成。本系统使用的DS18B20测温范围是-55 ℃至125 ℃,在-10 ℃至85 ℃范围内的精度为 ±0.5 ℃,满足了实验要求。该温度传感器位于PTC加热体的上方,用于测量出风口的温度并反馈给Arduino中的PID 控制器;LCD1602 显示屏采用IIC 串行总线连接,节省了单片机的IO 口;固态继电器用于PID 控制器的开关电路控制,用低电压元件控制高电压元件的通断。
制热模块包括PTC加热体和散热风扇,使用时通过PTC加热体来产生热量,耐高温的散热风扇从PTC加热体底部将热量吹出。散热风扇额定电压12 V,尺寸90 mm×90 mm×15 mm。PTC 加热体由PTC 陶瓷加热片、铝外壳、绝缘层PI膜、U型波纹状散热片组成,如图3所示。PTC陶瓷加热片的尺寸80 mm×15 mm×5 mm,居里温度80 ℃,最大工作温度120 ℃,U型波纹状散热片的尺寸为96 mm×93 mm×15 mm,该PTC加热体的额定电压220 V,额定功率500 W。
图3 PTC加热体
PTC 的自适应温控是指当对PTC 加热片通交流或直流电时,在居里温度Tc以下,如室温T25时,电阻小,升温速度快,升至居里温度点Tc后,温度在Tc~Tp范围内稳定运行;在居里温度Tc以上时,电阻快速增大,由于功率不变,使电流下降至稳定值,从而实现自动控温,见图4所示。
图4 R-T电阻温度特性曲线
PTC 加热体可以根据热量需求选择不同的功率规格和恒定温度的PTC 陶瓷加热片,本系统选用的PTC加热体在0.5 m3的密封空间可将环境温度加热至70 ℃。PTC加热体具有热阻小、换热效率高、无明火、绝缘的优点,是一种自动恒温、省电安全的电加热器,且能够长时间处于干烧状态,避免了在虚拟实验时由于误操作带来的安全隐患。
定位系统由滚珠丝杠、步进电机、导轨、滑块、红外限位开关等部件组成。滚珠丝杆推动滑块在导轨上运动,红外限位开关防止滑块碰撞到导轨两边的基座。
本系统的热源定位使用了两个42步进电机分别控制PTC加热体的位置和朝向,一个步进电机将制热模块移动到虚拟实验热源映射到真实环境下的空间位置点,另一个步进电机控制热源的发热方向,步进电机额定电压12 V,分别由两个A4988 模块进行驱动,接线如图5所示。A4988 驱动模块提供5 种步进模式,最小旋转角度0.112 5°,考虑该系统对热源位置的精度和控制要求,采用全步进模式,每发送一个脉冲,步进电机旋转一个步距角(1.8°)。该系统通过Arduino 控制A4988 驱动模块的三个引脚控制步进电机,步进引脚STEP 用于接收脉冲信号,方向引脚DIR 用于控制步进电机的旋转方向,使能引脚Enable用于控制电机是否接收控制信号。
图5 步进电机的控制电路图
本系统的控制系统主要分为位置控制和温度控制。不同虚拟实验,热源可能在不同位置,本系统使用两个步进电机控制热源的位置和方向。实验中,实验者需要感受不同的温度变化,而PTC陶瓷加热片受限于居里温度,具有自适应控温特性,无法自动调节到所需的目标温度,通过外加控温电路,结合PID 控制算法和PWM脉冲来调节温度的变化。
虚拟热源与制热模块具有位置映射关系,通过在软件系统中将实验台初始化,保证了现实环境和虚拟环境的坐标系相同,再通过虚拟环境下的热源位置控制现实环境下的制热模块的位置,即可保证热触觉产生的真实感。本系统对热源的感知位置提供了4 个自由度的定位方法,制热模块的位置控制示意图,如图6 所示。P代表真实环境下发热的位置,或虚拟环境下的热源位置,O点代表真实环境下的制热模块位置,或真实实验台映射到虚拟实验台的点,该制热模块位于滚珠丝杆上,M1 表示x轴步进电机,M2 表示y轴步进电机。
图6 制热模块的位置控制示意图
实验前,初始化制热模块在滚珠丝杆的位置,当虚拟实验对热量产生有方向要求时,可使y轴方向的步进电机M2 旋转β角度,控制热源在水平面的发热方向,β的取值范围为 [-90°,90°],表示只能指向实验台一边,如由OP2旋转到OP1。
已知虚拟环境下热源空间位置,可得现实环境下制热模块需要产生热量的位置P点,利用式(1)计算M1控制制热模块在x轴方向的位移S,再导入到式(2)计算出M1 旋转的角度α,该角度表示Arduino 脉冲引脚需要发送x=α/1.8 个脉冲。
式中,PM1 为P点在x轴方向与M1 的距离,OP1为虚拟热源与制热模块的距离OP在水平面的投影。
式中,L为滚珠丝杠的导程,k为滚珠丝杠的精度系数。
实验中热源可能在不同的高度,该系统提供手动调节制热模块与实验台的夹角γ,控制热源感知位置在垂直面的高度和制热模块的发热方向,利用式(3)计算虚拟热源与O点的连线与实验台的夹角θ,而γ=90°-θ。
式中,PP1为虚拟热源到实验台的垂直距离,OP1为虚拟热源在实验台上的投影到O点的距离。
虚拟热源与PTC加热体的距离不同,产生的温度会有差异,风速不同,对热触觉的感知效果也会有影响。针对该问题,在10 m×7 m×4 m 的空间下对该系统的制热模块进行了风速距离温度测试,风速通过Arduino 的PWM引脚模拟量控制,对不同距离不同风速2 min取一次温度值,如图7所示。由曲线可知,距离近温度高,距离远温度低;不同风速下75 mm以内,温度差异较小,这是由于PTC 加热片上方的导风口避免了出风口的热量向四周扩散;当大于75 mm 的距离时,降温速率有了差异。总体数据表明,相同距离下风速大的温度较风速小的温度高,可用风速大小表示虚拟热源与制热模块的距离OP。由于PTC的自适应控温,风速变大而发热片需要恒温,会消耗更大的功率。因此,可以根据式(4)调节风扇风速的大小。
式中,Ppwm指控制风速引脚的PWM 输入值,取值范围[0,255],k为控风系数,OP为热源与制热模块的距离,dmax代表达到目标温度时热源与制热模块的最大距离。
图7 不同风速和距离下的温度曲线图
温度是热触觉再现重要的参数之一,具有滞后性、非线性、惯性大等特点。人体对温差敏感程度较弱,当温差在5 ℃以上时有比较强烈的感觉,这表明对控温精度要求不高,该系统采用传统PID控制算法实现对PTC加热体的温度控制,温度控制示意图如图8所示。
PID控制器[15]由比例单元(P)、积分单元(I)、微分单元(D)组成,是一种线性控制方法。通过写入Arduino单片机的PID 控制程序,计算PC 端输入的目标温度值与DS18B20温度传感器实时测量的温度值的偏差e(t),对偏差值e(t)进行比例、积分、微分运算得到结果u(t)。在连续时间域中,PID控制算法的表达式为:
图8 温度控制系统示意图
式中,kp为比例系数;Ti为积分时间常数;Td为微分时间常数。
在数字控制系统中,温度的采集不是连续的,需要对式(5)进行离散化处理,得到离散的PID表达式为:
式中,kp为比例系数;ki为积分系数;kd为微分系数;u(k)为第k次采样时刻控制器的输出值;e(k)为第k次采样时刻输入控制系统的偏差值;e(k-1)为第k-1 次采样时刻输入控制系统的偏差值;T为采样周期。
根据PID控制器的输出值u(k),Arduino通过PWM脉宽调制控制继电器的通断改变PTC加热体的通断,实现对PTC 加热体的温度控制。当实时测量的温度比目标温度高时,继电器断开,PTC加热体停止加热;当实时测量的温度比目标温度低时,继电器接通,PTC 加热体开始加热。
由于PTC陶瓷加热片的电阻温度特性,具有自适应控温的特点,为达到目标温度引入了PID控制器。本系统的温度控制为闭环控制,将DS18B20实时测量的PTC加热体出风口温度值作为PID 控制器的输入值。为检验该系统的温度控制情况,在室温27 ℃的10 m×7 m×4 m空间下进行温度控制测试。该实验中DS18B20 放置于距离发热体表面100 mm 处,得到如图9 所示不同目标温度的控温过程。从图中目标温度为33 ℃~45 ℃的PID 控温过程可知,波动误差均匀,控温精度不高。经过实验分析,DS18B20 测温是通过空气介质导热,测温时间具有滞后性,且实验环境的气流也会影响到温度测量,PTC陶瓷加热片的电阻会随温度变化也是稳态误差较大的原因之一。当目标温度为30 ℃接近室温时,控温精度较高,稳态误差小。
从图中曲线可知,目标温度越低,升温速度越快,温度越高,升温速率下降,升温曲线与PTC 加热体的最大升温曲线重合。当不使用PID控制器,使PTC加热体达到最大温度,整个加热过程非常平稳,且最后的稳态误差较小,说明了PTC加热片的自适应控温精度较高。从图像的其他控温曲线可以发现,PTC加热片能够减小温度超调,并提高控温精度[16]。
图9 不同目标温度的PTC加热体温度控制过程
本文系统热触觉再现硬件模块可以用于多种VR软件平台,以HTC VIVE作为虚拟实验的交互工具和实验平台,软件系统基于Unity引擎使用C#进行开发和设计。
为提高虚拟场景的沉浸感,将虚拟实验台与真实实验台的长宽高设计成相同大小。由于本系统的热触觉再现是非接触式,热源相对人体是静止的,因此在进行虚拟实验前,需要校准真实场景和虚拟场景下的实验台位置,保证实验者与实验台的距离在两种环境下相同。以HTC VIVE头盔为例,在程序执行之前,需要将Unity引擎中的虚拟相机相对于虚拟实验台的位置,设为真实场景下人眼相对于实验台的位置,即可保证开始实验时,人眼看到的虚拟场景和真实场景的实验台是一致的,如图10所示。
图10 虚实场景视角示意图
系统软件的作用是使PC 端能够直接控制下位机,如图11 所示,表示该系统软件的运行流程图。PC 端发送的串口数据分为三种形式。引脚电平数据控制Arduino的引脚输出;目标温度控制PID 输出;脉冲数据控制步进电机的旋转。整个系统软件可作为虚拟实验主程序的一个分支,表示热触觉在虚拟实验中的应用。
系统的控制部分提供软件接口,针对的是PC 端和下位机的串口通讯数据,该系统可将COM 号信息写入XML文件,通过读取XML文件自动解析接口数据。软件接口脚本位于同一个命名空间下,可单独打包成dll文件,供其他设备调用。接口类包括读写XML 文件串口信息和读写串口数据,接口函数包含初始化串口、打开和关闭串口,判断串口是否打开,接收和发送串口数据,发送控制电机的串口数据等功能。由于需要实时接收温度传感器发送的串口温度数据,采用了多线程编程。为了不影响下次打开该串口,退出主程序前需调用关闭串口的函数。
由于人体对热触觉的感知都与皮肤有关,针对在虚拟实验中的交互操作,本系统主要对手部进行交互设计,如图12所示。当实验者操作虚拟物体时,HTC手柄的红外定位可得到实验者手部的位置,PTC加热体再针对该部位产生热量,获得热触觉感知,符合虚拟实验需要,且通过事件触发能够提供手动的交互操作;HTC头盔用于场景显示,并提供了实验者的头部定位、视角方向信息。
整个系统属于虚拟现实系统的一部分,视觉呈现主要信息,热触觉作为虚拟现实交互的一个补偿。在虚拟实验交互开发中,可利用手与热源的距离,控制制热模块的开启和关闭,如两者距离在发热范围以内,打开制热模块,否则关闭制热模块;也可利用两者的距离,控制风速和温度大小,当距离较近时,减小散热风速提高温度,距离较远时,增大散热风速提高温度;或利用条件控制,虚拟实验台和真实实验台空间位置一一对应,无需考虑手的空间位置,例如化学反应中的放热反应,当达到放热条件时,打开制热模块,反应结束,则关闭制热模块。
不同虚拟实验热源主要分为固定和移动两种,固定热源可对制热模块一次定位实现放热。针对移动热源,当需要对手部持续产热时,根据HTC 手柄确定的手部空间位置,得到x轴步进电机移动的水平位移和y轴步进电机旋转到制热方向的角度,散热风扇可根据手与制热模块的距离改变风速大小,从面间接改变温度大小。LCD 显示屏向实验者显示出风口的目标温度和测量的实时温度。
为了测试该系统是否提高了虚拟实验的沉浸感以及系统的可靠性和有效性,以中学铝热反应实验为例,验证该系统在虚拟实验热触觉再现上的效果。主要实验步骤为当实验者点燃镁条后,使氧化铁粉末和铝粉在高温下剧烈反应,发出耀眼的光芒,并放出大量的热,实验者可在一定区域内近距离感受到热量。实验要求10位实验者完成5次虚拟实验,为了更好地形成对比,第1次实验在只有视觉呈现的情况下,完成该虚拟实验的操作过程;第2 次实验引入该系统制热装置的热触觉呈现,在虚拟场景中有放热时制造热量。实验者对这两次虚拟实验的沉浸感和热触觉再现的真实感评分,总分10分,分数越高代表体验效果越好。第3~5次实验重复第2次实验,根据系统正常运行次数评分,总分3分。最后作为观察者,对实验者在添加了热触觉通道虚拟实验的情绪变化进行评估,分为积极(A)、一般(B)、消极(C)。整体测试结果如表1所示。
表1 热触觉装置虚拟实验测试结果
从测试数据可知,第1次无热触觉通道实验的期望值为7.50,第2次有热触觉通道实验的期望值为8.93,后3次实验系统基本都正常运行。结果表明该装置提供的热触觉再现,提高了对虚拟实验的沉浸感和真实感,系统的稳定性较好。通过观察实验者情绪变化发现,大部分人在加入热触觉通道后产生兴奋、刺激等积极情绪,证明了该系统热触觉再现的有效性。由于铝热反应放出大量的热,产生耀眼的光芒,视觉通道效果明显,部分观察者存在条件反射会避开热量产生的区域,导致感知效果较差,该装置释放的热气起到补偿触觉通道缺失的作用。
图12 系统软件交互设计
本文通过使用PTC 加热体设计了热触觉再现系统。该系统包含利用步进电机搭建的工作台,提供了多个自动控制热源位置和方向的自由度,并对系统的交互设计进行了分析。系统采用了PID控制算法进行控温,并对系统的控温过程、可靠性和有效性进行了实验验证,结果表明控温的速度和精确度基本满足了虚拟实验要求,系统的热触觉通道提高了虚拟实验的沉浸感。该系统采用非接触式的传热模型再现热触觉感知,能够较好地在虚拟实验中感受真实实验带给实验者的放热反馈。
本系统是利用空气介质传递热量,并未考虑皮肤在不同传热介质下热传导的影响。由于温度传感器测量的方式影响了测量温度的实时性,且受测温精度限制,系统在控温方面有待提高。