本发明专利技术公开了一种基于数据手套使用自然手势进行精确三维建模的方法,该方法在手套外部加装LilyPad Arduino作为处理芯片,通过弯曲传感器、FSR402型电阻式薄膜压力传感器、JY-901模块监测手部动作,通过LilyPad XBee与XBee 1mW Wire Antenna无线模块与计算机双向通信。通过与体感设备得到的手部坐标与运动数据进行融合,能够使计算机读懂人体自然语言,并将测量的精度达到接近鼠标的程度,从而能够使用户使用自然语言进行三维建模。
【技术实现步骤摘要】
本专利技术涉及一种基于数据手套使用自然手势进行精确三维建模的方法。
技术介绍
目前,弯曲传感器、加速度计等可穿戴传感器已经可以通过组合应用来检测基本的自然手势例如手指的弯曲和伸直。同时结合大量自然手势数据的捕获和机器学习,目前已经能进行基本的手指关节精度的姿势识别。但是由于手的空间运动会使三轴加速度计产生累计误差效应,从而导致无法准确还原手的空间运动轨迹,而且直接影响手与用户身体相对位置关系的判断。这使得当前的数据手套只能非常有限地应用于简单的手指运动的姿态识别,无法完整地支持自然手势交互。另一方面,目前的体感交互技术使用编码后的红外线进行测距,然后通过传感器测量反射的光线图案进行距离的检测。这类技术的精度多在毫米级别,而且由于最小使用距离的限制,用户需要站得比较远。这使得捕捉到的手势并不十分精确,而且由于缺乏有效的机器学习算法,只能识别简单手握紧和张开两种姿势。此外,当手被部分或全部遮挡,这类技术便无法正确捕捉与检测距离和姿势。因此,目前的体感技术在精确三维建模领域的应用十分有限。单一使用体感设备无法识别复杂的手势语言,对手部的测量精度也达不到三维建模的要求。而单一的数据手套由于无法还原运动轨迹和位置关系使得其能识别的手势有限,并且由于只用到手部姿势而非全身骨骼的分析,使得其交互十分单一,应用在三维建模的效果较差。同时不管是体感技术还是传统的手势手套,都无法解决大量的点击的问题并且缺乏对于人体直接的反馈。
技术实现思路
本专利技术主要解决体感技术在空间自然手势识别中的精确不足以及传统数据手套受传感器影响导致的姿势、位置判断误差问题。本专利技术结合以上两种技术,开发出一种新型数据手套,通过体感技术对大幅度手势的识别来对数据手套的加速度传感器的累计误差效应进行消除,从而支持基于自然手势的高精度三维建模。本专利技术的目的是通过以下技术方案来实现的:一种基于数据手套使用自然手势进行精确三维建模的方法,所述数据手套的手背中心处固定LilyPad Arduino,五个手指处分别固定长条形的弯曲传感器,每个弯曲传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的模拟口,在LilyPad Arduino的5V口与模拟口之间连接阻值为10KΩ的分压电阻,使得模拟口的读数为弯曲传感器上的电压的模拟值,模拟值的大小反映了手指的弯曲程度;在无名指指尖、中指指尖、食指指尖、食指第二关节靠近大拇指一边的侧面分别固定FSR402型电阻式薄膜压力传感器,每个FSR402型电阻式薄膜压力传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的数字口,同时在LilyPad Arduino的5V口与数字口之间连接阻值为20KΩ的分压电阻,使得数字口的读数为FSR402型电阻式薄膜压力传感器的电压的模拟值的二值判定,当FSR402型电阻式薄膜压力传感器未被挤压时,数字口的读数为0;当FSR402型电阻式薄膜压力传感器受到挤压时,数字口的读数为1;在手背靠后位置固定JY-901模块,所述JY-901模块集成加速度计、陀螺仪和地磁场传感器;所述JY-901模块的5V口、GND口、SCL口、SDA口分别连接LilyPad Arduino的5V口、GND口、SCL口、SDA口;在JY-901模块的SCL口与LilyPad Arduino的5V口之间连接阻值为4.7KΩ的上拉电阻,在JY-901模块的SDA口与LilyPad Arduino的5V口之间也连接阻值为4.7KΩ的上拉电阻;LilyPad Arduino与JY-901模块之间使用IIC总线协议进行通信,JY-901模块可测出手掌的动态欧拉角;在手掌掌心处固定LilyPad XBee,所述LilyPad XBee的5V口、GND口、rx口、tx口分别与LilyPad Arduino的5V口、GND口、D5口、D6口连接,从而读取LilyPad Arduino的数据;所述LilyPad XBee上加装2.4G的XBee 1mW Wire Antenna无线模块,所述XBee 1mW Wire Antenna无线模块采用802.15.4协议栈,通过串口与计算机进行双向通信,将接收到的LilyPad Arduino的数据传输给计算机串口,计算机端通过串口库进行读取操作;在手背中心靠后位置固定EB-Vibrator震动马达,EB-Vibrator震动马达的5V口、GND口和SIG口分别连接LilyPad Arduino的5V口、GND口和D9口,D9口的PWM输出功能可以调节EB-Vibrator震动马达的震动强度。该方法具体包括以下步骤:(1)将微软公司生产的Kinect设备连接计算机,使用微软官方提供的Kinect API得到手部三维空间坐标以及手部运动的动态三轴加速度;(2)数据的采集及标注:首先为各个手势进行编号,利用串口读写库读取数据手套上弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角,FSR402型电阻式薄膜压力传感器的数字口读数以及Kinect设备得到的手部三维空间坐标以及手部运动的加速度;为避免读入过多重复数据,设置数据读取间隔为20秒;完成所有数据的采集后,创建Excel表格train.csv,将数据写入train.csv;标注部分采用手工标注,打开train.csv表格,在每行的末尾为每个数据样本标上手势的编号;数据的采集可以采用Visual Studio平台来实现;(3)利用步骤2采集的数据训练一个基于随机森林模型的手势分类器:所述手势分类器是一个由n支决策树组成的树型分类器,其输出采用简单多数投票法,即输出n支决策树中出现最多的类;不同于一般的决策树,随机森林中每棵决策树并不利用数据点的所有特征,而是随机地从所有特征中取m个生成决策树;手势分类器使用基尼指数作为分割效果的度量,即每次决策树分裂时,选取所有可能分裂方法中基尼指数最小者;当叶节点中的数据都为同一手势类别,或叶节点包含的数据少于2个时,停止分裂;在此模型中,不对决策树进行剪枝;(4)使用Scikit-learn机器学习库中的随机森林分类器:设置分类器的两个参数n,m分别为500和3,然后读入数据手套上的弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度进行训练,分类器的训练过程就此完成;(5)手势命令的识别:对于新的数据点,手势分类器将对其进行层级判断,具体为:先看4个二进制点击值中是否有数据,若有数据,则依据数据出现的位置即可判断用户的手势;若4个二进制点击值均无数据,则将据手套上的弯曲传感器的手指弯曲模拟值,JY-901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度读入已经训练完成的随机森林模型中;随机森林模型将数据读入后,按照每棵树训练时使用的3个特征,将数据的相应特征读入树中;每棵树再根据节点的分裂条件,将数据逐层分类至对应的叶子节点,并输出相应类;当5本文档来自技高网...
【技术保护点】
一种基于数据手套使用自然手势进行精确三维建模的方法,其特征在于,所述数据手套的手背中心处固定LilyPad Arduino,五个手指处分别固定长条形的弯曲传感器,每个弯曲传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的模拟口,在LilyPad Arduino的5V口与模拟口之间连接阻值为10KΩ的分压电阻;在无名指指尖、中指指尖、食指指尖、食指第二关节靠近大拇指一边的侧面分别固定FSR402型电阻式薄膜压力传感器,每个FSR402型电阻式薄膜压力传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的数字口,同时在LilyPad Arduino的5V口与数字口之间连接阻值为20KΩ的分压电阻,使得数字口的读数为FSR402型电阻式薄膜压力传感器的电压的模拟值的二值判定,当FSR402型电阻式薄膜压力传感器未被挤压时,数字口的读数为0;当FSR402型电阻式薄膜压力传感器受到挤压时,数字口的读数为1;在手背靠后位置固定JY‑901模块,所述JY‑901模块集成加速度计、陀螺仪和地磁场传感器;所述JY‑901模块的5V口、GND口、SCL口、SDA口分别连接LilyPad Arduino的5V口、GND口、SCL口、SDA口;在JY‑901模块的SCL口与LilyPad Arduino的5V口之间连接阻值为4.7KΩ的上拉电阻,在JY‑901模块的SDA口与LilyPad Arduino的5V口之间也连接阻值为4.7KΩ的上拉电阻;LilyPad Arduino与JY‑901模块之间使用IIC总线协议进行通信,JY‑901模块可测出手掌的动态欧拉角;在手掌掌心处固定LilyPad XBee,所述LilyPad XBee的5V口、GND口、rx口、tx口分别与LilyPad Arduino的5V口、GND口、D5口、D6口连接,从而读取LilyPad Arduino的数据;所述LilyPad XBee上加装2.4G的XBee 1mW Wire Antenna无线模块,所述XBee 1mW Wire Antenna无线模块采用802.15.4协议栈,通过串口与计算机进行双向通信,将接收到的LilyPad Arduino的数据传输给计算机串口,计算机端通过串口库进行读取操作;在手背中心靠后位置固定EB‑Vibrator震动马达,EB‑Vibrator震动马达的5V口、GND口和SIG口分别连接LilyPad Arduino的5V口、GND口和D9口,D9口的PWM输出功能可以调节EB‑Vibrator震动马达的震动强度;该方法具体包括以下步骤:(1)将微软公司生产的Kinect设备连接计算机,使用微软官方提供的Kinect API得到手部三维空间坐标以及手部运动的动态三轴加速度;(2)数据的采集及标注:首先为各个手势进行编号,利用串口读写库读取数据手套上弯曲传感器的手指弯曲模拟值,JY‑901模块得到的动态欧拉角,FSR402型电阻式薄膜压力传感器的数字口读数以及Kinect设备得到的手部三维空间坐标以及手部运动的加速度;为避免读入过多重复数据,设置数据读取间隔为20秒;完成所有数据的采集后,创建Excel表格train.csv,将数据写入train.csv;标注部分采用手工标注,打开train.csv表格,在每行的末尾为每个数据样本标上手势的编号;数据的采集可以采用Visual Studio平台来实现;(3)利用步骤2采集的数据训练一个基于随机森林模型的手势分类器:所述手势分类器是一个由n支决策树组成的树型分类器,其输出采用简单多数投票法,即输出n支决策树中出现最多的类;不同于一般的决策树,随机森林中每棵决策树并不利用数据点的所有特征,而是随机地从所有特征中取m个生成决策树;手势分类器使用基尼指数作为分割效果的度量,即每次决策树分裂时,选取所有可能分裂方法中基尼指数最小者;当叶节点中的数据都为同一手势类别,或叶节点包含的数据少于2个时,停止分裂;在此模型中,不对决策树进行剪枝;(4)使用Scikit‑learn机器学习库中的随机森林分类器:设置分类器的两个参数n,m分别为500和3,然后读入数据手套上的弯曲传感器的手指弯曲模拟值,JY‑901模块得到的动态欧拉角以及Kinect设备得到手部三维空间坐标以及手部运动的加速度进行训练,分类器的训练过程就此完成;(5)手势命令的识别:对于新的数据点,手势分类器将对其进行层级判断,具体为:先看4个二进制点击值中是否有数据,若有数据,则依据数据出现的位置即可判断用户的手势;若4个二进制点击值均无数据,则将据手套上的弯曲传感器的手指弯曲模拟值,JY‑901模块得到的动态欧拉角以及Kinect设备...
【技术特征摘要】
1.一种基于数据手套使用自然手势进行精确三维建模的方法,其特征在于,所述数据手套的手背中心处固定LilyPad Arduino,五个手指处分别固定长条形的弯曲传感器,每个弯曲传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的模拟口,在LilyPad Arduino的5V口与模拟口之间连接阻值为10KΩ的分压电阻;
在无名指指尖、中指指尖、食指指尖、食指第二关节靠近大拇指一边的侧面分别固定FSR402型电阻式薄膜压力传感器,每个FSR402型电阻式薄膜压力传感器的引脚一端连接LilyPad Arduino的GND口,另一端连接LilyPad Arduino的数字口,同时在LilyPad Arduino的5V口与数字口之间连接阻值为20KΩ的分压电阻,使得数字口的读数为FSR402型电阻式薄膜压力传感器的电压的模拟值的二值判定,当FSR402型电阻式薄膜压力传感器未被挤压时,数字口的读数为0;当FSR402型电阻式薄膜压力传感器受到挤压时,数字口的读数为1;
在手背靠后位置固定JY-901模块,所述JY-901模块集成加速度计、陀螺仪和地磁场传感器;所述JY-901模块的5V口、GND口、SCL口、SDA口分别连接LilyPad Arduino的5V口、GND口、SCL口、SDA口;在JY-901模块的SCL口与LilyPad Arduino的5V口之间连接阻值为4.7KΩ的上拉电阻,在JY-901模块的SDA口与LilyPad Arduino的5V口之间也连接阻值为4.7KΩ的上拉电阻;LilyPad Arduino与JY-901模块之间使用IIC总线协议进行通信,JY-901模块可测出手掌的动态欧拉角;
在手掌掌心处固定LilyPad XBee,所述LilyPad XBee的5V口、GND口、rx口、tx口分别与LilyPad Arduino的5V口、GND口、D5口、D6口连接,从而读取LilyPad Arduino的数据;所述LilyPad XBee上加装2.4G的XBee 1mW Wire Antenna无线模块,所述XBee 1mW Wire Antenna无线模块采用802.15.4协议栈,通过串口与计算机进行双向通信,将接收到的LilyPad Arduino的数据传输给计算机串口,计算机端通过串口库进行读取操作;
在手背中心靠后位置固定EB-Vibrator震动马达,EB-Vibrator震动马达的5V口、GND口和SIG口分别连接LilyPad Arduino的5V口、GND口和D9口,D9口的PWM输出功能可以调节EB-Vibrator震动马达的震动强度;
该方法具体包括以下步骤:
(1)将微软公司生产的Kinect设备连接计算机,使用微软官方提供的Kinect AP...
【专利技术属性】
技术研发人员:厉向东,吕士宏,王怡堃,孙小我,张驰,
申请(专利权)人:浙江大学,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。