基于VR 交互技术的手指动态识别追踪智能手套设备
2023-04-13杨媛孔令云
杨媛,孔令云
(西京学院 电子信息学院,陕西西安,710123)
0 引言
利用力反馈技术的的优势,此设备可以给使用者反馈力量、振幅和触觉,以及可以在训练中对双手和手指进行精确的追踪,让训练场景尽可能的接近现实。
创新点:第一、强制反馈:支持手势识别、灵敏压力反馈。力反馈主要由手背上的5 个舵机进行限位的控制方式,由手指牵动拉绳的限定距离,把被动触觉施加给手指。能够感知类似的碰撞、撞击,极为真实地模拟出对虚拟物体的触觉感受。第二、相比较于其他VR 触觉手套设备,此作品仅使用到了ESP-32 系列开发板、WH48 单联(15nm)电位器、MG-90S 舵机、双母头杜邦线若干、易拉扣、手套本体,易于操作。第三、运动跟踪:利用Vive tracker2.0 跟踪设备,在手臂的动作捕捉和跟踪的基础上,实现了对手掌动作姿态捕捉与力反馈。
难点:第一、在尽量不影响跟踪定位性能的情况下,对细微动作和复杂动作实时跟踪和操控,对团队的硬件设计、设备组装与设计提出了很高的要求;第二、在组装设备过程中,对设置的拉绳距离精度的要求较高,需要人员反复实验和尝试。第三、提供可变力反馈,让使用者可以实时感受到该虚拟物体,比如旋转虚拟旋钮、拉动虚拟控制杆、打开一扇虚拟门的感觉。
1 关键技术及原理
1.1 力反馈触觉技术原理
此设备在实际体验过程中,手指伸缩会拉动线轴,线轴移动导致电位器旋转,电阻发生变化,电位器产生的电信号传输到开发板内,开发板会把数字信号传输给电脑,电脑接受信息,通过数字信号对真实的手柄的坐标进行模拟,转换成VR 场景里面的模拟手柄,然后输入真实手柄相对位置,手指就可以在VR 里移动。力反馈手套可以让使用者在VR里感知到抓取的物体,是因为舵机的摇臂会根据接触物体的不同形状,旋转成不同的角度,限制手指的弯曲程度,模拟实际触摸物体的感觉。
1.2 动作捕捉技术原理
使用Valve 的Lighthouse 追踪系统中VR 光学跟踪方案。此作品的定位技术采用激光和光敏传感器来确定运动物体的位置。
激光通过Lighthouse 的两个基站,每个基站里有一个红外LED 阵列,两个转轴互相垂直的旋转的红外激光发射器。激光基站的工作原理是基于Lighthouse 的长期无漂移(drift-free)位置追踪技术。每个Lighthouse 基站包含两束激光。一个是水平的激光,从下到上横扫追踪的数量;另一束激光是垂直的,从左到右横扫追踪数量。两束激光在各种的轴以3600rpm 速度旋转[1]。两束激光在同一基站,只能有一个激光扇面可以对整个定位空间进行扫描。总的来说,Lighthouse 灯塔技术的核心是基站,这些基站是放置在跟踪区域中的小矩形对象中。它们可用作任何位置跟踪设备的参考点。基站通过不断的用不可见光淹没房间来执行此功能。被跟踪设备上的接收器将拦截光线并找出它们相对于基站的位置。多个基站(SteamVR 为2 个基站)允许被跟踪的设备找出它们在3D 空间中的位置。每个基站都包含一个名为Sync Blinker 的红外信标和2 个快速旋转的激光发射器。每秒60 次,同步闪光灯将发出同步脉冲,2 个旋转激光器将扫描整个房间的光束。接收器、HMD 和控制器,被光传感器覆盖,这些光电传感器可以识别同步脉冲和激光束。当它检测到同步脉冲时,受体开始计数,直到其中一个光电传感器被激光束击中。Lighthouse 计算光传感器何时被激光击中以及该光电传感器的位置,以找到受体相对于基站的确切位置。当有2 个基站时,建立房间3D 空间中受体的位置和方向。基站容易受到遮挡。它们需要跟踪对象的视线。基站设计为可扩展。2 个基站放置在房间的两侧,以最大程度地减少此问题。可以放置更多的基站以增加跟踪范围[2]。
光敏传感器,其通过计算接收激光的时间来得到传感器位置相对于激光发射器的准确位置,利用手柄上不同位置的多个光敏传感器从而得出手柄的位置及方向。如图1 所示,于是通过各个传感器的位置差,就可以计算出手柄的位置和运动轨迹。如图2 所示。
图1 光敏传感器原理图
图2 传感器的位置差计算原理图
1.3 HTC VIVE 与STREAM
HTC Vive 是由HTC 公司与Valve 公司联合开发的一套虚拟现实头戴式显示设备。在Valve 公司提供的SteamVR技术支撑下,HTC Vive 能够给用户带来沉浸式的虚拟现实体验。本文采用 HTC Vive tracker2.0 作为VR 交互场景的配套虚拟现实设备。
Vive Tracker2.0 作为全身追踪接收器。它不同于操作手柄,重量更轻巧,使用更容易,提升了舒适度,用途更广泛;相比较于以往的手柄,延长了75%的电池续航力,给予使用者提供了更沉浸的体验[3]。Vive Tracker 追踪器基于全身追踪创建的虚拟形象更加逼真,它可以应用在不同领域:比如虚拟游戏者可以实时的展示精彩的游戏动作,教育工作者也可以使用精准追踪的道具和模型设备构建培训应用程序。我们使用这项技术来创建简单的追踪对象,其核心技术利用了激光和光敏传感器的原理,用于追踪物体在场景空间中的位移与移动。
2 硬件电路的设计与实现
2.1 ESP-32 主控模块
ESP-WROOM-32 集成了传统蓝牙(BT)、低功耗蓝牙(BLEMCU)和WiFi,具有广泛的用途:WiFi 支持极大范围的通信连接,也支持通过路由器直接连接互联网;而蓝牙可以让用户连接手机或者广播Ble Beacon 以便于信号检测,ESP32 芯片的睡眠电流小于5mA,使其适用于电池供电的可穿戴电子设备。ESP-WROOM-32 支持的数据传输速率高度150Mbps,经过功率放大后,输出功率可达到22dBm,可实现大范围内的无线通信。因此我们选用的这款芯片拥有领先的的技术规格,在高集成度、无线传输距离、功耗以及网络联通等方面性能尚佳。
如图3 所示,在此我们主控模块采用的为ESPWROOM-32 开发板,其共有38 个管脚。ESP-WROOM-32是乐鑫发布的新一代WiFi 和蓝牙双模双核无线通信芯片。此模块的核心是ESP-WOWDQ 芯片,两个XTENSA-BIT LX6 CPU 核可被单独控制,运算能力高达600MIPS,时钟频率的调节范围为80MHz~240MHz,448KB ROM.520 KBSRAM.16KB RTC SRAM,模组集成4MB QSPI FLASH[4]。同时还集成了丰富的外设,包括电容式传感器模块、霍尔传感器、低噪声传感器放大器、SD 卡接口、以太网接口、高速SDIO/SPI/UART/12S/12C 等。
图3 ESP-WROOM-32 实物图
首先,左侧这部分是电位器。上边是按钮,右侧是舵机。下面是摇杆。开发板的GPIO 口对应到实际板子的引脚。根据开发板的原理图,把GPIO 编号跟实际引脚对一一对应。ESP-WROOM-32 开发板电路图如图4 所示。
图4 ESP-WROOM-32 开发板电路图
2.2 电位器模块
首先电位器接线可以使用长度XH2.54mm,长度30cm 的5P 端子线,这种线插到电位器上比较牢固,开发板也可以直接插入引脚,中间用带锡的热缩管连接,用热熔枪进行炙烤固化。接起来也非常得方便,使用WH48 单联(15mm)电位器.此设备通过拉绳带动手背上的电位器,把拉绳的距离转化成电位器阻值的变化,以此来判断手指弯曲的程度。如图5 单个电位器的接线图,绿色线路代表输入的Vcc(3.3V 正极),白色线路代表经过电位器改变后输出的电信号(Analog),分别接入到 ESP32 的GPIO 上。蓝色线路代表是接地(GND)。
图5 电位器线路图
其中,当5 个电位器全部接到如图6 所示电路图中时,红色线路代表输入的Vcc,彩色线路代表经过输入电源之后对电源进行处理后输出的电信号,黑色线路代表接地。
图6 总电位器接线示意图
2.3 舵机模块
舵机齿轮卡住线轴模拟抓住物体的触感,舵机复位可以伸缩5 根手指。首先采用5V 的电源。所以红色线路代表输入5V 的电源,棕色线路代表的是接地(GND),另外黄色线路代表信号线接入ESP-32 开发板上。按钮接线类同,其中有一根棕色线接地,另一根黄色线接电信号。如图7 所示。
图7 舵机接线实物图
2.4 摇杆模块
摇杆的主要作用是力反馈手套其中的一个配套动作反馈功能,例如旋、扭、力方向确认等等。摇杆线路实物如图8 所示。摇杆:接5V 的电压,摇杆还有三个输入口,分别是X 轴、Y 轴和Button,这3 个口分别接入到GPIO 的33 口、25 口和26 口。
图8 摇杆线路实物图
3 软件设计与流程
本文主要的研究方向是基于VR 的手指动态识别追踪智能手套,运行环境是基于OpenGloves 的SteamVR 驱动软件,其原理是根据VR 场景中各种3D 物体的尺寸,来计算出可限制手指移动的程度,采用VivetTracker2.0 实现了对手掌动作姿态捕捉与力反馈。
3.1 固件和软件设计
电脑安装CP210X 驱动,安装驱动程序后插入设备操作系统中可以看到一个虚拟的COM 端口(虚拟意味着没有RS232 接口的串口硬件,但是从软件角度可以与旧的RS232 端口进行同样的通信)。实现了硬件和软件之间数据、信息的交互。
利用Arduino IDE,安装ESP-Servo 标准外设库,通过Servo 库可以用Arduinl 控制舵机(伺服电机)。Servo库允许大多数Arduino 开发板,同时控制12 个舵机。此作品舵机有3 条引线,它们分别是电源线,接地线和信号线。电源线是红色的。使用Arduino 开发板的5V 引脚为舵机供电。接地线是黑色的,其连接在Arduino 开发板的接地引脚上的。信号线是桔红色,信号线连接在Arduino 开发板的数字输入输出引脚上。
安装Lucidgloves-firmware,是固化在硬件中的软件,它存储着计算机系统中硬件设备最基本的参数,为系统提供最底层、最直接的硬件控制。对于任何嵌入式系统,固件都是一个重要的部分,因为在一个新的平台上,固件通常是被移植和执行的第一段代码。对不同的系统,固件有很大差异,它可以是一个完整的嵌入式系统,也可以只是一段简单的初始化和引导加载程序。在Arduino 中对ESP32 开发板模块、电位器模块、蓝牙模块、摇杆进行了相应的参数设置。
其中定位器定位流程图如图9 所示。
图9 定位器定位流程图
3.2 手指动作捕捉流程
首先,通过ESP-32 持续监测电位器输出口电压信号,当手指弯曲带动线绳伸缩拉动电位器转动,使得电位器转动导致阻值发生变化,电位器输出电压信号发生变化,ESP-32 通过蓝牙将电压变化数值发送至上位机,通过电压变化数值计算手指弯曲程度,最后将手指弯曲程度输入至可视化界面。流程如图10 所示。
图10 手指动作捕捉流程图
3.3 力反馈功能流程
首先当我们在虚拟交互界面抓取物体时,上位机获取到抓取到物体的形态,解算出可以模拟物体触感的拉绳长度舵机限位角度,通过蓝牙发送至ESP-32 单片机,单片机将转动角度发送给舵机,舵机进行转动限制拉绳长度,模拟抓取物体的触感。流程如图11 所示。
图11 力反馈功能流程图
4 设备测试
如图12 所示,手套和上位机连接之后,利用Arduino 1.8.12 软件测试手套可以查看到数据有规律的变化,证明手套可以进行正常伸缩移动操作且进行了成功的烧录。
图12 测试结果图
5 总结
本次作品支持手势追踪、无线设计、兼容Quest 2(SteamVR/PC VR 版本)。目前,此作品力反馈功能已经兼容多款SteamVR 游戏,未来,我们可以使用VR 技术对危险物品进行操作减少对人类的伤害。由于时间紧迫,以后我还将继续缩减体积(采用霍尔电流传感器来追踪手势),并追踪五指的左右移动。计划设计一种不需要3D 打印工具的VR 体感手套。在之后的时间中,我们会进一步研究和探索温度模拟、电刺激等其他体感集成于一起的VR 手套。