基于HID类的USB手势输入系统设计与实现

2017-04-08 09:52滕鹏姜昌华王春慧王丽刘梁
数字技术与应用 2017年2期
关键词:手势识别

滕鹏++姜昌华++王春慧++王丽++刘梁

摘要:基于自然人机交互的手势交互技术应用越来越广,本文基于HID类设计了一种USB手势输入系统,该系统集成加速度传感器、数字陀螺仪和磁力计等多种传感器,采集的数据通过手势运动识别算法处理后,可以实现对计算机光标的控制。经测试证明,该设计方案是可行的。

关键词:输入设备;USB设备;手势识别

中图分类号:TP309 文献标识码:A 文章编号:1007-9416(2017)02-0180-02

1 引言

传统的用于计算机的USB输入设备主要有鼠标、键盘、操纵杆等。随着技术的发展,以手势识别、语音识别等更贴近人类的自然交互手段发展迅速。其中手势是一种符合人类日常习惯的交互手段。本文结合手势识别技术,设计了一种USB手势控制器,可以使用手势实现类似鼠标的功能对计算机光标进行控制。

2 HID协议简介

人机接口设备(HID)是USB协议的一个子类规范,主要应用于人与计算机进行交互的设备,如键盘、鼠标、操纵杆等,HID设备必须符合USB相关的HID规范要求。正因为USB严谨的规范,在Windows XP以上系统中,都集成了USB HID协议,而无需安装驱动。HID设备主要有以下特点:

(1)设备必须按照HID报告格式进行数据上报。

(2)不同速度的设备对上传的数据有限制。低速设备每包数据最大为8byte,全速设备每包数据最大为64byte,高速设备则可达到1024byte。

(3)低速USB设备最快10ms一笔事务,而全速USB设备最快1ms一笔事务;在高速设备中,可达125us一笔事务,最高速度达24.576MB/s。

(4)计算机对数据采用查询处理,相比中断传输,没有传输速度的保证。

计算机识别HID设备的过程如下:插入设备后,计算机会向设备请求各种描述符来识别设备。设备应在定义描述符的时候按照HID规范定义设备的类别。USB规范中,定义了各种描述符约束设备的定义。图1列出了HID各种描述符之间的关系。在应用中,每个设备也能用多个接口描述符来实现多接口设备,而且在每个接口描述符下还可有多个端点描述符。

由图1中所示,除了按照USB规范定义的描述符外,HID设备还必须遵守HID描述符。另外,设备与计算机之前的数据传输也是通过报告的形式来实现的,所以还必须定义报告描述符;而物理描述符不是必需的。HID描述符是关联于接口(而不是端点)的,所以设备不需要为每个端点都提供一个HID描述符。USB设备有4种传输方式与计算机进行数据传输,分别为控制方式、中断方式、批量方式和同步方式。每种方式都有它的应用场合。对于HID设备,只支持控制和中断两种传输方式。

标准USB鼠标报告描述符描述4个字节,如表1所示,第一个字节表示按键,第二个字节表示鼠标X轴偏移值(正值为右移,负值为左移),第三个字节表示鼠标Y轴偏移值(正值为下移,负值为上移),第四个字节表示滚轮(正值为往上滚动,负值为往下滚动)。手势输入设备就是通过采集手势信息,转换成对应的光标移动信息,组包成USB数据包发送给计算机。设备将采集的手部运动信息转换为计算机光标的移动数据,通过HID协议控制计算机光标。

3 控制器硬件实现

设备采用带有USB控制器的C8051F380作为控制器,使用JY901九轴惯性传感器作为手势识别传感器。其硬件电路如图2所示。设备含两个按键,一个按键A功能为使能及鼠标左键,另一个按键B为鼠标右键。使用时,单击按键A不松开,则设备通过USB的HID协议输出鼠标移动信息,双击按键A,输出鼠标左键按下的鼠标移动信息(相当于鼠标拖拽),三击按键A输出鼠标双击信息,按键B与鼠标右键功能相同。

4 软件算法

USB鼠标HID协议中输出的是光标X轴和Y轴偏移值,可以采用惯性传感器的角速度进行对应。而设备在移动中三维坐标轴也会变化从而产生偏差。为减小偏差,引入传感器提供的角度数据进行分析,得到设备的姿态,从而对陀螺仪的数据进行坐标转换。所得角速度数据中与大地平行的方向为屏幕Y轴,与大地垂直的为屏幕X轴,使输出的数据始终一致。

姿态角计算时所使用的坐标系为“东-北-天”坐标系。欧拉角表示姿态时的坐标系旋转顺序定义为z-y-x(φ-θ-Ψ),[φ θ Ψ]T为惯性传感器当前坐标系相对于大地坐标系的欧拉角,即先绕z轴转ψ,再绕y轴转θ,再绕x轴转φ。在惯性传感器坐标系下的角速度为[ωφωθωΨ]T,则根据欧拉角转换方程,在大地坐标系下的角速度[ωx ωy ωz]T为(图4)。

手势鼠标的主要算法流程为:首先检测按键A是否按下,再启动定时器,检测按键A是否有双击或三击操作,并发送相对应的USB报文;在按键A持续按下中,将采集惯性传感器的角度值和角速度值,并通过旋转矩阵后获取鼠标两个轴的偏移值,最后通过HID协议将USB数据包发送到计算机。如图5所示。

在windows7系统中将设备加电后自动将设备识别为USB输入设备,按下按键A上下左右晃动设备,计算机光标按预期的方向移動,且双击按键A和三击按键A也实现了对应的鼠标左键拖动和鼠标左键双击的效果。

5 结语

惯性传感器具有不受空间限制的特点,用于手势识别可以灵活的应用于各种场合。本文设计了一种USB手势输入设备,该系统应用新型的手势识别方式,更自然的实现了人与计算机的交互控制,稍加改进可用于激光电子笔、电子教鞭等场合。

参考文献

[1]童长飞.C8051F系列单片机开发与C语言编程[M].北京:北京航空航天大学出版社,2005.

[2]姜晓波等.基于微加速度计的ARI-MOUSE的研究[J].传感器与仪器仪表,2008,24(8-1) 113~115.

[3]徐星,刘克刚.一种新型的多功能鼠标的设计[J].电子技术,2004(12) 53~55.

[4]陈莉莉.三轴陀螺仪的空中鼠标定位算法研究[J].信息与电脑.2015(1)57~59.

[5]寇凡,盛怀茂,王直杰.基于体感算法的新型蓝牙遥控器的设计[J].嵌入式技术. 2012,38(4) 31~33,36.

[6]周谊成,尤树华,王辉.基于三维加速度的连续手势识别[J].计算机与数字工程. 2012,40(10)133~136.

猜你喜欢
手势识别
基于手势识别的工业机器人操作控制方法