一种基于数据手套使用自然手势进行精确三维建模的方法

文档序号:8457838阅读:749来源:国知局
一种基于数据手套使用自然手势进行精确三维建模的方法
【技术领域】
[0001]本发明涉及一种基于数据手套使用自然手势进行精确三维建模的方法。
【背景技术】
[0002]目前,弯曲传感器、加速度计等可穿戴传感器已经可以通过组合应用来检测基本的自然手势例如手指的弯曲和伸直。同时结合大量自然手势数据的捕获和机器学习,目前已经能进行基本的手指关节精度的姿势识别。但是由于手的空间运动会使三轴加速度计产生累计误差效应,从而导致无法准确还原手的空间运动轨迹,而且直接影响手与用户身体相对位置关系的判断。这使得当前的数据手套只能非常有限地应用于简单的手指运动的姿态识别,无法完整地支持自然手势交互。
[0003]另一方面,目前的体感交互技术使用编码后的红外线进行测距,然后通过传感器测量反射的光线图案进行距离的检测。这类技术的精度多在毫米级别,而且由于最小使用距离的限制,用户需要站得比较远。这使得捕捉到的手势并不十分精确,而且由于缺乏有效的机器学习算法,只能识别简单手握紧和张开两种姿势。此外,当手被部分或全部遮挡,这类技术便无法正确捕捉与检测距离和姿势。因此,目前的体感技术在精确三维建模领域的应用十分有限。
[0004]单一使用体感设备无法识别复杂的手势语言,对手部的测量精度也达不到三维建模的要求。而单一的数据手套由于无法还原运动轨迹和位置关系使得其能识别的手势有限,并且由于只用到手部姿势而非全身骨骼的分析,使得其交互十分单一,应用在三维建模的效果较差。同时不管是体感技术还是传统的手势手套,都无法解决大量的点击的问题并且缺乏对于人体直接的反馈。

【发明内容】

[0005]本发明主要解决体感技术在空间自然手势识别中的精确不足以及传统数据手套受传感器影响导致的姿势、位置判断误差问题。本发明结合以上两种技术,开发出一种新型数据手套,通过体感技术对大幅度手势的识别来对数据手套的加速度传感器的累计误差效应进行消除,从而支持基于自然手势的高精度三维建模。
[0006]本发明的目的是通过以下技术方案来实现的:一种基于数据手套使用自然手势进行精确三维建模的方法,所述数据手套的手背中心处固定LilyPad Arduino,五个手指处分别固定长条形的弯曲传感器,每个弯曲传感器的引脚一端连接LilyPad Arduino的GND 口,另一端连接LilyPad Arduino的模拟口,在LilyPad Arduino的5V 口与模拟口之间连接阻值为10ΚΩ的分压电阻,使得模拟口的读数为弯曲传感器上的电压的模拟值,模拟值的大小反映了手指的弯曲程度;
在无名指指尖、中指指尖、食指指尖、食指第二关节靠近大拇指一边的侧面分别固定FSR402型电阻式薄膜压力传感器,每个FSR402型电阻式薄膜压力传感器的引脚一端连接 LilyPad Arduino 的 GND 口,另一端连接 LilyPad Arduino 的数字口,同时在 LilyPadArduino的5V 口与数字口之间连接阻值为20K Ω的分压电阻,使得数字口的读数为FSR402型电阻式薄膜压力传感器的电压的模拟值的二值判定,当FSR402型电阻式薄膜压力传感器未被挤压时,数字口的读数为O ;当FSR402型电阻式薄膜压力传感器受到挤压时,数字口的读数为I ;
在手背靠后位置固定JY-901模块,所述JY-901模块集成加速度计、陀螺仪和地磁场传感器;所述 JY-901 模块的 5V P,GND P,SCL P,SDA 口分别连接 LilyPad Arduino 的 5V口、GND 口、SCL 口、SDA 口 ;在 JY-901 模块的 SCL 口与 LilyPad Arduino 的 5V 口之间连接阻值为4.7ΚΩ的上拉电阻,在JY-901模块的SDA 口与LilyPad Arduino的5V 口之间也连接阻值为4.7ΚΩ的上拉电阻;LilyPad Arduino与JY-901模块之间使用IIC总线协议进行通信,JY-901模块可测出手掌的动态欧拉角;
在手掌掌心处固定 LilyPad XBee,所述 LilyPad XBee 的 5V 口、GND 口、rx 口、tx 口分别与 LilyPad Arduino 的 5V P,GND 口、D5 口、D6 口连接,从而读取 LilyPad Arduino 的数据;所述 LilyPad XBee 上加装 2.4G 的 XBee Imff Wire Antenna 无线模块,所述 XBee ImffWire Antenna无线模块采用802.15.4协议栈,通过串口与计算机进行双向通信,将接收到的LilyPad Arduino的数据传输给计算机串口,计算机端通过串口库进行读取操作;
在手背中心靠后位置固定EB-Vibrator震动马达,EB-Vibrator震动马达的5V 口、GND口和SIG 口分别连接LilyPad Arduino的5V 口、GND 口和D9 口,D9 口的PWM输出功能可以调节EB-Vibrator震动马达的震动强度。
[0007]该方法具体包括以下步骤:
(1)将微软公司生产的Kinect设备连接计算机,使用微软官方提供的KinectAPI得到手部三维空间坐标以及手部运动的动态三轴加速度;
(2)数据的采集及标注:首先为各个手势进行编号,利用串口读写库读取数据手套上弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角,FSR402型电阻式薄膜压力传感器的数字口读数以及Kinect设备得到的手部三维空间坐标以及手部运动的加速度;为避免读入过多重复数据,设置数据读取间隔为20秒;完成所有数据的采集后,创建Excel表格train, csv,将数据写入train, csv ;标注部分采用手工标注,打开train, csv表格,在每行的末尾为每个数据样本标上手势的编号;数据的采集可以采用Visual Stud1平台来实现;
(3)利用步骤2采集的数据训练一个基于随机森林模型的手势分类器:所述手势分类器是一个由η支决策树组成的树型分类器,其输出采用简单多数投票法,即输出η支决策树中出现最多的类;不同于一般的决策树,随机森林中每棵决策树并不利用数据点的所有特征,而是随机地从所有特征中取m个生成决策树;手势分类器使用基尼指数作为分割效果的度量,即每次决策树分裂时,选取所有可能分裂方法中基尼指数最小者;当叶节点中的数据都为同一手势类别,或叶节点包含的数据少于2个时,停止分裂;在此模型中,不对决策树进行剪枝;
(4)使用Scikit-1earn机器学习库中的随机森林分类器:设置分类器的两个参数n,m分别为500和3,然后读入数据手套上的弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度进行训练,分类器的训练过程就此完成; (5)手势命令的识别:对于新的数据点,手势分类器将对其进行层级判断,具体为:先看4个二进制点击值中是否有数据,若有数据,则依据数据出现的位置即可判断用户的手势;若4个二进制点击值均无数据,则将据手套上的弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度读入已经训练完成的随机森林模型中;随机森林模型将数据读入后,按照每棵树训练时使用的3个特征,将数据的相应特征读入树中;每棵树再根据节点的分裂条件,将数据逐层分类至对应的叶子节点,并输出相应类;当500课决策树都得到各自输出结果后,统计出得票最多的类,并将此类作为用户数据的对应手势;
(6)将手势翻译为三维建模软件的命令,通过手势分类器得到对应手势后,将对应的命令通过脚本输入三维建模软件,三维建模软件根据得到的命令作出相应的模型;
(7)将数据手套上的弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度作为参数传递给三维建模软件,以设定步骤6所得模型的平移、缩放、旋转等参数,从而实现基于自然手势的精确三维建模。
[0008]本发明的有益效果是,在使用自然语言与计算机进行交互时,能够接近鼠标的精度,同时可以避免手势遮挡、空间站位等问题,从而良好地应用在三维建模中。
【附图说明】
[0009]图1是本发明的电路原理图;
图2是手套实物的元件分布图;
图中,I 为 LilyPad Arduino ;2 为 LilyPad XBee ;3 为 XBee Imff Wire Antenna 无线模块;4为弯曲传感器;5为FSR402型电阻式薄膜压力传感器;6为JY-901模块;7为震动马达;8为5V电池;9为10ΚΩ电阻;10为20ΚΩ电阻;11 SLilyPad XBee的rx 口 ;12为LilyPad XBee 的 tx 口; 13 为 LilyPad Arduino 的 SDA 口; 14 为 LilyPad Arduino 的 SCL口; 15 为 4.7ΚΩ 电阻。
【具体实施方式】
[0010]下面结合附图和具体实施例对本发明作进一步详细说明。
[0011]如图1所示,本发明所述数据手套的手背中心处固定LilyPad Arduino 1,五个手指处分别固定长条形的弯曲传感器4,每个弯曲传感器4的引脚一端连接LilyPad Arduino的 GND 口,另一端连接 LilyPad Arduino 的模拟口,在 LilyPad Arduino 的 5V 口与模拟口之间连接阻值为10ΚΩ的分压电阻9,使得模拟口的读数为弯曲传感器4上的电压的模拟值,模拟值的大小反映了手指的弯曲程度;
在无名指指尖、中指指尖、食指指尖、食指第二关节靠近大拇指一边的侧面分别固定FSR402型电阻式薄膜压力传感器5,每个FSR402型电阻式薄膜压力传感器5的引脚一端连接 LilyPad Arduino 的 GND 口,另一端连接 LilyPad Arduino 的数字口,同时在 LilyPadArduino的5V 口与数字口之间连接阻值为20ΚΩ的分压电阻10,使得数字口的读数为FSR402型电阻式薄膜压力传感器5的电压的模拟值的二值判定,当FSR402型电阻式薄膜压力传感器5未被挤压时,数字口的读数为O ;当FSR402型电阻式薄膜压力传感器5受到挤压时,数字口的读数为I;
在手背靠后位置固定JY-901模块6,所述JY-901模块6集成加速度计、陀螺仪和地磁场传感器;所述 JY-901 模块 6 的 5V 口、GND 口、SCL P、SDA 口分别连接 LilyPad Arduino的 5V 口、GND 口、SCL 口 14、SDA 口 13 ;在 JY-901 模块 6 的 SCL 口与 LilyPad Arduino 的 5V口之间连接阻值为4.7ΚΩ的上拉电阻15,在JY-901模块6的SDA 口与LilyPad Arduino的5V 口之间也连接阻值为4.7ΚΩ的上拉电阻15 ;LilyPad Arduino与JY-901模块6之间使用IIC总线协议进行通信,JY-901模块6可测出手掌的动态欧拉角;
在手掌掌心处固
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1