APP下载

Leap Motion体感控制器及其在飞机结构展示系统中的应用

2016-05-09李秋雨

计算机应用与软件 2016年4期
关键词:体感手势手指

刘 春 李秋雨

Leap Motion体感控制器及其在飞机结构展示系统中的应用

刘 春 李秋雨

(沈阳航空航天大学航空制造工艺数字化国防重点学科实验室 辽宁 沈阳 110136)

由于现有的展示系统主要是依靠传统的鼠标和键盘实现控制,在人机交互和效率上存在很大的问题。针对这种情况,提出采用Leap Motion体感控制器代替传统鼠标键盘的程序控制方法。采用Leap公司的Leap Motion作为传感器,建立不依赖于传统手持设备的手势交互飞机结构展示系统。通过手势变换和手势识别实现飞机结构的放大、缩小、平移和旋转等基本功能。应用实例表明,Leap Motion体感控制器是一种非常直观、自然、有效的人机交互设备,可以广泛应用于人机交互领域。

Leap Motion体感控制器 手势识别 飞机结构 手势变换 展示系统

ShenyangAerospaceUniversity,Shenyang110136,Liaoning,China)

0 引 言

本文介绍了美国Leap公司的Leap Motion体感控制器及其应用。Leap Motion体感控制器是面向PC以及Mac计算机的体感控制器制造公司Leap旗下的体感控制产品,于2013年2月27日发布[1]。传统的鼠标和键盘经常受到连接线和硬件设备的约束,在使用中不直观,比较麻烦。通常情况下,鼠标和键盘对二维对象操作还可以,但对于三维对象的操作就比较复杂[2]。而Leap Motion体感控制器的特点是允许用自然手势控制电脑程序,可以摆脱传统鼠标和键盘的控制方式。它利用富有表现力的手势,使人从硬件设备的束缚中解脱出来,通过采集用户手势在空间运动数据,利用我们熟悉的手势动作,可以自然地操作三维对象。Leap Motion体感控制器在精度、效率和可移植性方面也有重大突破。如Leap Motion体感控制器可达到Kinect等其他体感产品精度的200倍,甚至能捕捉到每个手指在0.01 mm之内的运动,而延时仅为5~10 ms,使用体验非常流畅[3];其可以同时追踪多个目标,并且一般只需占用CPU的2%性能,不会影响智能设备性能;其通过USB接口能够和传统的电子设备完美交融,非常易于嵌入到台式电脑、笔记本、超级本,以及智能电视等电子产品中[4]。其在教育、医学以及游戏等很多需要人机交互的领域开始应用,取得非常直观的人机交互效果。例如,谷歌地图开始支持Leap Motion体感控制器,用户不需要鼠标和触屏,运用各种手势来操作和控制3D地图、实现导航功能[5]。Leap Motion体感控制器支持Windows 7、Windows 8以及Mac OS X 10.7及10.8。

本文介绍Leap Motion体感控制器的工作原理与功能,研究Leap Motion体感控制器的应用。通过飞机结构三维展示系统实例,将展示利用Leap Motion体感控制器采集简单手势并控制应用程序的方法及步骤,使用户摆脱常规的鼠标和键盘程序控制方式而更加直观、自然地控制应用程序。

1 Leap Motion体感控制器原理及功能

Leap Motion体感控制器外部由一个壳体和一个指示灯构成。内部是由两片窄带滤光片、两个中低像素的摄像头、3个红外LED灯,以及USB高速芯片组成,如图1所示[6]。

图1 Leap Motion体感控制器组成图

Leap Motion体感控制器的主要工作原理是通过两个摄像头模拟人眼捕捉经过红外LED 灯照亮的手部影像,利用双摄像头画面建立手的三维模型并分析手势的变化。当手进入设备的视野识别区时,内置的两个摄像头就开始同时捕捉目标,实时地计算捕捉到的目标的视差,这样就可以获得目标的空间信息。这里所说的目标特指已经过滤后,如掌心、指尖这样的目标信息。通过LED灯的照明,加强了目标与背景的亮度对比,可以更加方便地识别目标。但是,在室外或者是红外光较强的地方,控制器则不能正常使用。机体内内置的通信芯片采用标准USB 传输技术,将采集的图像信息数字化,转化的数据传输到电脑内,电脑经过图像识别和运算还原手势变化并将手部动作反馈至桌面应用程序实现手势的直接控制[7]。Leap Motion体感控制器的优点在于可以对目标实现更精确的跟踪。图2为计算机手势识别处理图。

图2 计算机手势识别处理

与Leap Motion体感控制器连接的计算机内部的后置处理软件可以捕捉分析设备可视范围内的手势,可以识别手及手指个数、指尖的位置、指尖的方向、手和手指的运动趋势[7]。手势的识别还包括:如画圈,挥动,屏幕点击,键盘点击,以及手掌平面及四指方向的识别等。图3为Leap Motion体感控制器能够识别的常用手势。该设备具有高精度和高跟踪帧率,可工作范围大约在设备前方的从25到600毫米。Leap Motion体感控制器系统采用右手笛卡尔坐标系,返回的数值以毫米为单位。使用Leap Motion体感控制器时首先要进行Windows系统或Mac的环境变量的配置,然后将设备用数据线与电脑相连,将其摆放在电脑屏幕的正前方,指示灯朝外。当Leap Motion体感控制器SDK应用程序运行时,它会在Windows的任务栏或者Mac的搜索栏中显示一个图标提示。当设备插入并且成功运行后,图标变成绿色。软件初始化时会闪黄光,而在错误发生时会变成红色[8]。

图3 Leap Motion对手势的识别

2 Leap Motion体感控制器开发包介绍

安装完Leap Motion体感控制器的SDK后,将生成编程所必须的文件,包括两个头文件:leap.h 和leapMath.h,一个动态链接库leap.dll和一个leap.lib库文件[5]。对于不同的编程语言,提供了相应的帮助文档和例子程序供用户使用。在Leap Motion体感控制器应用程序开发时,需要把上述文件关联到项目中。下面介绍Leap Motion体感控制器SDK开发包的使用[9]。

在Leap Motion体感控制器应用程序中需要创建监听器和控制器对象,并采集手势数据供应用程序使用。下面介绍控制器的Controller类和监听器Listener类以及一些辅助类,包括Frame类、HandList类、Hand类和FingerList类[10]。

Controller类是控制器类,在Leap Motion体感控制器和应用程序之间提供了主要的接口。Controller类图如图4所示。

图4 Controller类图

addListener函数用于把监听器对象与控制器对象相关联,并把该监听器对象加入到监听器对象列表里。控制器对象为与其关联的监听器对象分配Leap Motion体感控制器事件。监听器的回调函数是按任意顺序调用的。

enableGesture函数用来开启或禁止特定的手势,默认情况下所有的手势都是被禁止的,只有当控制器对象调用enableGesture函数将某个特定的手势开启时,这个手势才能在应用中使用。

frame函数用于返回Leap Motion体感控制器软件获得的追踪数据帧。使用可选的历史参数指定要检索的帧。如通过frame(0)或frame()获取当前帧,frame(1)获取前一帧等。

removeListener函数用于从监听器列表里移除一个接收Leap Motion体感控制器事件的监听器。当监听器的生存周期结束时,必须调用此函数移除监听器。

Listener类是监听器类,定义了一系列回调函数,用来响应Controller对象分配的事件。为了处理Leap Motion体感控制器事件,创建一个Listener类对象,并与Controller类对象相关联。当一个事件发生时,控制器通过传递自身的引用调用监听器相关回调函数处理Leap Motion体感控制器事件。Listener类图如图5所示。

图5 Listener类图

onInit函数用于控制器对象与监听器对象关联完成后,初始化控制器对象。onConnect函数用于连接控制器与Leap Motion体感控制器软件。onDisconnect函数用于使控制器与Leap Motion体感控制器软件断开连接。onExit函数用于使监听器与控制器分离。onFrame函数用于获取最新的运动跟踪帧数据,在onFrame函数里可以通过调用函数Controller::frame()来获得对应的数据,其中函数的返回值就是最新的Frame对象(Controller对象的引用被作为参数传给了回调函数)。

Frame类代表了在一帧中检测到的一组手和手指的追踪数据。该类中有一个返回值为HandList的hands函数,该函数返回了手的对象列表,该列表包含了在当前帧中检测到的所有手对象。

HandList类代表了手的对象列表。里面包含两个重要函数:Hand leftmost()const和Hand rightmost()const。这两个函数可以获得左右手。Hand类反映了识别的手的物理特性。在Hand类里可以调用fingers函数返回一个手指列表,该列表包含了识别到的这只手的所有手指对象。利用count()函数获得手指个数。

3 Leap Motion体感控制器在飞机结构展示系统中的应用

本文利用Leap Motion体感控制器实现了一个飞机结构展示系统程序的控制,通过手势动作可以实现飞机结构模型的平移、旋转、放大和缩小。

3.1 飞机结构展示系统的组成及工作流程

基于现有的飞机结构整体模型,结合Leap Motion体感控制器开发了一套投影展示系统。系统硬件主要包括Leap Motion体感控制器、PC机、投影仪、投影幕。Leap Motion体感控制器作为用户的交互界面,获取用户的手势信息,计算机识别用户的输入,并且对数据进行处理,最终飞机结构的视频信号输出到投影仪设备。

飞机结构展示系统运行后,首先对系统初始化,接着Leap Motion体感设备开始采集手势,电脑程序处理采集到的手势,并把结果交由显示程序。工作流程如图6所示。

图6 飞机结构展示系统工作流程图

3.2 飞机结构展示程序及控制方法

本文的飞机结构展示系统是在Visual Studio 2010的环境下开发的。飞机模型通过catia创建,然后通过3dmax存为fbx文件导入到OSG中。程序中创建了飞机类Aircraft,通过其方法界面Display(int)实现了飞机3D模型的渲染。Aircraft类图如图7所示。

图7 Aircraft类

Init函数用于初始化变量,设置必要的参数,如屏幕大小等,实例化图形设备对象。LoadModel函数用于加载程序需要的所有图形或其他内容的地方,包括图像、模型、声音等。Display函数是显示函数,用于显示3D模型,包括对模型放大、缩小、平移、旋转等操作。Close函数用于退出程序。

本文的飞机结构系统的控制部分以单手控制模式实现。通过对右手手势的识别判定实现展示飞机结构的功能。具体手势控制功能如下:

(1) 程序开始:Leap Motion体感控制器检测到一只握拳的手,如图3(a)。接着,展示系统开始激活。

(2) 平移:Leap Motion体感控制器检测到一个手指时,如图3(b)。手指上下左右平移,飞机模型随着做相应的平移运动,如图8(a)所示。

(3) 放大:Leap Motion体感控制器检测到两个手指,如图3(c)。同时手指朝着屏幕的方向移动,模型放大,如图8(b)所示。

(4) 缩小:Leap Motion体感控制器检测到两个手指,如图3(c)。同时手指背离屏幕方向运动,模型缩小,如图8(c)所示。

(5) 旋转:Leap Motion体感控制器检测到五个手指,如图3(f)。手绕x、y、z三个轴转动时,模型实现相应的旋转,如图8(d)、(e)、(f)所示。

(6) 程序结束:Leap Motion体感控制器检测到三个手指时,如图3(d)所示,程序结束。

图8 手势控制的飞机结构展示系统

4 结 语

本文实现了Leap Motion体感控制器在飞机结构展示系统中的应用。通过Leap Motion体感控制器对手势的识别,实现了飞机3D模型的平移、旋转、放大,以及缩小等演示操作,从而摆脱了传统的鼠标和键盘控制方式,降低了人机交互操作的复杂程度,使人机交互更自然和高效,增强了沉浸感。应用实例表明,Leap Motion体感控制器是一种非常直观、有效的人机交互技术,可以广泛应用于人机交互领域。

[1] Frank Weichert,Daniel Bachmann,Bartholomäus Rudak,et al.Analysis of the accuracy and robustness of the Leap Motion Controller[J].Sensors,2013(13):6380-6393.

[2] 鲍峰,卢稼奇,黎楚秦.基于Kinect的人机交互演示系统[J].计算机与现代化,2013(10):46-50.

[3] 胡颖群.基于kinect体感识别技术的研究与实现[J].信息技术,2013,42(7):18-20.

[4] 廖宏建,曲哲.基于Kinect体感交互技术的虚拟装配实验系统开发[J].实验技术与管理,2013,30(7):98-102.

[5] Khoshelham K,Elberink S O.Accuracy and resolution of kinect depth data for indoor mapping applications[J].Sensors,2012(12):1437-1454.

[6] 陈静.基于kinect的手势识别技术及其在教学中的应用[D].上海:上海交通大学,2013.

[7] Sturman M M,Vaillancourt D E,Corcos D.Effects of aging on the regularity of physiological tremor[J].Neurophysiol,2005,93(6):3064-3074.

[8] 罗元,谢彧,张毅.基于kinect传感器的智能轮椅手势控制系统的设计与实现[J].机器人,2012,34(1):110-119.

[9] 萧鸣.Leap Motion开发系列—win32应用的环境配置[EB/OL].(2013-11-2).[2014-3-10].http://blog.csdn.net/guoming0000/article/details/10197267.

[10] leap motion. Hello World[EB/OL].[2014-3-25].https://developer.leapmotion.com/documentation/cpp/devguide/Sample_Tutorial.html.

LEAP MOTION SOMATOSENSORY CONTROLLER AND ITS APPLICATION IN AIRCRAFT STRUCTURE DISPLAY SYSTEM

Liu Chun Li Qiuyu

(KeyLaboratoryFundamentalScienceforNationalDefenceofAeronauticalDigitalManufacturingProcess,

Existing display system is mainly relying on conventional mouse and keyboard to achieve control, so there are quite big problems in human-computer interaction and efficiency. In view of this situation, we put forward a program control method which uses Leap Motion somatosensory controller to replace traditional method of program control with mouse and keyboard. By using Leap Motion innovated by Leap as the sensor, we established the gesture interactive aircraft structure display system without depending on traditional handheld device. Through gestures transform and gesture recognition the method achieves the basic functions including zooming, rotation and translation of aircraft structure. Application examples show that Leap Motion somatosensory controller is a very intuitive, natural and effective human-computer interaction device, it can be widely used in the field of human computer interaction.

Leap Motion somatosensory controller Gesture recognition Aircraft structure Gesture transform Display system

2014-08-24。辽宁省自然科学基金项目(2010276)。刘春,教授,主研领域:数字化制造,虚拟现实仿真,面向对象编程。李秋雨,硕士生。

TP3

A

10.3969/j.issn.1000-386x.2016.04.053

猜你喜欢

体感手势手指
手指背侧复合组织块离断再植
体感交互技术在脑卒中康复中的应用
手指操
人体体感感知机械手设计与实现
挑战!神秘手势
V字手势的由来
非触控式的体感机械臂交互控制系统研究
胜利的手势
体感语境下的交互行为设计
笔穿手指