用于集中管理交互式机器中的人机接口传感器和执行器的装置和方法与流程

文档序号:11449821阅读:399来源:国知局
用于集中管理交互式机器中的人机接口传感器和执行器的装置和方法与流程

本发明总体上涉及用于提供交互式机器例如交互式显示机器中的传感器和执行器的集中管理的方法和装置。



背景技术:

常规编程的交互式机器需要在机器中有定制设计的程序(通常称为“中间件”)来管理从传感器输入的数据并且控制对执行器的指令。创建这样的程序可能很麻烦,特别是当存在大量的传感器和执行器要进行控制时或当不同的传感器和/或执行器在系统中进行交换时。

存在试图提供通用的中间件编程平台的开源项目。例如,yarp(“yetanotherrobotplatform(又一个机器人平台)”)是用c++编写的用于使机器人中的传感器、处理器和执行器互连的开源软件包。yarp支持将机器人控制系统构建成以对等方式进行通信的程序集合,其中,可以交换可扩展族的连接类型以匹配程序员的需要。

包括yarp在内,不存在能够对使用诸如运动传感器等人机接口传感器的人机交互式机器有效地进行控制——包括实时地从这样的传感器中获取原始数据信息并且提取特征数据——的已知的中间件编程平台,已知的中间件编程平台也无法应对管理具有多个输入端的人机交互式机器并且保持低延迟以避免降低显示帧率和降低其他性能的挑战。



技术实现要素:

根据本发明的一个方面,提供了一种编码有传感器中间件平台程序的计算机可读介质,该传感器中间件平台程序能够由处理器执行以创建用于对人机交互式机器中的至少一个传感器和至少一个执行器进行控制的中间件实现(middlewareimplementation)。中间件平台程序包括至少一个输入模块、中间件模块、滤波器模块和重建模块。每个输入模块被配置成从人机接口传感器获取原始数据。中间件模块被配置成从原始数据中提取特征提取数据,其中,特征提取数据是用于通过中间件实现来对人机交互式机器的操作进行控制的相关输入数据。滤波器模块被配置成对特征提取数据应用信号处理操作。重建模块被配置成将经滤波的特征提取数据转换成程序员能够访问的转换形式以创建中间件实现。人机接口传感器可以是运动捕捉相机,在该情况下,原始数据可以是全身骨骼数据,并且特征提取数据是全身骨骼数据的一部分。该骨骼数据的一部分的转换形式可以是根据所选3d传感器协议的分层数据。

输入模块、中间件模块、滤波器模块和重建模块可以是使用基于yarp编程平台(“yarp网络”)的网络协议来进行互连的程序模块。中间件平台程序还可以包括能够经由yarp网络与程序模块中的至少一个程序模块通信的至少一个实用程序;实用程序可以包括能够被执行以监测并控制在程序模块中的至少一个程序模块中运行的进程的程序代码。一种类型的实用程序是信道管理器程序,信道管理器程序与yarp网络通信并且能够被执行以对程序模块中的至少一个程序模块中的服务以及服务之间的连接进行监测,以及对服务应用一组yarp函数。信道管理器程序可以包括视图渲染器,当该视图渲染器被执行时,该视图渲染器对程序模块中的至少一个程序模块的服务和连接的视图进行渲染,该视图包括每个服务的ip地址、端口号和名称。

中间件平台程序还可以包括与程序模块中的其他服务程序通信的注册表服务程序;注册表包括存储有关于其他服务程序的信息的注册表数据库。

根据本发明的另一方面,提供了一种用于创建用于对人机交互式机器中的至少一个传感器和至少一个执行器进行控制的中间件实现的方法。该方法包括:从人机交互式机器的人机接口传感器获取原始数据;从原始数据中提取特征提取数据;对特征提取数据应用信号处理操作;以及将经滤波的特征提取数据转换成程序员能够访问的转换形式以创建中间件实现。

在对特征提取数据进行滤波之前,可以使特征提取数据通过一个或更多个缓冲器。可以在特征提取数据通过一个或更多个缓冲器的同时对特征提取数据执行延迟和校正检查。对特征提取数据进行滤波可以包括:对特征提取数据应用卡尔曼(kalman)滤波。转换经滤波的特征提取数据的步骤可以包括:检验经滤波的特征提取数据并且将经滤波的特征提取数据解析成经检验的数据包。

可以通过使用基于yarp编程平台(“yarp网络”)的网络协议的中间件实现来传输数据,并且可以将经检验的数据包存储在yarp瓶中并经由yarp网络传输至至少一个输出模块,以用于执行人机交互式机器的操作。

附图说明

图1是根据一个实施方式的人机交互式虚拟全息显示机器的透视图。

图2(a)和图2(b)示出了由虚拟全息显示机器的处理器执行以将对象的虚拟3d全息图像显示在机器的金字塔形显示表面上的显示程序的步骤。

图3是由显示程序使用以从四个不同视角捕捉对象的3d模型的2d视图的虚拟相机的示意图。

图4是所捕捉的2d视图的合成图像,该2d视图通过虚拟全息显示机器的投影仪被投影在金字塔形显示器的四个表面上以产生虚拟3d全息图像。

图5是图1所示的虚拟全息显示机器的部件的框图。

图6是用于开发用于对虚拟全息显示机器中的传感器和执行器进行控制的中间件实现的集中式传感器和执行器管理程序(“中间件平台”)的结构的框图。

图7是中间件平台的信道管理器部件的结构的框图。

图8是中间件平台的信道管理器实用程序的中间件连接的视图。

图9是中间件平台的注册服务所使用的内部数据库结构的图形表现。

图10是由中间件平台执行的、用于处理从运动捕捉相机获取的原始数据并将该数据打包以供中间件实现使用的处理的流程图。

具体实施方式

概述

本文中所描述的本发明的实施方式涉及用于对由人机交互式机器使用的传感器和执行器进行集中管理的计算机编程的方法和装置,人机交互式机器例如是将对象的2d图像投影到3d显示表面上以创建该对象的虚拟3d全息的交互式虚拟全息显示机器(如图1所示)或将对象的图像投影到游戏室的墙壁上的交互式游戏室(未示出)。该方法可以表示为存储在非暂态计算机可读介质例如人机交互式机器的存储器上并且由该机器的处理器执行的程序代码(本文中称为“中间件实现”)。中间件实现是使用人机接口传感器中间件平台来创建的,该人机接口传感器中间件平台充当人机交互式机器中的提供传感器数据的传感器例如加速度计和运动捕捉相机与人机交互式机器中的执行器例如电子显示器和声音系统之间的中介。中间件平台提供了用于报告并且询问传感器和执行器所使用的协议的机制以及用于创建在中间件实现中使用的服务的标准架构。

总体而言,中间件平台包括多个程序模块,即一个或更多个输入模块、中间件模块、滤波器模块和重建模块。每个输入模块采集来自每个传感器的相关数据。中间件模块用于提取并且细化所采集的传感器数据。滤波器模块对传感器数据应用信号处理操作。重建模块用于将传感器数据转换成更高级的机器可读形式,使得程序员可以容易地使用该数据来开发中间件实现。程序模块使用基于开源yarp平台的网络协议以及能够链接至应用程序以提供对中间件平台所提供的特征的访问的库来进行互连。

中间件平台还包括为程序员开发和测试中间件实现的不同原型而提供用户友好的手段的其他程序模块。这些程序模块包括三个主要类别,即实用程序、服务和客户端。实用程序是提供对中间件实现中正在运行的进程的访问并且允许对这样的进程进行监测和管理的程序。服务是专门设计的应用程序,这些应用程序一起限定了中间件实现的功能。客户端是提供形式化的协议以连接至服务的程序。

中间件平台的模块化结构预期通过集成和读取各种传感器的输入驱动程序并将这样的驱动程序可通信地连接至人机交互式机器中的显示器和其他执行器来简化程序员编程中间件实现的任务。更具体地,由中间件平台提供的模块化服务预期使设置硬件设备和与每个设备的软件开发工具包(sdk)进行交互的繁琐任务减少并且允许程序员快速地建立具有不同配置的传感器、执行器和功能的中间件实现的原型。

交互式虚拟全息显示机器

在本实施方式中,将在管理运动受控型虚拟全息显示机器的背景下描述中间件实现;然而应当理解,ms中间件平台可以用于针对其他类型的人机交互式机器创建中间件实现,例如具有运动和语音传感器以及能够在多个墙壁上显示图像并且能够控制游戏室的诸如照明等其他功能的多个投影仪的交互式游戏室。

参照图1,示出了虚拟全息显示机器1,该虚拟全息显示机器1包括:运动捕捉相机2、麦克风3、显示投影仪4、具有4个显示表面的金字塔形显示结构6以及与相机2、麦克风3和投影仪4通信的控制器8(参见图5)。可以使用诸如microsoftkinecttm和leapmotioncontrollertm等市售运动捕捉设备作为相机2或相机/麦克风组合。显示投影仪4可以是任何光投影设备例如基于灯的投影仪或具有发光显示屏幕5的任何电子设备例如平板式计算机或智能电话。控制器8可以是通用计算机或独立的控制器例如可编程逻辑控制器(plc)。

投影仪4安装在机器1中,使得投影仪4朝下面向显示结构6的顶端。显示结构6包括正面、相对的背面以及在正面和背面之间延伸的两个相对的侧面(即左侧面和右侧面)。每个面在其顶端处比在其底端处更细且更窄。在图1所示的实施方式中,显示结构6的左侧面和右侧面为三角形,而正面和背面是梯形,并且显示结构6具有矩形的底部。显示结构6的面包括透明或半透明材料例如玻璃、聚碳酸酯玻璃、plexiglastm或其他类型的透明或半透明热塑性塑料。可以在显示结构6的面上敷设半透明膜。可以针对能够使白光的部分通道通过,而使白光的一些被吸收的能力来选择面的半透明膜或半透明材料,这可以增强在显示结构6上显示的图像的亮度。在一些实施方式中,投影到显示结构6上的白光中高达95%的白光可以被半透明膜或半透明材料吸收。在一个示例性实施方式中,显示结构6包括折射率在28%至35%之间并且反射率在65%至72%之间的涂覆聚碳酸酯玻璃。

参照图5,控制器8包括处理器和非暂态存储器;存储器上编码有中间件实现程序代码,该中间件实现程序代码能够由处理器执行以经由一个或更多个客户端模块向用户提供服务和实用程序来管理机器1的传感器和执行器。尽管图5示出了耦接至相机2和麦克风3以及投影仪4的控制器8,但控制器8还可以耦接至未示出的其他传感器和执行器,例如扫描仪、触摸板、灯开关和扬声器。

控制器8还包括显示程序代码,该显示程序代码能够由处理器执行以使存储在存储器中的对象9的数字化模型被投影至金字塔形显示结构6上。图2至图4示出了在执行显示程序时由处理器执行的方法的步骤。该方法的步骤一涉及对对象9的3d数字化模型的不同2d视图进行渲染以产生多视角合成图像10,该多视角合成图像10被投影仪104投影到金字塔形显示结构106(“显示金字塔”)的表面上。更具体地,使用3d建模软件例如unity游戏引擎来渲染对象的3d模型,并且将由unity游戏引擎提供的虚拟相机20定位在3d模型的前方、后方、左方和右方以捕捉3d模型的正视图、后视图、左侧视图和右侧视图。在替选实施方式中,可以使用附加的虚拟相机20根据显示结构中设置的投影有多视角合成图像10的面的数量来提供3d模型的附加视图。3d渲染算法用于产生如图4所示的这四个视图(“多视角图像”)的单个2d合成图像10。该多视角图像10包括对象9的正视图10a、后视图10b、左侧视图10c和相对的右侧视图10d。正视图10a和后视图10b垂直于左侧视图10c和右侧视图10d,使得多视角合成图像10的视图10a、10b、10c和10d形成如图4所示的直角十字。处理器实时地对多视角图像10进行加载和渲染。

在接下来的步骤中,将多视角图像10正确地定向并且投影到显示结构6上以产生对象9的虚拟3d全息图像。当投影仪具有显示屏幕(例如是平板或智能电话)时,显示屏幕与显示结构6对准,使得正视图10a被投影到显示结构6的正面上、后视图10b被投影到显示结构6的背面上、左侧视图10c被投影到显示结构6的左侧面上以及右侧视图10d被投影到显示结构6的右侧面上。可以从显示金字塔6的所有侧看到对象9的所得到的虚拟3d全息图像;因此从显示结构6的前方观看虚拟3d全息图像的人会看到对象的正面,并且随着观看者顺时针地绕显示结构106行走,观看者会分别看到对象的右侧、背面、左侧,然后是正面。利用被称为佩伯尔幻像效应(pepper'sghosteffect)的现象,对象的这些多个视图在被投影在半透明的显示金字塔表面时看似“漂浮”在空间中,从而给观看者一种看到显示结构6内的对象的3d全息图的印象。可以使用unity游戏引擎或其他3d建模软件来制作对象9的3d模型的动画,从而使虚拟相机捕捉运动对象的2d视图,并且使显示结构6上的投影图像也运动起来,使得对象的虚拟3d全息图像也看似运动起来。

ms中间件平台

如上所述,中间件实现程序代码是使用人机接口传感器中间件平台来创建的,该人机接口传感器中间件平台提供用于报告和询问由传感器和执行器使用的协议的机制以及用于创建服务的标准架构。更具体地,使用对由运动传感器提供的数据进行管理的中间件平台(“运动传感器中间件平台”或“ms中间件平台”)来创建用于控制虚拟全息机器1的中间件实现程序。尽管该描述是在ms中间件平台的背景下进行的,但是应当理解,中间件平台还可以被配置成对来自除运动传感器之外的传感器的输入数据进行管理。

参照图6,ms中间件平台包括一组程序模块,该组程序模块使用基于开源yarp平台的网络协议以及能够链接至应用程序以提供对ms中间件平台所提供的特征的访问的库来进行互连。程序模块包括三个主要类别,即:与yarp网络105进行通信的服务100、客户端102和实用程序104。

客户端102使用形式化的协议来连接至服务100。

实用程序104管理或监测特定中间件实现程序的聚合状态。实用程序104包括信道管理器实用程序,该信道管理器实用程序提供中间件实现程序内的连接状态、服务和客户端的图形用户接口(gui)视图。

服务100是限定的逻辑操作的集合,其可以是限定输入/输出或适配器性质的单个功能或若干功能的组合。服务可以是c++中的包含成员和函数二者的类别。每个服务都可以支持多个客户端连接,并且客户端功能可以嵌入在命令行工具、基于gui的应用程序或无头后台进程中。每个服务就像分别包含用于输入机制或输出机制的逻辑操作的瓶子。包含输入机制的服务被称为输入服务,其中,输入服务针对特定传感器而被限定;已知的输入服务是kinectinputservice,其包含用于将从kinecttm传感器接收到的数据输入输送到中间件实现程序中的逻辑操作。类似地,输出服务包含输出机制,其中,输出服务针对特定执行器而被限定;已知的输出服务的示例是unityoutputservice,其包含用于通过中间件实现程序将传输至传感器的数据输送到unitygameenginetm的逻辑操作。

服务100包括基本服务100(a)、简单服务100(b)和输入/输出服务100(c)。基本服务100(a)是核心中间件服务,其本质上是形成相关服务100的所有输入与输出之间的连接的主干。输入/输出服务100(c)提供用于将输入设备(也称为“传感器”)和输出设备(也称为“执行器”)打包成资源的机制并且包括具有特定协议的一个或更多个附加yarp网络连接。简单服务100(b)是具有简单的一对一连接——即具有一个传入连接或一个传出连接——的输入和输出服务100(c)。简单服务100(b)的示例是注册表服务,注册表服务是在yarp上运行并保存与ms中间件实现内的客户端可访问的所有活动服务有关的信息的服务器。注册表服务100(b)将该信息存储在内部注册表服务数据库110上,该内部注册表服务数据库110存储来自输入服务100(b)的所有数据并使得用户能够分析该数据。如上所述,简单服务例如注册表服务100(b)包括不具有特殊性质的一个或更多个附加yarp网络连接。

ms中间件平台还包括适配器106,该适配器106提供针对非运动传感器中间件应用程序的机制,以经由yarp网络连接105请求ms中间件实现的服务。基本客户端102仅具有客户端/服务yarp网络连接,而适配器106具有一个或更多个附加yarp网络连接105。

实用程序

现在参照图7,实用程序104是提供对在中间件安装中正在运行的进程的访问的程序模块。实用程序中的一个实用程序是信道管理器104,该信道管理器104是基于gui的工具,其向程序员提供中间件实现内的连接状态的视图以及用于管理非m+myarp网络连接的手段。信道管理器104应用程序包括分别与yarp网络105通信的端口扫描器107和服务扫描器108、与端口扫描器107和服务扫描器108通信的视图渲染器109、以及与视图渲染器109和yarp网络105通信的连接编辑器110。端口扫描器107是从中间件服务器扫描活动的连接/服务、针对每个连接获取端口以及向视图渲染器110返回报告的程序。服务扫描器108是包含数据应该被传送至的地址以及端口信息的类别。连接编辑器110是可以应用一组yarp函数例如连接和断开连接两个服务的应用程序。视图渲染器109是渲染所有中间件连接的具有其地址名称和端口信息的视图的程序。

在图8中示出了信道管理器实用程序的渲染视图的示例。在操作时,信道管理器实用程序104具有图形用户接口(gui),该图形用户接口显示yarp网络105内的连接的单窗口视图并且具有被设计成使对中间件实现的管理更加容易的特征。在一个实施方式中,在gui中将简单的yarp网络端口111示出为具有如下的矩形:由端口的ip地址和端口号组成的标题和作为矩形的主体的端口的yarp名称,该yarp名称使用代表仅输入端口的“in”、代表仅输出端口的“out”以及代表通用端口的“i/o”作为前缀。将服务示出为具有如下的矩形:由服务提供的名称组成的标题、作为矩形主体中的第一行的主要yarp网络连接,该主要yarp网络连接使用“s”作为前缀以表示其是服务连接。将次要yarp网络连接呈现为位于主要连接下方的行,该次要yarp网络连接使用代表仅输入端口的“in”和代表仅输出端口的“out”作为前缀。输入/输出服务不具有与其他服务不同的视觉外观,然而允许的连接受到更多限制。ms中间件的服务和客户端二者都可以具有多个次要yarp网络端口。

将简单客户端102示出为具有如下的矩形:由简单客户端102连接至服务的ip地址和端口号组成的标题、包含用“c”作为前缀的yarp网络连接的行。除了适配器106在客户端到服务的yarp网络连接上方具有针对次要yarp网络连接的附加行以外,适配器106类似于简单客户端102,该次要yarp网络连接具有代表仅输入连接的“in”以及代表仅输出连接的“out”的前缀。

将端口之间的连接112示出为具有不同粗度和颜色的线。例如,一组线可以表示不具有明确行为的yarp网络连接。另一组线可以表示输入/输出服务之间的连接;这些连接具有特定的行为。再一组线表示客户端与服务之间的连接,这些线不能由该工具修改。可以创建的连接包括tcp/ip连接或udp连接。信道管理器实用程序使得用户能够创建两个端口之间的连接或移除两个端口之间的连接。

由ms中间件平台提供的其他实用程序包括以下:

·重新绘制:在存在显示器“失灵”的情况下,强制重新重绘;

·反转背景:使背景反转;

·白色背景:在黑色/白色背景与渐变之间切换;

·显示服务信息:显示与所选服务有关的信息

·显示详细的服务信息:显示与所选服务有关的信息,其包括针对服务的(非默认)请求

·显示服务度量:显示与所选服务的每个端口上的活动有关的信息——发送到端口和从端口发送的消息的数量和字节数,该端口包括在服务的操作期间由服务使用的匿名端口

·显示信道信息:显示与所选信道有关的信息

·显示详细的信道信息:以制表符分隔的形式生成输出

·显示信道度量:显示与所选信道上的活动有关的信息——发送到信道和从信道发送的消息的数量和字节数

msclientlist:该实用程序显示用于具有持续状态的yarp网络连接的服务的客户端。具有持续状态的连接的服务保留来自每个请求的信息以用于之后的请求。具有持续状态的示例服务是msrunningsumservice,其中,保留的信息是所连接的客户端的运行总和。该程序针对服务的yarp网络端口采用可选自变数;如果未提供自变数,则针对具有持续状态的连接检查所有服务。输出指定具有持续状态的服务的yarp网络端口和连接至其的yarp网络端口。

msfindservices:该实用程序显示属于与命令行上或以交互方式提供的标准匹配的服务的主要信道。

msportlister:该实用程序显示活动的yarp端口和ms实体。对于每个yarp端口而言,示出了其在中间件安装中的作用以及任何传入和传出的yarp网络连接。识别每个活动服务的主要端口以及每个适配器的主要端口。输出指定所有活动的yarp网络端口及其输入和输出yarp网络端口;常规yarp网络端口被标记为“标准”,而ms适配器端口被标记为“适配器”,ms客户端端口被标记为“客户端”,并且ms服务端口被标记为“服务”或“服务注册表”。“标准”端口报告“标准”端口的ip地址和网络端口,而“适配器”端口报告“适配器”端口的客户端应用的ms端口,如果“客户端”端口附接有“适配器”端口,则“客户端”端口报告“客户端”端口的附接“适配器”端口,并且“服务”端口报告“服务”端口提供的ms服务的名称。连接指示连接相对于正被列出的yarp网络端口和正被连接到的yarp网络端口的方向以及连接的模式例如tcp或udp。

msrequestinfo:该实用程序显示与针对中间件实现中的一个或更多个活动服务的请求有关的信息。该实用程序列出了每个请求以及处理该请求和与该请求有关的细节的服务的yarp网络端口。程序针对服务的yarp网络端口和获取信息的请求采用两个可选自变数;如果未指定请求,则示出针对给定服务的所有请求,并且如果未指定端口,则显示针对所有服务的所有请求。输出包括:服务所使用的yarp网络端口、请求的名称、请求的版本号、包括其预期的输入和预期的输出的请求的描述以及请求的替选名称和请求的输入和输出的格式。

msservicelister:该实用程序显示中间件实现中的活动服务。该实用程序列出了每个服务和服务描述和请求以及到服务的可执行文件的路径和服务提供的yarp网络端口。输出包括:服务的yarp网络端口、服务的“规范”名称、服务的种类(“滤波器”、“输入”、“输出”、“正常”或“注册表”)、服务的简短描述、服务所支持的请求的简短描述、到服务的可执行文件的路径以及附接到服务的任何次要输入或输出yarp网络端口。

msservicemetrics:该实用程序显示对中间件实现中的一个或更多个活动服务的信道的测量。该实用程序列出了服务的每个yarp网络端口以及与信道上的活动有关的细节。该程序针对服务的yarp网络端口采用可选自变数;如果未指定端口,则显示所有服务。输出包括:已测量的yarp网络端口、测量的日期和时间、传输的输入和输出字节数以及输入和输出传输的数量。对服务的主要yarp网络端口和次要端口以及标记为“辅助”的条目进行报告,标记为“辅助”的条目表示服务已使用的任何暂时的yarp网络端口。

msversion:该实用程序显示ms、yarp和ace的版本号、ms和yarp所使用的低级网络层。

msrequestcounterservice:该应用程序是后台服务,其用于确定发送简单请求、处理简单请求并返回响应的平均时间。该应用程序响应于配套应用程序msrequestcounterclinet所发送的复位计数(resetcounter)请求和统计(stats)请求来管理该应用程序收集的统计数据。

msrequestcounterclient:该应用程序是命令行工具,其用于测量处理简单请求的平均时间。该应用程序使用发送至msrequestcounterservice应用程序的复位计数请求和统计请求来收集统计数据并且使用“虚拟”请求来提供正被测量的请求。

服务及其协议

中间件平台提供多个服务100应用程序及其配套客户端应用程序102,服务100应用程序及其配套客户端应用程序102经由yarp网络105上的ms请求和响应进行通信。一个特殊的服务即注册表服务100(b)是对与所有其他活动服务有关的信息进行管理的应用程序;所有服务都用注册表服务100(b)注册自身,使得客户端102应用程序和实用程序104可以获得与服务100有关的信息。注册表服务100(b)是后台应用程序,其用于管理其他服务100及其连接。该注册表服务100(b)的主要目的是用作与中间件实现中的活动服务有关的信息的储存库。注册表服务100(b)存储与内部数据库110有关的信息并且对注册表服务请求组中的请求进行响应。在图9中示出了数据库结构,并且可以使用下面的sql语句来构建内部数据库110:

可以将其他服务广泛地表征为输入/输出服务100(c)或基本服务100(a)。还可以将输入/输出服务100(c)划分成输入服务、输出服务和滤波器服务。输入服务充当外部数据源与中间件实现基本结构之间的中介。输出服务充当中间件实现与执行器之间的中介。滤波器服务充当数据格式之间的翻译器。

服务100接收来自客户端102的请求。当客户端102对服务100发送请求时,客户端102可以可选地请求来自服务100的响应。如果响应未被请求,则对该请求进行处理,但不发送响应。可以将请求分类成以下四种类别:

·基本请求:支持基础中间件实现服务机制的请求。基本请求是每个服务的一部分并且在被称为基本服务的所有服务的基本类别中自动得到支持。基本请求构成了注册表服务用来识别每个活动服务的基础机制。

·注册表服务请求:特定于注册表服务100(b)的请求。该组中的请求由注册表服务应用程序100(b)专门用于管理其内部数据库并且对来自客户端应用程序102的信息请求进行响应。

·输入/输出请求:特定于输入/输出服务100(c)的请求。输入/输出服务100(c)具有次要yarp端口,该次要yarp端口提供对次要yarp端口响应于输入/输出请求而处理的信息的访问。输入服务具有一个或更多个次要输出yarp网络端口,输出服务具有一个或更多个次要输入yarp网络端口,并且滤波器服务具有次要输入yarp网络端口和次要输出yarp网络端口两者。输入服务还可以具有次要输出yarp网络端口并且输出服务还可以具有次要输入yarp网络端口。所有服务和客户端使用通过m+mc++核心分类限定的请求/响应协议。

用于处理运动传感器输入的程序模块

图10示出了由ms中间件平台的程序模块执行的步骤的流程图,该ms中间件平台对从运动传感器例如运动捕捉相机2获取的原始数据进行处理并且将该数据打包成用户友好形式,从而程序员可以使用该用户友好形式来开发中间件实现以控制交互式机器例如虚拟全息机器1。程序模块形成中间件实现,并且程序模块本质上是从ms中间件平台的输入/输出服务100得到的应用程序。实用程序104和客户端服务102可以与程序模块一起使用并且可以提供对在中间件安装中正在运行的进程的访问。例如,信道管理器104实用程序提供中间件实现的程序模块内的连接状态的视图。

将在相机2和麦克风3是microsoftkinecttm传感器(未示出)的一部分的示例的背景下描述由程序模块所执行的步骤,该microsoftkinecttm传感器捕捉人的身体运动和人的语音并将人的身体运动转换成数字化骨骼数据(视频输入数据)并且将人的语音转换成数字化音频数据(音频输入数据)。

首先,由输入模块从传感器的驱动程序采集原始数据(步骤120);例如,可以使用kinectforwindowstm软件开发工具包2.0(sdk)向中间件平台提供kinecttm驱动程序和api,以采集处理深度、身体视频输入数据(通常称为全身骨骼)和数字化音频数据的形式的原始数据。在该示例中,在输入模块中使用输入服务100kintectinputserice。

然后将采集的原始数据发送至中间件模块并且进行提取(步骤122);提取可以包括:仅选择数据中的与一个或更多个指定的预期用途有关的部分(本文中称为“特征提取数据”)。例如,可以通过使用yarp平台所提供的地址和端口信息的udp/tcp网络来传输从kinecttm设备获取的原始骨骼数据和音频数据,然后对原始骨骼数据和音频数据进行提取以产生不同的特征提取数据例如速度数据和加速度数据(例如通过距离数据对时间的微分,以及速度数据对时间的微分)。中间件实现可以使用这些速度数据和加速度数据来控制虚拟全息机器1的某些操作例如改变显示对象的视图。

然后将特征提取数据通过一个或更多个缓冲器(步骤124)。缓冲器充当暂时总线,用于将提取的原始数据传输至滤波器模块。当存在多个输入设备(传感器)时,可以使用并行缓冲器,其中,一个缓冲器专用于一个输入设备(传感器)。可以在该步骤中执行延迟和校正检查,包括:应用零点检查和平滑算法以确保经由ms中间件实现传输有意义的数据。零点检查本质上对不期望的数据的零交叉进行检查。如果注意到该不期望的行为,则将零交叉周围的区域从通信协议中删除。

接下来,滤波器模块对特征提取数据应用信号处理(步骤126)以滤波掉不想要的数据。滤波器模块包括根据用户限定的参数可以离散地和/或连续地应用的信号处理算法。使用的信号处理算法的类型将部分地取决于所使用的传感器的类型以及由这些传感器获取的原始数据的性质。可以应用使用视频滤波器的已知视频处理算法来提高由相机捕捉的视频输入数据的质量;这样的信号处理在本领域中是已知的,因此此处未详细讨论。例如,可以使用诸如卡尔曼滤波等平滑算法来从特征提取数据中去除噪声和抖动,使得从任何给定的运动传感器中获取更有意义的数据。例如,当从右手的运动中获取x轴的速度时,通常存在大量的噪声,并且可以实时地应用作为轻量级算法的卡尔曼滤波以产生更有意义的数据。

用户可以选择性地限定要执行什么信号处理操作。例如,kinecttm可以检测拍手的声音并将拍手声音表示为整数值,将静音表示为零;当用户希望降低检测时的延时(即减少延迟)时,可以将滤波器模块配置成去除整数值之间的零。

当特征提取数据被滤波时,然后将经滤波的数据传递至重建模块,其中,经滤波的数据被转换成呈更高级的机器可读形式的数字阵列或数字序列(步骤128)。例如,提供根据3d传感器协议将骨骼数据结构化成分层形式的应变器服务,使得可以系统地查询数据,并且中间件实现在应变器端可以容易地获取相关信息以执行一个或更多个操作。应变器服务以使用数据的操作所需的方式解码传感器数据;例如,如果中间件实现编程有使得用户能够根据用户右手的水平(x)位置来操纵数字化对象的位置的操作,则应变器服务被编程成对与右手的x位置有关的骨骼数据进行解码。此外,还可以实时地进行调试,以便了解正进行传送的特定数据的地址。

然后,将经转换的数据发送至通信模块,在该通信模块中,对数据进行检验并解析成数据包(步骤130)。经检验的数据本质上是经滤波的数据,其中,原始输入数据中的噪声已被滤波(例如使用卡尔曼低通滤波器),以在应用程序的任何给定帧中产生具有较小噪声的更平滑的数据。可以在ms中间件平台中预定义或由用户定义符合作为经检验数据的数据。将经检验的数据存储在yarp瓶中并且通过ms中间件平台被发送。yarp瓶本质上是存储有需要通过ms中间件平台传输的所有数据的容器。这是ms中间件平台提供标准运动传感器协议以及实时配置协议的能力的地方。然后,将数据包发送至所选的输出模块以供中间件实现进行访问,从而执行相关联的更高级的功能。例如,经由udp/tcp网络将骨骼的右手的x位置作为数据包发送,中间件实现可以使用该数据包来改变数字化对象的位置。

尽管在本说明书中已经描述了特定的实施方式,但是应当理解,其他实施方式也是可能的,并且本发明不限于所描述的实施方式,而是由权利要求书来限定。例如,除对交互式虚拟全息显示机器进行控制之外,可以使用中间件平台来创建用于开发中间件实现的程序模块。例如,可以针对全息电话会议系统提供中间件实现,该中间件实现可以将使用第一位置处的3d视频相机捕捉的第一用户的实时深度信息(3d数据)流送至第二位置处的交互式虚拟全息显示机器,然后该交互式虚拟全息显示机器可以向第二位置处的第二用户显示第一用户。

在另一示例中,提供了一种中间件实现,使得交互式虚拟全息显示机器能够被脑电波感测设备例如eeg传感器控制。eeg传感器附接至用户的头部,并且实时地读取用户的脑电波,然后经由中间件实现将用户的脑电波传送至交互式虚拟全息显示机器。

在另一示例中,提供了一种中间件实现,使得交互式虚拟全息显示机器能够被附接至平板式计算机例如ipadtm的3d图像传感器控制,使得可以通过交互式虚拟全息显示机器来显示由3d图像传感器捕捉的对象。当捕捉了3d图像数据时,对3d数字模型进行渲染,然后将3d数字模型导出到交互式虚拟全息显示机器中,并且可以使用平板式计算机从不同的角度操纵和观看该模型。中间件实现还可以被配置成将3d模型从交互式虚拟全息显示机器传输至要进行打印的3d打印机。

在另一示例中,提供了一种中间件实现,使得交互式虚拟全息显示机器能够被移动通信设备例如无线连接的智能电话控制。当智能电话与交互式虚拟全息显示机器配对时,可以将信息传输至交互式虚拟全息显示机器,以便实时地操纵在交互式虚拟全息显示机器中显示的内容。

在另一示例中,提供了一种中间件实现,其中,输出设备是将图像投影到墙壁上的一系列投影仪。输入设备可以是智能电话例如苹果手机(iphone)。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1