OneTouchReality
本项目实现了一套比较完整的虚拟现实手势控制机械臂系统,通过Mediapipe在Python中实现摄像头实时捕捉手部关节点,利用UDP协议传输至Unity引擎,且该平台中重建虚拟手模型,并通过cs脚本检测碰撞,达到识别手指与虚拟物体的交互。当检测到碰撞时,系统会通过TCP网络协议发送控制指令到Python服务器,最终驱动Arduino控制实体机械手同步运动。
本项目实现了一套比较完整的虚拟现实手势控制机械臂系统,通过Mediapipe在Python中实现摄像头实时捕捉手部关节点,利用UDP协议传输至Unity引擎,且该平台中重建虚拟手模型,并通过cs脚本检测碰撞,达到识别手指与虚拟物体的交互。当检测到碰撞时,系统会通过TCP网络协议发送控制指令到Python服务器,最终驱动Arduino控制实体机械手同步运动。
### Intro {描述}物理法则的存在赋予了人类的创造力:重力催生了各种球类运动,电磁的定律给予了电脑运行的可能性,光子的独特运动轨迹产生了视觉艺术。有了限制,才会产生更多的可能性。OneTouchReality 将虚拟世界的力学作用于现实世界,让使用者在视觉与听觉之外还能感受到新的一个维度:触觉。它给予了触摸虚拟物体,一个电子幽灵的可能性,让使用者能在电磁的约束下和虚拟世界互动。
### 概念演变 {描述}- 最早的想法思路源自于外骨骼,既然外骨骼能带动人的手达到省力,加强力量的用途,那或许也能限制人的运动,模拟触觉和受力。最早的概念被称为“反向外骨骼“。最初的构想由一套刚体手套(类似于盔甲)来驱动,每个指关节均需要一个舵机,但是在跑进硬件实验室后发现舵机根本不够用,总共就9颗舵机实在捉襟见肘。于是选择模仿线控机器手。在参考,分析人体的手部运动方式后我们发现人指头的运动可以分为两种: 屈张和转动。在这些运动方式下,指尖端点到手背某一个点的距离是一直在变化的,虽然一些指尖位置到手背的距离是相同的但是相隔较远不会有太大的干扰。- 该装置的目的是模拟手部在触摸物体时收到的反向作用力,因为人一般不用手背触摸物体,在触摸物体中,手部的运动也大多为弯屈和向下转动手指,因此舵机只需要在指尖达到物体的判定表面时提供反向的拉力来限制手部运动,实现触摸到虚拟物体的感觉。- 舵机总共5个采用交错式布局固定在手背,绞盘前方配备有束线器来保证正常的收放线。在每个手指段上都有束线器来引导线材的方向防止缠绕,滑落。指尖处线在一个与弹簧连接的杠杆连接,在线被收紧后,挪动手部就会感受到指尖被挤压的感觉,简单模拟触觉。最早本打算使用气动阀门连接气囊,通过气囊膨胀来模拟指尖触觉但是实验室没有气泵也没阀门或者气囊,于是使用了简单的机械结构作为替代。- 相较于早期的刚体手套方案,更加灵活轻便,也可以适配更多尺码。
### 优化目标 {描述}- 舵机只有180度十分致命根本无法发挥出绞盘多圈旋转的优势,活生生把绞盘降级成了摇臂。- 穿戴稍微有点麻烦。(但是等有了正经魔术贴一切都会好起来的orz)- 急停按钮避免舵机故障颤抖或者视觉捕捉错误时导致舵机转动过大拉断手指,不过由于舵机只有180度转动所以暂时取消了。- 舵机导致手指过度拉伸屈张,需要急停设备或者是扭力张力检测,保证安全- 需要提升人体工学和舒适度,避免设备压迫血管导致血液循环不畅,特别是指尖血压较低的位置。- 硬件产品化与友好化:通过改善结构设计,让机械臂更加符合人体工学,同时规范化,便于后续拓展优化。- 增加交互体验:结合力传感器、触觉传感器等,实现更丰富的交互。- 优化手部识别系统:进一步优化手部检测算法,提高精度和响应速度。
### 应用场景 {描述}- 该手套可应用于AR/VR领域,提供虚拟现实的新的一个维度:力和触觉。通过连接力反馈手套,使用者可以感受到触摸物体时的反作用力。手套可以用于游戏,训练,提供交互的新一个维度,或者是给3维设计师使用,提供设计的快速及时感知,评估。在其他领域,或许也可以助力于机器人操控,医疗康复等。最直接的应用便是和vr联动成为虚拟现实设备的一部分,可以优先应用于小游戏或者是训练模拟诸如射箭,气动枪械射击,训练运动员的手部运动,建立肌肉记忆。- 整个系统具有机械简单直接,柔性,小型化,低成本的特性,只需要简单的运算,视觉捕捉系统诸如单个摄像头,少量舵机即可运行。可以应用于对精度要求较低的领域诸如游戏,给游戏玩家更加身临其境的感知。
项目完整代码库:[here](<u>https://github.com/CarterWells111/OneTouchReality</u>)
