引言
与传统的鼠标、键盘的输入方式相比,多点触摸技术是一种更加自然和谐的人机交互方式。这种技术最突出的特点是用户可以不借助任何外部设备直接在显示屏幕上进行操作,是一种真正的所见即所得的非常自然的人机交互方式,多个用户可以同时与计算机进行交互,而且各个用户之间并不相互影响,系统甚至还可以识别用户的触摸姿态和手势。然而,在传统的基于触摸屏的触摸控制解决方案中,大多都只是考虑用手指取代鼠标的作用,即一般只考虑单点触控的应用情况。另一方面,无论是目前常见的电阻式还是电容式触摸屏方案,大都应用于面积较小的屏幕或者触摸板上,对于40寸以上大尺寸触摸控制设备上就鲜见传统触摸屏的应用了,这其中不乏制作成本和制作工艺上的考虑。
多点触摸基本原理
传统触摸屏的本质是传感器,它由触摸检测部件和触摸屏控制器组成,常见的传感器包括电阻式和电容式触摸屏。而基于光学感应的多点触摸系统是用户通过触摸投影屏幕表面,影响光学感应成像设备的输入结果,成像设备将成像结果输入软件系统进行处理,一般经过3个步骤,首先是对原始输入图像进行包括矫正、滤波等预处理,然后通过光斑跟踪引擎对触点进行跟踪,并将其解释为各种输入状态,最后将输入位置、状态等信息发送给上层应用程序。应用程序处理结果最终被投射到显示屏幕表面上,从而与用户产生真正的所见即所得的交互效果。其实现框架如图1所示。
根据不同的光学感应原理,目前常见的多点触摸实现方式包括FTIR(受抑全内反射)、DI、LLP等技术。
基于FTIR的多点触摸实现原理如图2所示。
红外LED(IR LED)发射红外线进入诸如亚克力板(Acrylic),当亚克力面板的厚度大于8mm时,光线会发生在亚克力内不停反射,产生全内反射现象,当手指(或者其他材质如硅胶等有一定韧性和反射性的材料)碰到亚克力表面时,全内反射被破坏,光线被手指反射出来,此时,亚克力下方的红外摄像头(IR Camera)捕捉到手指反射的光斑,摄像头捕捉到的光斑会送到计算机进行处理,最终形成输入点。
这种技术的优缺点如表1所示。DI方式原理比较简单,通过IR光源照射投影屏幕,形成均匀的照射效果,当有手指触摸屏幕表面时,IR光线会被反射,从而在成像设备上形成光斑。基于DI技术的多点触摸实现如图3所示。
DI技术的优缺点如表2所示。LLP技术的基本原理是通过红外激光发射装置在投影屏幕表面上方形成一层红外激光表面,当手指触摸到屏幕上时,激光被散射到成像设备上从而形成光斑。基于LLP技术的多点触摸实现原理如图4所示。
LLP技术同样也有明显的优缺点,如表3所示。
系统实现硬件构成
目前的多点触摸硬件常见实现方法都有各自的优缺点,特别是对于大尺寸多点触摸控制系统而言更是明显。我们的应用目标是要在一台70寸的高清LCOS背投电视上实现多点触摸控制效果,受到电视机本身结构和背投屏幕材质的光学特性的限制,无论是直接使用FTIR技术、DI技术还是LLP技术都不能取得理想的光学感应效果。
鉴于此,我们使用了一种特殊的LLP的方式来进行硬件设置,即通过具备主动发射红外光的触笔来模拟手指的直接触摸过程。具体来说:通过触笔在背投屏幕上的触压发射红外光信号,光信号穿透背投屏幕后经过背投内部的大反射镜作镜面反射;镜头板接收镜面反射的光信号,再传递给计算机;触笔产生的信号会在屏幕上形成一个大的光斑,系统采用逐行扫描的方式对信号进行采样(30帧/秒),取光斑的最亮值,并记录该点在CMOS上成像的坐标;计算机对感应到的光信号进行处理,形成一套坐标系统,并将处理后的数据通过特定的数据格式传递给上层应用程序;从而达到跟踪触笔的运动,模拟出多点触摸的效果。图5展现了实际起作用的光路示意图。
多点应用软件框架
我们实现的多点触摸控制上层应用是基于Touchlib构建的,Touchlib是一个开源的用于创建多点触摸交互界面的库,它能够处理红外线光斑跟踪,并向上层应用程序发送诸如按下、移动、释放等事件,使用该库的多点触摸应用基本框架如图6所示。
目前,Touchlib库使用TUIO协议(Table-Top User Interfaces Objects)发送事件,这使得Touchlib可以胜任于包括Adobe Flash在内的任何支持此协议的应用程序。TUIO是一套简单且通用的,特别为满足可感知桌面用户界面需要所设计的协议。因为TUIO协议本身是基于 OSC(OpenSound Control)的,所以TUIO协议可以看做是OSC数据的一种标准化实现,可以用于所有支持该协议的设备上。
TUIO协议定义了两类主要的消息,即set消息和alive消息。其中,set消息用于目标对象特定状态,如位置、姿态或其他任何可以识别状态的通讯;alive消息则用于通过系列的sessionID来标识当前目标对象。TUIO使用下面的格式来进行数据通讯:
/tuio/[profileName] set sessionID [parameterList]
/tuio/[profileName] alive [list of active sessionIDs]
/tuio/[profileName] fseq int32
其中的profileName代表定义好的常用可感知用户界面配置,该配置定义了set消息中目标对象的状态数据格式,比如常用的2D Profile:
/tuio/2Dobj set s i x y a X Y A m r
/tuio/2Dcur set s x y X Y m
为了更好地展现多点触控的视觉效果,我们在上层应用中选择了基于Flash的实现方式。需要指出的是,TUIO原生是通过UDP进行数据传送的,而Flash本身只能通过TCP链接接收数据,因此还必需通过Flosc网关将OSC数据转换为为Flash可以读取的XMLSocket数据。上述流程如图7所示。
通过转换,上层的Flash应用程序就可以接收Touchlib发送的触点位置、编号、触控事件等各种数据,进而做出适当的响应,从而与用户产生多点触摸控制交互。综合上文描述的硬件设置,我们以一台70寸LCOS高清背投电视为基础,基于光学感应开发出一套使用主动红外触摸笔交互的多点触摸控制应用系统,已经成功应用于某风景区电子交互导览的实际应用中,为大尺寸多点触摸控制系统的研究和应用打下了一定的基础。
责任编辑:gt
-
人机交互
+关注
关注
12文章
1200浏览量
55319 -
控制系统
+关注
关注
41文章
6543浏览量
110472
发布评论请先 登录
相关推荐
评论