CN102571315B - 一种在设备的范围内同步传感器数据的方法和*** - Google Patents
一种在设备的范围内同步传感器数据的方法和*** Download PDFInfo
- Publication number
- CN102571315B CN102571315B CN201110443126.2A CN201110443126A CN102571315B CN 102571315 B CN102571315 B CN 102571315B CN 201110443126 A CN201110443126 A CN 201110443126A CN 102571315 B CN102571315 B CN 102571315B
- Authority
- CN
- China
- Prior art keywords
- signal
- equipment
- data
- sensor signal
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S19/00—Satellite radio beacon positioning systems; Determining position, velocity or attitude using signals transmitted by such systems
- G01S19/01—Satellite radio beacon positioning systems transmitting time-stamped messages, e.g. GPS [Global Positioning System], GLONASS [Global Orbiting Navigation Satellite System] or GALILEO
- G01S19/03—Cooperating elements; Interaction or communication between different cooperating elements or between cooperating elements and receivers
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01D—MEASURING NOT SPECIALLY ADAPTED FOR A SPECIFIC VARIABLE; ARRANGEMENTS FOR MEASURING TWO OR MORE VARIABLES NOT COVERED IN A SINGLE OTHER SUBCLASS; TARIFF METERING APPARATUS; MEASURING OR TESTING NOT OTHERWISE PROVIDED FOR
- G01D21/00—Measuring or testing not otherwise provided for
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S5/00—Position-fixing by co-ordinating two or more direction or position line determinations; Position-fixing by co-ordinating two or more distance determinations
- G01S5/0009—Transmission of position information to remote stations
- G01S5/0018—Transmission from mobile station to base station
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/011—Arrangements for interaction with the human body, e.g. for user immersion in virtual reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/017—Gesture based interaction, e.g. based on a set of recognized hand gestures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/0304—Detection arrangements using opto-electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/03—Arrangements for converting the position or the displacement of a member into a coded form
- G06F3/033—Pointing devices displaced or positioned by the user, e.g. mice, trackballs, pens or joysticks; Accessories therefor
- G06F3/038—Control and interface arrangements therefor, e.g. drivers or device-embedded control circuitry
-
- A—HUMAN NECESSITIES
- A63—SPORTS; GAMES; AMUSEMENTS
- A63F—CARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
- A63F2300/00—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game
- A63F2300/10—Features of games using an electronically generated display having two or more dimensions, e.g. on a television screen, showing representations related to the game characterized by input arrangements for converting player-generated signals into game device control signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04J—MULTIPLEX COMMUNICATION
- H04J3/00—Time-division multiplex systems
- H04J3/02—Details
- H04J3/06—Synchronising arrangements
- H04J3/0635—Clock or time synchronisation in a network
- H04J3/0638—Clock or time synchronisation among nodes; Internode synchronisation
- H04J3/0658—Clock or time synchronisation among packet nodes
- H04J3/0661—Clock or time synchronisation among packet nodes using timestamps
- H04J3/0667—Bidirectional timestamps, e.g. NTP or PTP for compensation of clock drift and for compensation of propagation delays
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W84/00—Network topologies
- H04W84/18—Self-organising networks, e.g. ad-hoc networks or sensor networks
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer And Data Communications (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明涉及在设备的范围内同步传感器数据。在此提供用于在设备之间同步传感器信号的技术。这些设备中的一个或多个可以收集传感器数据。该设备可以从这些传感器数据中创建传感器信号,其中该设备可以按照发布者/订阅者模型使所述传感器信号对其他设备可用。所述其他设备可以订阅它们选择的传感器信号。设备可以是传感器信号的提供者或消费者。设备可以在操作***与软件应用之间具有代码层,其中该代码层处理所述数据以用于所述应用。该处理可以尤其是包括诸如下列动作:将传感器信号中的数据同步到本地时间时钟;为传感器信号中的数据预测未来值;以及以应用所请求的频率提供传感器信号的数据采样。
Description
技术领域
本发明涉及在设备的范围内同步传感器数据。
背景技术
可以由电子设备采集多种多样的传感器数据。不同传感器的示例包括但不限于全球定位卫星(GPS)传感器、相机(RGB和深度)、遥控器、游戏控制以及用户输入设备(例如键盘、鼠标等等)。
尝试在不同电子设备之间共享传感器数据提出了挑战。一个挑战是,传感器数据可能具有多种多样的数据格式。因此,从另一设备接收传感器数据的设备可能不知道如何利用这些传感器数据来工作。例如,运行在设备上的软件应用可能不能处理来自另一设备的传感器数据。在多种多样可能的数据格式的条件下,对于软件开发者而言不切实际的是,编写和测试其应用,使得该应用与不同数据格式兼容。
发明内容
在此提供了用于在设备间共享传感器数据的技术。可以使用发布者/订阅者模型来允许设备获悉从其他设备可用的传感器信号并且订阅感兴趣的传感器信号。这些传感器信号可以被归类以允许设备容易地确定什么信号可能是感兴趣的以及知道如何处理这些传感器信号。该订阅设备可以在操作***与软件应用之间具有软件层以处理对传感器数据进行同步以供这些应用使用的这些细节。因此,应用的开发者不需要专注于处理不同类型的传感器数据以及将传感器数据同步到本地时钟的这些细节。
一个实施例包括设备订阅和接收传感器信号的方法。第一设备可以确定:哪些传感器信号通过一个或多个网络可用。这些传感器信号中的每个都可以从 具有从中导出该传感器信号的传感器的另一设备可用。第一设备订阅传感器信号之一。第一设备通过所述一个或多个网络订阅所述传感器信号。所订阅的传感器信号包括定时信息以及基于传感器数据的数据。所订阅的传感器信号中的数据在第一设备处被处理以使其对运行在第一设备上的应用兼容。该处理由该应用以外的软件代码来执行。
一个实施例包括一种用于发布和提供传感器信号的方法。第一设备可以发布基于可用传感器数据的一个或多个传感器信号。然后,第二设备请求并订阅所述传感器信号之一。第一设备采集传感器数据并且基于所述传感器数据创建第一信号。第一信号包括与所采集的传感器数据相关联的定时信息。第一传感器信号通过一个或多个网络被提供给第二设备。
一个实施例包括一种可以订阅传感器信号的装置,所述传感器信号可以被处理和提供给运行在该装置上的应用。该装置可以包括处理器和耦合到该处理器的计算机可读存储介质。该计算机可读存储介质其上存储有指令,所述指令在该处理器上执行时致使该处理器执行以下动作。该处理器确定:哪些传感器信号通过一个或多个网络可用。所述传感器信号基于传感器数据。所述传感器信号包括第一类型的针对连续时间信号的信号、以及第二类型的针对状态信号的信号。该处理器订阅所述传感器信号中的第一传感器信号。该处理器建立与发布第一传感器信号的设备的公共时间参考。该处理器通过所述一个或多个网络接收第一传感器信号。第一传感器信包括定时信息以及基于传感器数据的信息。该处理器使用公共时间参考将第一传感器信号中的数据同步到本地时钟。该处理器将经同步的数据提供给运行在该装置上的应用。
提供本发明内容以便以简化形式介绍将在以下的具体实施方式中进一步描述的一些概念。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。
附图说明
图1A是可以实施各实施例的示例性***。
图1B是可以实施各实施例的示例性***。
图2A描绘了可以在骨架信号的一个实施例中描述的用户的示例性模型。
图2B描绘了传感器信号类型的一个实施例的示例性分层结构。
图3A是可以交换传感器数据的两个设备中的不同代码层的一个实施例的图。
图3B是若干不同设备上的组件的图,其中该图示出图3A的进一步细节。
图3C是传感器信号处理代码的一个实施例的框图。
图4A、4B和4C描绘了图3C的数据队列的实施例的进一步细节。
图5A是描绘数据结构的一个实施例的图,该数据结构列出了设备发布的传感器信号以及每个传感器信号的订阅者。
图5B是描绘数据结构的一个实施例的图,该数据结构列出了设备所订阅的传感器信号以及发布设备。
图5C是描绘存储信号目录和订阅者列表的数据结构的一个实施例的图。
图6A是设备发布传感器信号可用性以及向订阅设备提供传感器信号的过程的一个实施例的流程图。
图6B是设备确定其期望订阅什么传感器信号、接收以及处理这些传感器信号的过程的一个实施例的流程图。
图7A是订阅设备向发布设备订阅传感器信号的过程的一个实施例的流程图。
图7B是设备在其错过一个或多个广播的情况下获悉什么信号可用的过程的一个实施例的流程图。
图7C是网络服务器设置可用传感器信号的目录以及构建订阅者列表的过程的一个实施例的流程图。
图8A是生成连续信号的过程的一个实施例的流程图。
图8B是生成状态信号的过程的一个实施例的流程图。
图8C是生成二进制信号的过程的一个实施例的流程图。
图9A是处理连续信号的过程的一个实施例的流程图。
图9B是处理状态信号的过程的一个实施例的流程图。
图9C是处理二进制信号的过程的一个实施例的流程图。
图10A是预测连续信号的值的过程的一个实施例的流程图。
图10B是生成连续信号的附加采样值的过程的一个实施例的流程图。
图10C描绘了校正连续信号的上一预测的示例。
图10D是用于逐渐校正连续信号的预测的过程的一个实施例的流程图。
图10E是时间同步两个传感器信号的过程的一个实施例的流程图。
图11A和11B是向应用提供已经被处理和时间同步的数据的实施例。
图12A是订阅设备适度地离开网络的过程的一个实施例的流程图。
图12B是发布设备适度地离开网络的过程的一个实施例的流程图。
图13描绘浏览器的一个实施例。
图14描绘可用作发布或订阅设备的运动捕捉***的示例性实施例。
图15描绘了图1的运动捕捉***的示例性框图。
图16描绘了可以在图14的运动捕捉***中使用的计算环境的示例框图。
图17描绘可用于发布或订阅设备的计算环境的另一示例框图。
具体实施方式
在此提供可用于在设备之间同步传感器信号的技术。这些设备中的一个或多个可以采集传感器数据。发布设备可以从这些传感器数据中创建传感器信号,其中该发布设备可以按照发布者/订阅者模型使所述传感器信号对其他设备可用。所述其他设备可以订阅它们选择的任何传感器信号。所述设备中的任何设备都可以是所述传感器信号的提供者(例如发布者)或者消费者(例如订阅者)。因此,例如各个传感器信号可以容易地在设备间共享。设备可以在操作***与软件应用之间具有代码层,其中该代码层处理所述数据以用于所述应用。该处理可以尤其是包括诸如下列动作:将传感器信号中的数据同步到本地时间时钟;预测传感器信号中的数据的未来值;以及以应用所请求的频率提供传感器信号的数据采样。
例如,一个设备可以从一个或多个相机采集传感器数据。该设备可以从该传感器数据中形成“骨架信号”。例如,该骨架信号可以按照骨架模型来描述用户的运动。该骨架信号可以包括不同时刻的数据采样,并且在此处可被称为一种类型的“连续信号”。该设备还可采集来遥控器、游戏控制等的用户输入。该设备可基于该输入形成“状态”信号。例如,该状态信号可描述用户采用该控件输入的各种命令。由于这种类型的信号包含状态信息,所以它在此处可被 称为“状态信号”。还可传输其它类型的传感器信号。
图1A是可以实施各实施例的示例性***。若干设备302由一个或多个网络304连接。所述一个或多个网络304可包括局域网(LAN)。在一个实施例中,所述一个或多个网络304包括广域网(WAN)。鉴于本申请的目的,因特网可被视为广域网。因此,两个或更多个设备302可位于相同的位置,例如,某人的家中。然而,至少一个设备302可以是远程的。例如,一个设备302可以处于一个用户的家中,另一个设备302位于另一个用户的家中。在一个实施例中,至少一些设备302充当对等网络。在设备302间可以存在或不存在主/从关系。
该些设备302可以是不同类型的电子设备。例如,设备302可包括,但不限于,蜂窝电话、个人计算机、游戏***或者笔记本计算机。至少一些设备302可以运行不同的操作***。
设备302中的一个或多个采集传感器数据,从所采集的数据中形成一个或多个传感器信号,并且使这些传感器信号对其他设备302可用。被变为可用的传感器信号不一定是原始传感器数据,但是这是一种选择。更确切而言,传感器信号可以基于原始传感器数据(比如在此所述的骨架数据)生成。设备302可以发布被该设备变为可用的传感器信号,使得其他设备302可以订阅该传感器信号。例如,设备302中的每个都可以监听广播以确定什么传感器信号是可用的。设备302还可以向另一设备302发送查询以确定该另一设备使什么传感器信号可用。订阅设备不需要预先知道传感器信号具有何种格式。更确切而言,发布设备可以发送描述传感器信号的格式的元数据。
在此,术语“发布设备”用于指在本讨论的上下文中发布信号的设备。术语“订阅设备”用于指在本讨论的上下文中订阅信号的设备。单个设备可以既发布又订阅。因此,在一个上下文中,设备可以被称为发布设备,而在另一上下文中,该同一设备可以被称为订阅设备。因此,能够理解,该术语是为了便于讨论而使用的。发布传感器信号的设备302可以通过构造订阅设备303的列表来跟踪订阅设备302。订阅传感器信号的设备302可以通过构造所订阅信号307的列表来跟踪这些信号及其发布者。
订阅设备302可以具有用于时间同步到发布设备302的机制。可以使用大 量技术。一种用于时间同步的技术是网络时间协议(NTP)。然而,可以使用另一技术。该时间同步可以帮助接收一个或多个传感器信号的设备302将所述传感器信号与本地时间时钟相关。注意,在接收设备能够接收和处理传感器信号以前可能存在一些延迟。因此,如果传感器信号表示一个设备302处的一些实时事件,则订阅设备302可在一些延迟后获得该传感器信号。当设备302提供传感器信号时,它还可以与该传感器信号一起提供定时信息。在一个实施例中,订阅设备302能够将传感器信号中的数据与其本地时钟同步。注意,如果订阅设备302接收一个以上的传感器信号,则该订阅设备能够将这两个传感器信号彼此同步。
该网络等待时间可能随着时间而变化。因此,仅使用到达的传感器信号可能不会导致正确的行为。而且,仅仅依靠传感器信号中的时间戳是不够的,因为在传感器数据在发布设备处被采集与被订阅设备接收(或使用)之间存在一些显著延迟。
下面的示例将有助于图解说明。设备302之一可以具有采集深度信息的相机传感器、以及采集RGB信息的另一相机传感器。该设备302还可以具有用户输入设备,比如游戏控制。该设备302可以使用相机传感器数据来跟踪与运行在设备302上的应用交互的用户的位置。作为一个示例,设备302可以从所跟踪的数据中构建骨架信号。骨架信号可以包含描述该用户的骨架随时间的相对位置和运动的信息。作为一个示例,骨架信号可以包括多个数据采样,其中每个数据采样都对应于某个时刻。骨架信号是在此称为连续信号的一个例子。设备302可以发布:其使骨架信号可用。因此,其他设备302中的任何设备都可以订阅该骨架信号。骨架信号可以具有明确定义的格式,该格式可以通过元数据被提供给订阅设备。设备302还可以使包含诸如用户输入的命令之类的某个状态信息的传感器信号可用。该“状态信号”可以包括对用户利用游戏控制(以及可能还有其他用户输入设备)所输入的命令的描述。该状态信号还可以包括与每个命令相关联的时间戳以指示该命令是何时被用户输入的。注意,通过例如将信号表征为连续的或者状态,订阅设备能够确定其可以如何处理和使用该传感器信号。
订阅设备302可以向发布设备发送针对这些传感器信号之一的订阅请求。 当订阅设备302接收骨架信号和状态信号时,订阅设备302可以缓冲这些传感器信号。如所述那样,这些传感器信号可以包含定时信息,比如时间戳。订阅设备可以将这些时间戳转换成本地时间。因此,骨架信号中的戳可以与本地设备处的时间相关联。同样,命令可以与本地设备处的时间相关联。
由于可能存在一些延迟,因此所接收的信号中的数据可能比本地设备处的时间落后一些。在一个实施例中,订阅设备预测传感器信号的未来值。例如,设备302可以基于以前的采样来预测骨架数据的未来值。
图1B是用于在设备302之间同步传感器数据的***的一个实施例的图。在图2中,网络服务器310可以充当传感器信号的交换所(clearinghouse)。网络服务器310可以连接到WAN 304b以允许设备302向该服务器通知该设备发布了传感器信号。网络服务器310可以存储传感器信号目录312,该传感器信号目录312列出从各个设备302可用的各个传感器信号。设备302可以向网络服务器310发送订阅请求。因此,网络服务器310可以为每个传感器信号构建订阅者列表314。传感器信号的发布者可以将该传感器信号发送给网络服务器310,使得网络服务器310可以将该传感器信号转发给合适的订阅设备302。
在该实施例中,设备302还可以通过LAN 304a来连接。在这种情况下,一个设备302可以代表另一设备行动来与网络服务器310通信。例如,设备302a和302b可以通过LAN 304a通信。设备302b可以与网络服务器310通信。如果设备302a需要发布其信号,则该设备可以通过在LAN 304a上通信(例如广播)来实现这一点。然后,设备302b可以将该信息转发给网络服务器310。当设备302a提供其传感器信号时,该设备可以将这些传感器信号发送给设备302b,该设备302b可以将这些传感器信号转发给网络服务器310。
在一个实施例中,可用的传感器信号可以被归类成不同类型。该归类可以帮助订阅设备302知道哪些传感器信号是感兴趣的、以及确定如何利用所述传感器信号。一种示例性类型的传感器信号可以被称为“连续信号”。连续信号可以是包括多个数据采样的信号。连续信号中的数据采样可以具有浮点数据,但是这不是必需的。用于采集连续信号所基于的数据的示例性传感器325包括、但不限于深度相机、RGB相机、或者全球定位卫星(GPS)传感器。注意,直接来自传感器的数据可能不被归类为连续信号。在一些实施例中,连续信号的 订阅者可以预测该数据的未来值。这可以帮助订阅设备补偿接收传感器信号时的延迟。
图2A描绘了可以在骨架信号的一个实施例中描述的用户的示例性模型400。该模型400包括多个参考点,比如头的顶部402、头的底部或下巴413、右肩404、右肘406、右手腕408和右手410,该右手例如由指尖区域来表示。另一方案是通过手的中心点来表示手位置。该模型400还包括左肩414、左肘416、左腕418、以及由例如指尖区域表示的左手420。还描绘了腰部区域422,以及右臀424、右膝426、右脚428、左臀430、左膝432和左脚434。肩线412是肩404和414之间的线,通常是水平的。
用户的大小可以基于参考点来确定。例如,可以在下巴413和腰422之间定义躯干高度L1,并且手臂长度L2可以被定义为左肩414和左肘416之间的距离与左肘416和左手420之间的距离之和。也可使用404和414之间的肩线的长度。
在一个实施例中,骨架信号中的每个数据采样都定义每个参考点的坐标。该坐标可以是(x,y,z)或者某个其他坐标系。骨架信号可以具有每秒一定数目的数据采样。例如,骨架信号可以具有每秒30个数据采样。因此,骨架信号本身在具有所有时刻的值的意义上不是连续的(因为可能在特定参考点是由等式来描述时情况如此)。因此,能够理解,术语“连续信号”不要求传感器信号本身具有所有时刻的值。可能的情况是,底层主体(例如肘的位置)不具有所有时刻的值,但是这不是必需的。在一些实施例中,订阅设备302能够预测连续信号的未来值(例如外插)。在一些实施例中,订阅设备302能够确定除了与连续信号的数据采样相对应的时间以外的时刻的值(例如内插)。
另一示例性类型的传感器信号是“状态信号”。状态信号可以从诸如遥控器或鼠标之类的用户输入设备中导出。然而,在一些情况下,状态信号可以从诸如相机或话筒之类的传感器中导出。例如,***可以使用手信号识别或语音识别来确定命令。订阅设备302不一定能够预测状态信号的未来值。
另一示例性类型的传感器信号是“二进制信号”。作为一个示例,这可以用于以二进制格式来传送传感器数据。例如,可以传送来自相机的RGB数据。
图2B描绘了传感器信号类型的一个实施例的示例性分层结构450。分层 结构450包括状态信号452、连续信号454、以及二进制信号456。在该等级处可以存在其他类型的信号。示例性的连续信号是“骨架信号”458和“GPS信号”460。骨架信号458可以被进一步分解。在该示例中,存在仅仅包含头462的数据的骨架信号(其可以用于确定注视方向)、以及仅仅包含手464的数据的另一骨架信号(其可以用于手信号)。注意,连续信号454中的一些可以基于从诸如深度相机之类的传感器325所采集的数据而形成。然而,直接来自深度相机的数据可能被归类为二进制信号456。如图2A中所述,二进制信号456可以被划分成经压缩的二进制信号456a和未经压缩的二进制信号456b。在该分层结构中可能存在许多其他类型的传感器信号,但是未描绘这些信号以便不模糊该图。在一些实施例中,传感器信号是公共命名空间的一部分,使得不同设备302可以容易地利用传感器信号操作。
在一些实施例中,设备302可以具有软件层,该软件层对处理来自其他设备302的信号的细节进行处理,使得利用所述信号的软件应用不需要处理诸如将所述数据与本地时钟同步、考虑到时间延迟等等之类的细节。该软件还可以处理利用不同传感器信号的不同数据格式工作的细节,使得应用不需要这样做。图3A是可以交换传感器信号的两个设备302中的不同代码层的一个实施例的图。该示例中的每个设备302都可以是发布者和/或订阅者。例如,设备302可以发布一些信号并订阅其他信号。每个设备中的网络层332用于交换数据。在一个实施例中,设备302使用用户数据报协议(UDP)来通信。传感器信号处理层334可以用于将传感器信号中的数据时间同步到本地时钟。传感器信号处理层还可以用于预测连续信号的未来值、以及向应用336提供具有所期望的频率的采样。下面讨论时间同步的进一步细节。应用706可以是使用传感器数据的软件应用。例如,应用706可以使用传感器数据来渲染图像。
图3B是若干不同设备302(1)-302(3)上的组件的图,其中该图示出图3A的进一步细节。要注意的一点是,设备302中的每个都可以运行不同的操作***337(1)-337(3),可以具有不同的网络接口339(1)-339(3)以及其他区别。传感器信号处理334可以允许每个设备302上的应用366容易地利用来自其他设备的传感器数据,而不必应付关于传感器数据被如何格式化的区别的细节。而且,应用366不需要应付关于设备之间的时钟的差异。对于 给定应用366而言,传感器数据(或从其中导出的信号)可以时间同步到该设备的本地时钟。
在图3B中,传感器信号处理334中的代码从该设备处的传感器325采集传感器数据。例如,设备302(1)的传感器处理334中的代码从设备302(1)处的一个或多个传感器325采集传感器数据。该数据可以以任何便利的格式存储。作为一个示例,传感器信号处理334将该传感器数据存储在C++结构中,但是可以使用其他格式。传感器信号处理334还可以处理传感器数据以创建某个类型的信号,比如骨架信号。在该实施例中,传感器信号处理代码334位于操作***337与应用336之间。
传感器信号可以通过LAN 304a被提供给订阅该传感器信号的另一设备(例如302(2))。订阅设备处的传感器信号处理334可以处理该传感器信号并且将其提供给应用336。粘合层338可以包括可以链接到应用336(例如引擎或诊断应用)中的共享存储器接口、网络套接字、或者经编译的库。因此,应用开发者可以专注于引擎内的工作,并且不必关注网络304的拓扑或者如何读取各个传感器325。这些传感器数据可以简单地以可用数据订阅源的分层结构、已经时间偏移到本地时钟的形式出现在应用336处。在该示例中,设备302(2)之一具有浏览器1300,该浏览器可以用于查看什么传感器数据从其他设备302可用、订阅传感器信号、查看传感器信号等等。图13中描绘了浏览器的示例性界面。
图3C是传感器信号处理334的一个实施例的框图。一般而言,这些组件包括连续信号生成380、状态信号生成385、二进制信号生成387、数据队列350以及网络库370。各个组件可以以设备302上的软件和/或硬件来实现。
数据队列350存储针对传出和传入的传感器信号的数据。在该示例中,存在为三种类型的信号中的每种描绘出的传出(服务器)和传入(客户端)队列。在该示例中,存在连续信号队列352(1)、352(2)、状态信号队列354(1)-254(2)以及二进制信号队列356(1)-356(2)。信号类型对应于图2中所示的那些类型。可以存在任何数目的队列356。在此,数据队列350还可以称为缓冲区。
设备302具有生成连续信号的连续信号生成逻辑380。作为一个示例,逻 辑380可以生成骨架信号。因此,连续信号生成逻辑380可以接收诸如深度信息和/或RGB数据之类的传感器数据以供在确定骨架信号时使用。作为另一示例,连续信号生成逻辑380可以从GPS传感器接收原始GPS数据。该数据可以被处理以形成GPS信号。然而,该原始数据可以在该信号中提供。
网络库370处理数据队列350与网络304之间的传送。网络库370包括发送器370、接收器378、时间同步机制382、以及信号映射广播384。发送器372具有发送器队列374,该发送器队列374保持供传送给网络304上的其他设备302的信号。发送器372还具有描述传感器信号的元数据376。该元数据可以在发送实际传感器信号以前被发送一次。
时间同步机制382能够与该网络上的其他设备302进行时间同步。存在与其他设备302进行时间同步的各种方式。一种技术是与其他设备302通信以确定本地时钟与其他设备的时钟之间的“歪斜(skew)”或“偏移量”。另一技术是访问其他设备302也可以访问的全局时钟。注意,全局时钟的使用不是必需的。
接收器378从网络304接收传感器信号和元数据。这些传感器信号可以在它们之内具有时间戳以指示传感器数据在发布设备处被采集的时间。注意,这时间戳可以是从发布设备的角度而言的。接收器378可以访问时间同步机制382以将这些时间戳转换成本地时钟。然后,接收器378可以将来自传感器信号的数据添加到合适的数据队列。
信号广播映射384用于广播被该设备变为对其他设备302可用的传感器信号。该信号广播映射384还跟踪订阅设备320。信号广播映射(map)384还可以访问网络304以确定其他设备302正在(或将要)使什么传感器信号可用。信号广播映射384可以跟踪设备302已经订阅了哪些传感器信号。
图4A-4C描绘了图3C的数据队列350的实施例的进一步细节。图4A是连续信号352的队列(或缓冲区)的一个实施例的图。该队列包括多个数据采样以及与每个数据采样相关联的时间戳。如果这是传入(客户端)队列,则时间戳可能已经被转换成本地时钟。如果这是传出(服务器)队列,则时间戳可以是该数据被采集时的参考服务器时钟的时间。
使用骨架信号的示例,数据采样的示例是表示骨架数据的集合数据。例如, 一种表示骨架数据的方式是按照连接骨头的关节。可以为每个关节指定位置(例如x,y,z)。可以以其他方式指定骨架数据。如前述那样,发布设备可以发送描述传感器信号的元数据。该元数据可以指定每个采样的长度、该采样的各个字段的描述、数据的格式(例如整数、浮点等等)。因此,订阅设备302可以访问该元数据以确定如何解释各个字段。
注意,在一些实施例中,订阅设备302可能能够预测连续信号的未来值。例如,基于采样1至n(表示时间1至n),订阅设备302可以预测数据采样n+1(表示时间n+1)的值。还应注意,订阅设备可能想要利用不与数据采样的特定时间相对应的数据来工作。作为一个示例,订阅设备可以内插以生成与时间戳1与时间戳2之间的一半处相对应的时间的数据。
图4B是描绘状态信号354的数据队列的一个实施例的图。该队列包括多个命令以及与每个命令相关联的时间戳。如果这是传入(客户端)队列,则该时间戳可能已经被转换成本地时钟。如果这是传出(服务器)队列,则该时间戳是该数据被采集时的参考服务器时钟的时间。
图4C是描绘二进制信号356的数据队列的一个实施例的图。该队列包括多个二进制数据帧以及与每个帧相关联的时间戳。如果这是传入(客户端)队列,则该时间戳可能已经被转换成本地时钟。如果这是传出(服务器)队列,则该时间戳是与该帧相关联的参考服务器时钟的时间。在一些实施例中,可以针对每帧传送(以及接收)多个数据分组。以下描述进一步的细节。
图5A是描绘数据结构303的一个实施例的图,该数据结构303列出了设备302发布的传感器信号以及每个传感器信号的订阅者。这样的结构可以在发布设备302处构建和维护。在该示例中,设备302发布信号x、信号y以及信号z。每个传感器信号都可以是图2所描绘的信号类型之一。当发布一传感器信号为可用时,设备302可以包括描述该传感器信号的信号类型的信息。例如,发布可以指示该传感器信号是连续信号、骨架信号以及仅限于头的信号。当设备302订阅传感器信号时,该设备可以被添加到该表中的订阅设备的列表中。该表可以包含可用于将传感器信号发送给订阅设备的任何信息,比如IP地址。
图5B是描绘数据结构307的一个实施例的图,该数据结构307列出了设备302所订阅的传感器信号以及发布设备302。这样的数据结构可以由订阅设 备302的传感器信号处理层334来构建和维护。在该示例中,设备302订阅信号A、信号B和信号C。每个传感器信号都可以是图2所描绘的传感器信号类型之一。当设备302订阅传感器信号时,该设备可以将该传感器信号的标识符和发布设备添加到该列表。例如,该设备已经订阅了由设备A发布的信号A、由设备B发布的信号B、以及由设备C发布的信号C。该表可以包含可用于联系发布设备的任何信息,比如IP地址。
在一个实施例中,网络服务器310充当传感器信号及其订阅的中央交换所。例如,参考图1B,网络服务器310具有信号目录312和订阅者列表314。图5C是描绘存储信号目录312和订阅者列表314的数据结构的一个实施例的图。在该示例中,信号目录312包括信号A、信号B和信号C。每个信号都可以是图2所描绘的信号类型之一。发布设备可以向网络服务器310发送标识出该发布设备愿意发布的传感器信号的通信。因此,每个传感器信号的发布者都可以在信号目录312中列出。设备302能够访问网络服务器310以浏览信号目录312以便确定所述设备希望订阅哪些传感器信号。信号目录312可以具诸如图2所示的分层格式以帮助浏览传感器信号列表。当设备302订阅传感器信号时,网络服务器310可以向该信号的设备列表添加该设备的标识符。例如,对于信号A而言,在图5C的订阅者列中存在设备列表。
图6A是设备302发布传感器信号可用性以及向订阅设备提供传感器信号的过程600的一个实施例的流程图。过程600例如可以由图1A或1B中的任何设备302来执行。通常,发布设备302具有对一些种类的传感器325的访问。要共享的传感器信号是从采集自传感器325的数据中导出的。
在步骤602,设备302发布表示其愿意共享传感器信号的指示。例如,参考图2,设备302可以发布:该设备愿意共享骨架信号。作为另一示例,设备302可以指示其愿意共享状态信号(注意可能存在多种类型的状态信号)。注意,其他设备302处的信号处理代码334可以理解图2的分层结构以促进信号订阅。然而,注意,使用诸如图2中的分层结构不是必需的。
在一个实施例中,发布设备通过LAN 304a广播信息以向LAN 304a上的其他设备302通知:该发布设备愿意共享某种类型的信号。在一些实施例中,该设备向网络服务器310发送通信以向该服务器310通知:该设备愿意共享某 种类型的信号。注意,这些选项二者可以一起使用。例如,具有传感器324的设备(例如设备302a,图1B)可以通过LAN 304a广播信息以向其他设备(其处于LAN上,例如设备302b,图1B)通知:该设备愿意共享某种类型的传感器信号。然后,LAN 304a上的其他设备之一可以向网络服务器310发送通信以向服务器310通知:存在信号可用于共享。
在步骤604,一个或多个设备302订阅传感器信号。这可以包括:发布设备从希望订阅该信号的设备302接收订阅请求。订阅设备302可以通过LAN304a连接到发布设备。在这种情况下,订阅设备可以通过LAN 304a向发布设备发送指示其订阅该信号的期望的消息。然而,LAN 304a连接不是必需的。注意,订阅设备302不需要具有与发布设备302的连接。在一个实施例中,订阅设备302可以向网络服务器310发送指示其订阅该信号的期望的通信。下面描述订阅设备的进一步细节。注意,订阅设备302的一部分可以包括:向该订阅设备发送描述该信号的元数据。在一个实施例中,发布设备302通过网络304向订阅设备302提供元数据。在一个实施例中,发布设备302向网络服务器310提供元数据,该网络服务器310将该元数据提供给订阅设备302。
在步骤606,建立发布设备与订阅设备之间的公共时间参考。在一个实施例中,每个设备302都访问由所有设备302使用的全局时钟。因此,在一个实施例中,建立公共时间参考的步骤可以通过访问全局时钟来实现。在一个实施例中,每个设备302都维护其自己的时钟。可以由两个设备302通过交换时间戳来计算所述两个设备的时钟之间的偏移量。然后,设备302可以使用该偏移量来将另一设备的时间转换成其自己的时间。因此,在一个实施例中,由第一设备建立公共时间参考的步骤可以通过下列方式来实现:从另一设备接收信息;以及确定偏离量以将该另一设备的时间转换成其自己的时间。注意,建立公共时间参考可以在过程600中的不同阶段进行。
在步骤608,发布设备302采集传感器数据。例如,使用GPS传感器来采集经度和纬度数据。作为另一示例,使用深度相机来采集深度信息。作为另一示例,发布设备302监视诸如游戏控制、遥控器、鼠标设备等等之类的用户输入设备。
在步骤610,由发布设备302生成传感器信号。该传感器信号包括基于传 感器325的数据。该传感器信号还可以包含定时信息。图4A-4C示出了可以存储传感器信号的数据队列的高级示例。
在步骤612,向订阅设备302提供传感器信号。作为一个示例,发布设备302通过网络304向订阅设备302提供该信号。该网络可以是LAN 304a,但是其可以是WAN 304b(例如因特网)。作为一个示例,发布设备302将该信号提供给网络服务器310,该网络服务器310将该信号提供给订阅设备302。
图6B是设备302确定其期望订阅什么传感器信号、接收以及处理这些传感器信号的过程650的一个实施例的流程图。过程650例如可以由图1A或1B中的任何设备302来执行。
在步骤652,设备302浏览所有可用的传感器信号。在一个实施例中,这包括:通过网络304(例如LAN 304a)监听来自发布设备302的广播。在一个实施例中,这包括:设备302访问网络服务器310,在那里,该设备可以读取可用信号的目录。
在步骤654,作出关于设备302希望订阅哪个传感器信号的确定。该确定可以通过用户选择传感器信号来作出。例如,用户可以从浏览器中的窗口中选择传感器信号。该确定可以自动地由订阅设备上的软件作出。例如,软件应用可以确定:该软件用得上骨架信号。
在步骤666,订阅设备302请求订阅传感器信号。在一个实施例中,订阅设备302通过网络(例如LAN)向发布设备302发送请求。在一个实施例中,订阅设备302将该请求发送给网络服务器310。
在任选步骤668,在订阅设备302与发布设备302之间建立公共时间参考。
在步骤670,订阅设备接收该传感器信号。如所述那样,该传感器信号可以基于已经在发布设备处采集的传感器数据。该传感器信号还可以包含定时信息。
在步骤672,传感器信号中的数据由传感器信号处理代码334来处理以使其对应用336兼容。该处理可以包括:将该数据同步到本地时钟。该处理可以包括:预测采样的未来值。该处理可以包括:生成新的采样,使得连续信号处于对应用336而言合适的频率。例如,应用336可能希望利用与传感器信号所具有的采样数目相比每秒数目不同的采样来操作。
在一个实施例中,步骤672包括:对传感器信号中的数据进行外插以处理信号传送中的可能的延迟。注意,网络带宽或等待时间可能随时间改变。因此,这些延迟可能随时间改变。然而,通过外插来代替当前的任何延迟,该应用可以总是获得至少对当前数据的预测。
在一个实施例中,步骤672包括:对传感器信号中的数据进行内插。这可以用于处理应用336的操作频率与传感器信号中的采样的频率的可能的差异。例如,对于连续信号而言,可能存在每秒30个采样。然而,该应用可能期望利用每秒60个采样来操作。通过对数据采样进行内插,可以给应用336提供每秒60个采样。再者,执行内插的细节不需要由软件应用336来处理,而是可以由较低级处的软件代码来执行。
在步骤674,将经处理的数据提供给软件应用336。注意,软件应用336不需要处理对数据进行时间同步的细节。因此,软件应用336可以简单地一并使用该数据及其可访问的其他数据,而不必进行时间同步。软件应用336可以从一个以上其他设备302获得来自传感器325的数据,而不必执行任何时间同步或其他处理来使该数据与其需求兼容。在步骤674以后,过程650返回到步骤668以重新建立设备之间的共同时间参考。重新建立共同时间参考可以用于补偿可能随时间发生的飘移。注意,重新建立共同时间参考可以以比数据传输速率低得多的频率进行。换言之,步骤670可以在重新建立共同时间参考以前接收许多数据采样。
图7A是订阅设备302向发布设备302订阅传感器信号的过程700的一个实施例的流程图。订阅设备302和发布设备302可以通过LAN 304a连接。然而,可以使用LAN 304a以外的网络304。在过程700以前,订阅设备302已经对期望订阅的特定传感器信号作出了确定。过程700描述了可以由订阅设备302执行的步骤、以及可以由发布设备302执行的步骤。可以由发布设备302执行的步骤是图6A的步骤604的一个实施例。可以由订阅设备执行的步骤是图6B的步骤666的一个实施例。
在步骤702,订阅设备302向发布设备发送订阅请求消息。在步骤704,发布设备302接收订阅请求消息,并且将该订阅设备302添加到其订阅该信号的设备302的列表。参考图5A,作为一个示例,可以将“设备m”添加到针 对“信号x”的列表。在步骤706,发布设备向订阅设备发送确认(ACK),该确认表示其已经与描述该信号的元数据一起被添加到订阅列表。下面的表1包括可用于描述GPS信号的元数据的示例。该元数据将数据类型定义为“卫星信号”和“连续信号”。描述了各个字段、以及数据为“浮点”类型。
表1
在步骤708,订阅设备302接收确认(ACK)和元数据。在步骤710,订阅设备302存储该元数据。在步骤712,订阅设备302将发布设备和传感器信号添加到其订阅列表。参考图5B,可以将“信号A”和“设备A”添加到订阅列表。
在步骤714,可以在订阅设备302与发布设备302之间打开通信连接以用于将该传感器信号从发布设备提供到订阅设备这一目的。
一种用于由设备302获悉可用传感器信号的技术是监听网络304(例如LAN 304a)上的广播。然而,在一些情况下,该设备可能错过广播。例如,设备302可能在任何时间进入和离开网络304。图7B是设备302在其错过一个 或多个广播的情况下获悉什么传感器信号可用的过程750的一个实施例的流程图。过程750是图6B的步骤652的一个实施例。
在步骤752,设备302在网络304上广播分组,该分组指示:该设备302想要获悉其他设备302已经使什么传感器信号可用。替代于广播,该设备可以直接向其他设备发送消息。在步骤754,网络304上的所述其他设备302接收该广播。
在步骤756,所述其他设备向该设备发送指示它们发布什么传感器信号的消息。在一个实施例中,所述其他设备302每个都在网络上广播消息以供该网络上的其他设备302进行接收。在步骤758,该设备接收所述消息(或广播)。
如上所述,在一个实施例中,存在可以充当传感器信号的交换所的网络服务器310。图7C是网络服务器310设置可用传感器信号的目录以及构建订阅者列表的过程780的一个实施例的流程图。过程780可以用于构建诸如图5C中所示的表。在步骤782,网络服务器310从发布设备接收发布通知。在步骤784,网络服务器310构建可用信号的列表。在步骤786,网络服务器310从设备302接收订阅各个信号的请求。在步骤788,网络服务器310将订阅设备302添加到合适的订阅列表。
图8A-8C提供发布设备302基于传感器数据生成传感器信号的实施例的附加细节。图8A是生成连续信号的过程800的一个实施例的流程图。过程800是图6A的步骤608-612的一个实施例。在步骤802,采集传感器数据。作为一个示例,这可以是从GPS传感器采集的数据。作为另一示例,这可以是从深度图像传感器采集数据。下面描述具有深度图像传感器的设备的示例。步骤802是步骤608的一个实施例。
在步骤804,基于该传感器数据生成传感器信号。作为一个示例,可以基于传感器数据生成骨架信号。该传感器信号可以包括数据采样。每个数据采样都可以与特定的时刻相关联。步骤804是步骤610的一个实施例。
在步骤806中,对传感器信号进行分组化(packetize)。作为一个示例,数据分组包含数据采样以及该数据采样的时间戳。分组可以包括一个以上的数据采样(以及一个以上的时间戳)。对于一些传感器信号而言,数据采样可以分散在两个数据分组上。在步骤808,将数据分组发送给订阅设备。步骤806-808 是步骤612的一个实施例。在一个实施例中,数据分组是通过UPD发送的。
图8B是生成状态信号的过程820的一个实施例的流程图。步骤820是图6A的步骤608-612的一个实施例。在步骤822,采集传感器数据。作为一个示例,这可以包括:监视用户输入设备。该用户输入设备可以包括、但不限于遥控器、游戏控制、键盘以及鼠标。该传感器还可以用于确定语音命令或手信号。因此,可以在步骤822使用深度相机和/或RGB相机。步骤802是步骤608的一个实施例。
在步骤824,基于该传感器数据生成状态信号。作为一个示例,基于该传感器数据来确定命令。例如,用户可以扣动用在视频游戏中的“枪”上的板机。在这种情况下,状态信号可以是板机是否被扣动。看待这方面的另一种方式是,用户扣动板机的动作是用枪射击的命令。每条状态信息(例如每个命令)都可以与特定的时刻相关联。步骤824是步骤610的一个实施例。
在步骤826,对状态信息进行分组化(packetize)。作为一个示例,数据分组包含一条状态信息以及该数据采样的时间戳。换言之,该数据分组描述该时刻的状态。分组可以包括一条以上的状态信息(以及一个以上的时间戳)。在一个实施例中,为单条状态信息生成多个分组。换言之,生成冗余分组。这可以有助于防止在分组被丢弃时丢失信息。在步骤828,将数据分组发送给订阅设备302。步骤826-828是步骤612的一个实施例。在一个实施例中,数据分组是通过UPD发送的。
在一个实施例中,发布设备302等待表示给定分组被接收到的确认(ACK)。如果ACK未被接收到,则可以在步骤832重发该分组的状态信息。
图8C是生成二进制信号的过程840的一个实施例的流程图。过程840是图6A的步骤608-612的一个实施例。在步骤842,采集传感器数据。作为一个示例,这可以是从GPS传感器采集的数据。作为另一示例,这可以是从深度传感器的采集数据。下面描述具有深度传感器的设备的示例。步骤842是步骤608的一个实施例。
在步骤844,将所采集的数据格式化成二进制信号。在步骤846中,对二进制信号进行压缩。在步骤848,向二进制信号(压缩或者是未经压缩的,这取决于是否执行了压缩)应用前向纠错(FEC)。可以使用许多不同类型的纠 错。该纠错可以允许订阅设备即使在一个或多个分组被丢弃的情况下(或者在存在其他传送错误的情况下)仍然重构完整的二进制信号。步骤844-848是步骤610的一个实施例。
在步骤850,将该信号分组化并发送给订阅设备。作为一个示例,数据分组包含二进制信号的一部分以及二进制信号的该部分的时间戳。由于该信息分组可以对应于一定范围的时间,因此该时间戳可以对应于分组中的特定时刻,比如分组开始时。步骤850是步骤612的一个实施例。在一个实施例中,数据分组是通过UPD发送的。
图9A是处理连续信号的过程900的一个实施例的流程图。在过程900中,将数据采样添加到数据队列(或者缓冲区)。出于参考的目的,可以构造诸如图4A的示例之类的数据队列。过程900是处理该信号中的数据的一个实施例(例如图6B的步骤672)。在这种情况下,该处理包括:时间同步到本地时钟。过程900可以由订阅设备302来执行。在一个实施例中,过程900在同步层334处执行。然而,注意,过程900可以由网络服务器310来执行。
在步骤902,访问连续信号中的数据采样。在步骤904,访问处于连续信号中并且与该数据采样相关联的时间戳。如上所述,每个数据分组都可以包含一个数据采样以及一个时间戳。然而,可以使用其它安排。
在步骤906,将该时间戳转换成本地时间。在一个实施例中,订阅设备302和发布设备302之前已经交换了信息,使得可以确定它们的时钟之间的偏移量或歪斜。订阅设备302可以使用该信息来将时间戳转换成本地时间。在一个实施例中,订阅设备和发布设备可以每个都访问全局时钟。在这种情况下,时间戳可以对应于该全局时间。在一个实施例中,为了应用336可以便利地使用数据采样,可以将时间戳从全局时间转换成本地时间。
在步骤908,将数据采样和本地时间戳添加到该队列(或缓冲区)。然后,过程900可以通过处理连续信号中的下一数据采样而重复。
图9B是处理状态信号的过程920的一个实施例的流程图。在过程920中,将状态信息添加到数据队列(或者缓冲区)。出于参考的目的,可以构造诸如图4B的示例之类的数据队列。过程920是处理传感器信号的一个实施例(例如图6B的步骤672)。在这种情况下,执行该信号中数据到本地时钟的时间 同步。过程920可以由订阅设备来执行。在一个实施例中,过程920在同步层704处执行。然而,注意,过程920可以由网络服务器310来执行。
在步骤922,访问状态信号中的状态信息。在步骤924,访问处于数据信号中并且与该状态信息相关联的时间戳。如上所述,每个数据分组都可以包含一条状态信息以及一个时间戳。然而,可以使用其它安排。
在步骤926,将该时间戳转换成本地时间。步骤926可以类似于图9A的步骤906,并且将不予以详细讨论。
在步骤928,将状态信息和本地时间戳添加到该队列(或缓冲区)。然后,过程920可以通过处理状态信号中的下一条状态信息而重复。
如上所述,一种类型的信号可以是二进制信号。图9C是处理二进制信号的过程940的一个实施例的流程图。在过程940中,将二进制数据帧添加到数据队列(或者缓冲区)。出于参考的目的,可以构造诸如图4C的示例之类的数据队列。过程940是处理传感器信号的一个实施例(例如图6B的步骤672)。在这种情况下,该处理包括:将该信号中的数据时间同步到本地时钟。过程940可以由订阅设备来执行。在一个实施例中,过程920在同步层334处执行。
在步骤942,访问对应于数据帧的二进制数据的分组。例如,可以将数据帧编码到12个数据分组中。在步骤944,应用FEC以校正数据传送中的任何错误。在一些实施例中,即使一个数据分组(或多个数据分组)被丢弃,仍然可以对二进制信号完全解码。在步骤926,如果数据分组在发送时曾被压缩,则对这些所述数据分组进行解压缩。
在步骤948,访问处于数据信号中并且与该帧相关联的时间戳。在步骤950,将该时间戳转换成本地时间。步骤950可以类似于图9A的步骤906,并且将不予以详细讨论。
在步骤952,将该帧和本地时间戳添加到该队列(或缓冲区)。然后,过程940可以通过处理下一帧的二进制信号中的一组分组而重复。
图10A是预测连续信号的值的过程1000的一个实施例的流程图。过程1000是对连续信号进行外插的一个实施例。在过程1000,预测“未来”值。未来值是指,该值是针对数据采样还未在订阅设备处被处理的时间的。通常,该值可以用于填补实际当前时间与上一采样的实际时间之间的空白。换言之, 预测值可以用于补偿诸如网络延迟之类的延迟。过程1000是处理传感器信号的一个实施例(例如图6B的步骤672)。过程1000可以由订阅设备来执行。在一个实施例中,过程1000在订阅设备302的同步层334处执行。然而,过程1000可以由网络服务器310来执行。
在步骤1002,从连续信号的队列中访问最新的数据采样。可以访问任何数目的最新数据采样。在步骤1004,确定数据应当被预测的时间段。作为一个示例,可以确定上一数据采样与实际当前时间之间的时间段的数据。然而,可以甚至为超过当前时间的某个时间预测数据。这一点的一个可能的应用是,向渲染应用提供“提前”的数据,使得其可以更好地将被渲染物精确地与当前发生的事物相匹配。
在步骤1006,为该时间段确定一个或多个数据采样。在一个实施例中,将该队列中的数据采样进行外插以确定这些值。可以使用各种外插技术。例如,可以使用曲线拟合。曲线拟合可以是一阶、二阶、三阶、四阶的等等。
在步骤1008,进行检查以确定这些值是否是有效的。例如,对于骨架信号而言已知的可能是,人类肘仅能弯曲到这种程度。如果步骤1006的完成产生了无效数据采样,则可以在步骤1010基于由连续信号所表示的主体的物理属性来确定兼容的或者以某种方式受限的新数据采样。注意,步骤1008-1010的检查和重新计算可以置入到外插步骤1006中,使得不首先生成无效值。
图10B是生成连续信号的附加采样值的过程1020的一个实施例的流程图。过程1020是对连续信号进行内插的一个实施例。在过程1020,确定数据采样之间的值。这些值可以用于向应用提供除信号内的时刻以外的时刻的数据采样。例如,应用可能想要每秒60个采样,但是信号可能仅具有每秒30个采样。过程1020可以用于向应用提供具有其期望的频率的数据采样。过程1020是处理传感器信号中的数据的一个实施例(例如图6B的步骤672)。过程1020可以由订阅设备来执行。在一个实施例中,过程1020在同步层334处执行。过程1020也可以由网络服务器310来执行。
在步骤1020,对应当提供什么数据采样进行确定。这可以响应于来自应用336的请求。使用上面的示例,应用336可以指定采样频率。例如,应用336可以请求每秒提供60个采样。
在步骤1022,从连续信号的队列中访问最新的数据采样。可以访问任何数目的最新数据采样。在步骤1024,确定该信号中的采样之间的时刻的值。在一个实施例中,使用线性内插来在两个或更多个采样之间内插。然后,可以将这些值提供给应用336。
在一个实施例中,在预测了采样值以后,在之后接收到实际采样值以后重新评估该预测。如果确定:该预测需要改动,则可以作出逐渐改变使得不存在不连续性。图10C是作为将用于说明的示例来提供的。数据采样可以描述已经被投掷的球的位置。图10C中的圆圈表示该球基于该球的实际数据采样的位置。方框表示对该球将要去往之处的预测。圆圈中的数字表示采样的时间(增加的数字是指靠后的采样)。如果仅存的数据采样是针对时间1-4的,则可以预测:该球的路径将继续为直线,这由标记为5a-8a的框来指示。然而,在时间5,该信号中的实际数据采样显示:该球已经被偏转。因此,可以对该球的路径进行一组新的预测,这由框6b-9b来表示。
然而,如果例如通过使用作为新路径的框7a、8b和9b进行校正,则可能存在大的不连续性。因此,可以进行从第一预测(方框5a-8a)到经修订的预测(方框6b-9b)的逐渐过渡。该新的路径可以取决于哪些预测值已经被提供给应用。例如,如果方框5a和6b的预测值已经被提供给该应用(而不是框7a或8a),则可以计算出从方框6a逐渐移动到9b的新路径。图10C中示出了示例性的“合并路径”。可以为示例性的合并路径上的若干点生成采样值,并将其提供给该应用。
图10D是逐渐校正预测的过程1040的一个实施例的流程图。过程1040是处理该信号中的数据的一个实施例(例如图6B的步骤672)。过程1040可以由订阅设备来执行。在一个实施例中,过程1040在同步层704处执行。过程1040也可以由网络服务器310来执行。
在步骤1042,为第一组数据采样进行第一预测。例如,可以使用图10A的过程1040来基于时间段T1-T4的数据采样预测由方框5a-8a表示的球的路径。
在步骤1044,接收该信号的更新。例如,接收针对时间5的数据采样。在步骤1046,基于该新数据采样生成另一预测。例如,进行由图10C的方框 6b-9b所表示的预测。注意,不要求如图10C中那样预测多个数据点。
在步骤1048,确定需要校正。这可以基于记录预测之间的差异来确定。另一技术是将实际新数据采样与预测值相比较。例如,将图10C中标记为“5”的圆圈的实际数据采样与标记为“5a”的方框相比较。基于预测与实际值之间的差异,可以确定:新的预测可以是有保证的。
在步骤1050,进行逐渐合并两个预测的校正。参考图10C,可以为沿着合并路径的点生成一个或多个采样。
在一个实施例中,对两个或更多个信号在时间上进行同步。例如,可以将连续信号同步到状态信号。作为一个特定示例,可以将骨架信号(连续信号)时间同步到枪板机信号(状态信号)。图10E是时间同步两个信号的过程1060的一个实施例的流程图。过程1060是处理该传感器信号中的数据的一个实施例(例如图6B的步骤672)。过程1060可以由订阅设备来执行。在一个实施例中,过程1060在同步层704处执行。过程1040可以由网络服务器310来执行。
在步骤1062中,接收连续信号。步骤1062可以包括:将数据采样添加到连续信号队列352,这在图9A中予以了描述。例如,接收骨架信号。在步骤1064,接收状态信号。例如,该信号描述用在视频游戏中的枪的板机的状态。步骤1064可以包括:将命令添加到状态信息队列354,这在图9B中予以了描述。
在步骤1066,同步连续信号和状态信号。步骤1066可以包括:将连续信号队列352上的时间戳与状态信息队列354相比较。作为一个实施例,首先确定给定命令的时间戳。然后,在连续信号队列352中搜索该时间戳。可以使用其他技术。可以将该结果提供给应用336。
图11A和11B是向应用336提供已经被处理并被时间同步的数据的实施例。图11A的过程1100是向应用提供经处理的传感器数据的一个实施例,并且是图6B的步骤674的一个实施例。过程1100可以由订阅设备302来执行。在一个实施例中,过程1100在同步层704处执行。过程1100可以由网络服务器310来执行。
在步骤1102,应用336向同步层334发送针对具有所选时间段的状态信 息的查询。例如,渲染数据的应用336发送针对所选时间段期间的订阅状态信号中的所有命令的请求。
在步骤1104,同步层334处的代码访问该状态信息的数据队列以对所选时间段的状态信息进行定位。在步骤1106,同步层704处的代码向应用336返回状态信息。
图11B的过程1150是向应用336提供经处理和经时间同步的数据的一个实施例,并且是图6B的步骤674的一个实施例。过程1150可以由订阅设备来执行。在一个实施例中,过程1150在同步层704处执行。过程1150可以由网络服务器310来执行。
在步骤1152,应用336发送监视某个事件的请求。例如,应用336发送在枪板机的状态改变的情况下向应用336通知该情况的请求。
在步骤1154,同步层334处的代码监视该事件。例如,同步层334处的代码监视枪板机信号的状态改变。在一个实施例中,该代码访问与相关状态信号相对应的状态信息的数据队列以监视该事件。
在检测到该事件以后,同步层334处的代码在步骤1158通知应用336。该通知可以包括用于指示该事件发生的时间的本地时间戳。
有时,设备302可能离开网络304。图12A是订阅设备304适度地离开网络304的过程1200的一个实施例的流程图。在步骤1202,订阅设备302向发布设备发送撤销订阅消息。在步骤1204,发布设备从其订阅设备的列表中移除该订阅设备。在步骤1206,发布设备向订阅设备发送确认(ACK)。在步骤1208,订阅设备更新其订阅的信号的列表。例如,传感器信号和发布设备被移除。在步骤1210,终止订阅设备302与发布设备302之间的连接。过程1200可以对该设备订阅的所有发布设备执行。
图12B是发布设备302适度地离开网络304的过程1250的一个实施例的流程图。在步骤1252,发布设备302向订阅设备302发送撤销订阅消息。在步骤1254,订阅设备302从其传感器信号的列表中移除其已订阅设备的传感器信号。在步骤1256,订阅设备302向发布设备302发送确认(ACK)。在步骤1258,发布设备302更新该发布设备的已订阅其传感器信号的设备302的列表。在步骤1260,终止订阅设备302与发布设备302之间的连接。过程1250可以 对订阅该设备发布的传感器信号的所有设备执行。
在一个实施例中,可以使用浏览器来利用该传感器信号工作。例如,浏览器可以发现网络304中的所有传感器信号,枚举和动态地订阅所述传感器信号。图13描绘了浏览器1300的界面的一个实施例。浏览器界面1300示出了在窗口1302中可用的各种类型的传感器信号。在这种情况下,这些类型的传感器信号包括GlobalStar、GPS、IRIDIUM、以及NOAA。回过来参考图2,这些信号每个都可以是该分层结构中的不同类型的信号。图2中示出了信号类型“GPS”,但是可以列举出其他信号类型。当前已经选中了传感器信号类型GPS。因此,在窗口1304中显示可用的各个GPS信号。当前,已经选中NAVSTAR35信号。在窗口1306中显示所选传感器信号的当前值。窗口1308、1310和1312示出了纬度、经度和海拔的过去值和预测值。过去值由线条的实线部分表示,并且预测值由虚线部分表示。可以使用诸如使用不同颜色的任何技术。
在一些实施例中,浏览器还可以生成定义传感器信号结构的.h文件,使得应用336可以即使在不知道传感器信号的类型的情况下仍然使用该传感器信号。这可被称为自动代码生成。针对自动代码生成,浏览器可以使用类型安全数据结构以将信号值存储在客户端(订阅)设备中。浏览器可以使用其对数据结构的知识(通过来自发布设备的元数据)来判定目标是否与信号的内容相兼容。该数据结构可以由消费该信号的每个设备来提供。由于浏览器具有对信号内容背后的数据结构的类型专用知识,因此其可用于构建合适的类型安全数据结构代码以供客户端直接导入。在一个实施例中,自动生成的代码包括针对已知信号的可直接编译到客户端中的C++头文件。
在一些实施例中,分担设备302之间的信号的时间同步的一个或多个设备302可以包括运动捕捉***。因此,将描述示例运动捕捉***。然而,可以理解,本文所描述的技术不限于运动捕捉***。图14描绘了运动捕捉***10的示例,其中房间(或其他环境)中的人与应用交互。运动捕捉***10包括显示器196、深度相机***20、以及计算环境或装置12。深度相机***20可以包括图像相机组件22,该图像相机组件22具有光发射器24、光传感器25、以及红绿蓝(RGB)相机28。在一个实施例中,光发射器24发射准直光束。准 直光束的示例可包括但不限于,红外(IR)和激光。在一个实施例中,光发射器24是LED。从视野6内的听者8、对象33、墙壁35等反射离开的光由光传感器25来检测。在一些实施例中,***10使用该信息来确定如何生成传感器信号。
亦称为听者的用户站在深度相机***20的视野6中。线2和4表示视野6的边界。可以定义笛卡儿世界坐标系,其包括:沿着深度相机***20的焦距例如水平地延伸的z轴,垂直地延伸的y轴,以及侧向地且水平地延伸的x轴。注意,附图的透视被修改成简化表示,显示器196在y轴方向上垂直延伸,z轴垂直于y轴和x轴且与用户所站立的地面平行地从深度相机***20延伸出来。
一般而言,运动捕捉***10用于识别、分析和/或跟踪对象。计算环境12可包括计算机、游戏***或控制台等等,以及执行应用的硬件组件和/或软件组件。
深度相机***20可以包括相机,该相机用于可视地监视诸如用户之类的一个或多个物体8,使得可以捕捉、分析并跟踪用户所作出的姿势和/或运动,以执行应用中的一个或多个控制或动作,比如选中用户界面(UI)中的菜单项。
运动捕捉***10可以连接到诸如显示器196等可向用户提供视觉和音频输出的视听设备,如电视机、监视器、高清电视机(HDTV)等,或甚至是墙或其他表面上的投影。还可以经由单独的设备来提供音频输出。注意,3D音频信号通常通过头戴耳机27来提供。为驱动显示器,计算环境12可包括提供与应用相关联的视听信号的诸如图形卡之类的视频适配器和/或诸如声卡之类的音频适配器。显示器196可以通过例如S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆等等连接到计算环境12。
图15描绘了图14的运动捕捉***10的示例框图。***10包括深度相机***20和计算环境12。在该实施例中,计算环境12具有传感器信号生成195。计算环境12输入来自深度相机***20的深度信息和RGB信息,并且可输出传感器信号。注意,硬件执行的实施方式、以及混合型软件/硬件实施方式也是可能的。
深度相机***20可被配置成生成深度图像,该深度图像可以包括深度值。 深度相机***20可以将深度图像组织成“Z层”,或者可以与从深度相机***20沿其视线延伸的Z轴垂直的层。深度图像可包括所捕捉的场景的二维(2-D)像素区域,其中该2-D像素区域中的每个像素具有代表距离图像相机组件22的线性距离(径向距离)的或由像素观察的3D位置的Z分量(垂直距离)的相关联的深度值。
图像相机组件22可以包括光发射器24和一个或多个光传感器25来捕捉从视野内的物体反射离开的光的强度。例如,深度相机***20可使用光发射器24将光发射到物理空间上并使用光传感器25来检测从物理空间内一个或多个对象的表面所反射的光。在一些实施例中,深度值基于光强来确定。例如,随着时间的过去,越来越多的光子达到给定的像素。在收集时间段以后,每个像素处的光强被采样。深度图像中的深度值可以基于每个像素处的光强来确定。在一些实施例中,光发射器24发射脉冲红外光。在一些实施例中,光被调制到所期望的频率。
红绿蓝(RGB)相机28可用于捕捉可见光图像。深度相机***20还可以包括话筒30,其包括例如接收声波并将其转换成电信号的换能器或传感器。另外,话筒30可用于接收也可由人提供的诸如声音之类的音频信号,以控制可由计算环境12运行的应用程序。音频信号可包括人的口声,如说的话、口哨声、喊声及其他发声,以及非口声,如掌声或跺脚。在一些实施例中,话筒30是话筒阵列,它可具有一起运行的任何数量的话筒。
深度相机***20可包括与图像相机组件22进行通信的处理器32。处理器32可以包括可执行例如包括用于生成传感器信号的指令在内的指令的标准化处理器、专用处理器、微处理器等等。
深度相机***20还可包括存储器组件34,存储器组件34可存储可由处理器32执行的指令、以及存储RGB相机所捕捉的图像或图像帧、或任何其他合适的信息、图像等等。根据一个示例实施方式,存储器组件34可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘或任何其他合适的有形计算机可读存储组件。存储器组件34可以是经由总线21与图像捕捉组件22和处理器32通信的单独的组件。根据另一实施例,存储器组件34可被集成到处理器32和/或图像捕捉组件22中。
深度相机***20可以通过通信链路36与计算环境12进行通信。通信链路36可以是有线和/或无线连接。根据一个实施方式,计算环境12可以经由通信链路36向深度相机***20提供时钟信号,该时钟信号指出何时从位于深度相机***20的视野中的物理空间捕捉图像数据。
此外,深度相机***20可通过通信链路36向计算环境12提供深度信息和由RGB相机28捕捉的图像。计算环境12然后可使用深度信息和所捕捉的图像来控制应用。例如,如图15所示,计算环境12可包括诸如姿势过滤器集合等姿势库190,每一姿势过滤器具有关于可(在用户移动时)执行的姿势的信息。例如,可以为各种手势(如手的划动或投掷)提供姿势过滤器。通过将检测到的运动与每一个过滤器进行比较,可以标识由人执行的指定的姿势或动作。还可以确定执行动作的程度。
计算环境还可包括处理器192,其用于执行存储在存储器194中的指令以向显示设备196提供音频-视频输出信号并实现其他功能。
图16描绘了可用于生成并处理传感器信号的计算环境的示例框图。该计算环境可以用在图14的运动捕捉***中。该计算环境可以用于图1A或1B所示的设备302。图15所描述的诸如计算环境12之类的计算环境可包括诸如游戏控制台之类的多媒体控制台100。
控制台100可以从图15的深度相机***20接收输入。多媒体控制台100包括具有1级高速缓存102、2级高速缓存104和闪存ROM(只读存储器)106的中央处理单元(CPU)101。一级高速缓存102和二级高速缓存104临时存储数据,并且因此减少存储器访问周期的数量,由此改进处理速度和吞吐量。CPU 101可被设置成具有一个以上的内核,并且由此附加一级和二级高速缓存102和104。诸如闪存ROM之类的存储器106可存储当多媒体控制台100通电时在引导过程的初始阶段期间加载的可执行代码。
图形处理单元(GPU)108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速和高分辨率图形处理的视频处理流水线。经由总线从图形处理单元108向视频编码器/视频编解码器114运送数据。视频处理流水线向A/V(音频/视频)端口140输出数据,用于传输至电视或其他显示器。存储器控制器110连接到GPU 108,以便于处理器对各种类型的存储器112,比如RAM (随机存取存储器)的处理器访问。A/V端口140可以连接到显示器196。
多媒体控制台100包括可在模块118上实现的I/O控制器120、***管理控制器122、音频处理单元123、网络接口124、第一USB主机控制器126、第二USB控制器128和前面板I/O子部件130。USB控制器126和128用作***控制器142(1)-142(2)、无线适配器148、以及外置存储器设备146(例如,闪存、外置CD/DVD ROM驱动器、可移动介质等)的主机。网络接口(NW IF)124和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中任何一种。
提供***存储器143来存储在引导过程期间加载的应用数据。提供了媒体驱动器144,其可以包括DVD/CD驱动器、硬盘驱动器、或其他可移动媒体驱动器。介质驱动器144可内置或外置于多媒体控制台100。应用数据可经由介质驱动器144访问,以供多媒体控制台100执行、回放等。媒体驱动器144经由诸如串行ATA总线或其他高速连接的总线连接到I/O控制器120。
***管理控制器122提供与确保多媒体控制台100的可用性相关的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的相应音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口140,以供外置音频播放器或具有音频能力的设备再现。
前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152、以及任何LED(发光二极管)或其他指示器的功能。***供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
CPU 101、GPU 108、存储器控制器110、以及多媒体控制台100内的各种其他组件经由一条或多条总线互连,该总线包括串行和并行总线、存储器总线、***总线、以及使用各种总线体系结构中的任一种的处理器或局部总线。
当多媒体控制台100通电时,应用数据可从***存储器143加载到存储器112和/或高速缓存102、104中并在CPU 101上执行。应用可呈现在导航到在多媒体控制台100上可用的不同媒体类型时提供一致的用户体验的图形用户界 面。在操作中,介质驱动器144中所包含的应用和/或其他媒体可从介质驱动器144启动或播放,以将附加功能提供给多媒体控制台100。
多媒体控制台100可通过将该***连接到电视机或其他显示器而作为独立***来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该***交互、看电影、或听音乐。然而,在通过网络接口124或无线适配器148可用的宽带连接集成的情况下,多媒体控制台100还可作为更大网络社区中的参与者来操作。
当多媒体控制台100通电时,可以保留指定量的硬件资源以供多媒体控制台操作***作***使用。这些资源可包括存储器的保留量(诸如,16MB)、CPU和GPU周期的保留量(诸如,5%)、网络带宽的保留量(诸如,8kbs),等等。因为这些资源是在***引导时间保留的,所保留的资源对于应用视角而言是不存在的。
具体地,存储器保留可以是足够大以包含启动内核、并发***应用和驱动程序。CPU保留可以是恒定的,使得若所保留的CPU使用不被***应用使用,则空闲线程将消耗任何未使用的周期。
对于GPU保留,通过使用GPU中断来调度代码以将弹出窗口呈现为覆盖图,从而显示由***应用程序生成的轻量消息(例如,弹出窗口)。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图可与屏幕分辨率成比例缩放。在并发***应用使用完整用户界面的情况下,优选使用独立于应用分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率和引起TV重新同步。
在多媒体控制台100引导且***资源被保留之后,执行并发***应用来提供***功能。***功能被封装在上述所保留的***资源内执行的一组***应用中。操作***内核标识作为***应用线程而非游戏应用线程的线程。***应用可被调度为在预定时间并以预定时间间隔在CPU 101上运行,来为应用提供一致的***资源视图。调度是为了使在控制台上运行的游戏应用所引起的高速缓存***最小化。
当并发***应用需要音频时,由于时间敏感性而将音频处理异步地调度给游戏应用。多媒体控制台应用管理器(如下所描述的)在***应用活动时控制游戏应用的音频水平(例如,静音、衰减)。
输入设备(例如,控制器142(1)和142(2))由游戏应用和***应用共享。输入设备不是保留资源,而是在***应用和游戏应用之间切换以使其各自具有设备的焦点。应用管理器可控制输入流的切换,而无需知晓游戏应用的知识,并且驱动程序维持有关焦点切换的状态信息。
图17描绘了可用于生成并处理传感器信号的计算环境的另一示例性框图。例如,该计算环境可以用于图1A或1B中的设备302之一。该计算环境还可以从一个或多个传感器325接收输入。
计算环境220包括通常包括各种有形计算机可读存储介质的计算机241。这可以是能由计算机241访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。***存储器222包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)223和随机存取存储器(RAM)260。包含诸如在启动期间帮助在计算机241内的元件之间传输信息的基本例程的基本输入/输出***224(BIOS)通常储存储在ROM 223中。RAM 260通常包含处理单元259可立即访问和/或当前正在操作的数据和/或程序模块。图形接口231与GPU 229进行通信。作为示例而非局限,图17描绘了操作***225、应用程序226、其他程序模块227和程序数据228。
计算机241也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质,例如,读写不可移动、非易失性磁性介质的硬盘驱动器238,读写可移动、非易失性磁盘254的磁盘驱动器239,以及读写诸如CD ROM或其他光学介质之类的可移动、非易失性光盘253的光盘驱动器240。可以在该示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性有形计算机可读存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器238通常由例如接口234等不可移动存储器接口连接至***总线221,而磁盘驱动器239和光盘驱动器240通常由例如接口235等可移动存储器接口连接至***总线221。
以上讨论并在图17中描绘的驱动器及其相关联的计算机存储介质为计算机241提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,硬盘驱动器238被描绘为存储了操作***258、应用程序257、其他程序模块256、以及程序数据255。注意,这些组件可与操作***225、应用程序 226、其他程序模块227和程序数据228相同,也可与它们不同。在此给操作***258、应用程序257、其他程序模块256、以及程序数据255提供了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘251和定点设备252——通常是指鼠标、跟踪球或触摸垫——向计算机241输入命令和信息。其他输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些以及其他输入设备通常通过耦合到***总线的用户输入接口236连接到处理单元259,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。显示器196也经由诸如视频接口232之类的接口连接至***总线221。除监视器之外,计算机还可以包括可以通过输出***接口233连接的诸如头戴耳机27和打印机243之类的其他***输出设备。
计算机241可使用到一个或多个远程计算机(诸如,远程计算机246)的逻辑连接而在联网环境中操作。远程计算机246可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,且通常包括许多或所有以上相对于计算机241描述的元件,但是在图12中仅示出了存储器存储设备247。逻辑连接包括局域网(LAN)304a和广域网(WAN)304b,但也可以包括其他网络。此类联网环境在办公室、企业范围的计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机241通过网络接口或适配器237连接至LAN 304a。当在WAN联网环境中使用时,计算机241通常包括调制解调器250或用于通过诸如因特网之类的WAN 304b建立通信的其他装置。调制解调器250可以是内置的或外置的,可经由用户输入接口236或其他适当的机制连接到***总线221。在联网环境中,相对于计算机241所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图17描绘了远程应用程序248驻留在存储器设备247上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
前面的对本技术的详细描述只是为了说明和描述。它不是为了详尽的解释或将本技术限制在所公开的准确的形式。鉴于上述教导,许多修改和变型都是可能的。所描述的实施例只是为了最好地说明本技术的原理以及其实际应用, 从而使精通本技术的其他人在各种实施例中最佳地利用本技术,适合于特定用途的各种修改也是可以的。本技术的范围由所附的权利要求进行定义。
Claims (8)
1.一种在设备的范围内同步传感器数据的方法,包括:
由第一设备确定:哪些传感器信号通过一个或多个网络可用,所述传感器信号中的每个都从具有从中导出该传感器信号的传感器的另一设备可用;
由第一设备订阅所述传感器信号中的第一传感器信号;
在第一设备与提供第一传感器信号的另一设备之间建立公共时间参考;
在第一设备处通过所述一个或多个网络接收第一传感器信号,第一传感器信号包括定时信息、基于传感器数据的连续信号以及状态信号;以及
在第一设备处处理第一传感器信号中的数据,所述处理包括使用所述公共时间参考将第一传感器信号中的数据同步到第一设备的本地时间时钟;
其中所述方法还包括:重新建立第一设备与提供第一传感器信号的另一设备之间的共同时间参考,以补偿可能随时间发生的飘移。
2.如权利要求1所述的方法,其特征在于,处理第一传感器信号中的数据包括:对连续信号中的数据进行外插以预测超过当前时间的某个时间的连续信号中的数据。
3.如权利要求1所述的方法,其特征在于,处理第一传感器信号中的数据包括:对该连续信号中的数据进行内插以使该连续信号中的数据与应用兼容。
4.如权利要求2所述的方法,其特征在于,对连续信号中的数据进行外插包括:确定基于由该连续信号所表示的主体的物理属性而受到限制的值。
5.如权利要求1所述的方法,其特征在于,对连续信号中的数据进行外插生成第一预测,并且还包括:
接收第一传感器信号中的连续信号的一个或多个附加数据采样;
至少基于所述附加数据采样对该连续信号进行外插以形成第二预测;以及
将第一预测逐渐地合并到第二预测。
6.如权利要求1所述的方法,其特征在于,还包括:
由第二设备请求订阅所述传感器信号中的第二传感器信号;
在第二设备处接收第二传感器信号,该第二传感器信号包括定时信息和基于传感器数据的数据;以及
将第一传感器信号中的数据与第二传感器信号中的数据在时间上进行同步。
7.一种在设备的范围内同步传感器数据的方法,包括:
确定哪些传感器信号通过一个或多个网络可用,所述传感器信号基于传感器数据,所述传感器信号包括第一类型的针对连续信号的信号、以及第二类型的针对状态信号的信号;
订阅所述传感器信号中的第一传感器信号;
建立与发布第一传感器信号的设备的公共时间参考;
通过所述一个或多个网络接收第一传感器信号,第一传感器信号包括定时信息、基于传感器数据的连续信号以及状态信号;以及
使用该公共时间参考将第一信号中的数据同步到本地时钟,包括:
访问连续信号中的采样和相关联的第一时间戳;
使用公共时间参考将第一时间戳转换为本地时间;
基于连续信号中的采样对连续信号进行外插以预测超过当前时间的某个时间的连续信号中的数据;
访问状态信号中的状态信息和相关联的第二时间戳;
使用公共时间参考将第二时间戳转换为本地时间;以及
发送被接收的状态信息的确认;
将经同步的数据提供给应用。
8.一种在设备的范围内同步传感器数据的***,包括:
用于确定哪些传感器信号通过一个或多个网络可用的装置,所述传感器信号基于传感器数据,所述传感器信号包括第一类型的针对连续信号的信号、以及第二类型的针对状态信号的信号;
用于订阅所述传感器信号中的第一传感器信号的装置;
用于建立与发布第一传感器信号的设备的公共时间参考的装置;
用于通过所述一个或多个网络接收第一传感器信号的装置,第一传感器信号包括定时信息、基于传感器数据的连续信号以及状态信号;以及
用于使用该公共时间参考将第一信号中的数据同步到本地时钟的装置,包括:
用于访问连续信号中的采样和相关联的第一时间戳的装置;
用于使用公共时间参考将第一时间戳转换为本地时间的装置;
用于基于连续信号中的采样对连续信号进行外插以预测超过当前时间的某个时间的连续信号中的数据的装置;
用于访问状态信号中的状态信息和相关联的第二时间戳的装置;
用于使用公共时间参考将第二时间戳转换为本地时间的装置;以及
用于发送被接收的状态信息的确认的装置;
用于将经同步的数据提供给应用的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/979,140 US9116220B2 (en) | 2010-12-27 | 2010-12-27 | Time synchronizing sensor continuous and state data signals between nodes across a network |
US12/979,140 | 2010-12-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102571315A CN102571315A (zh) | 2012-07-11 |
CN102571315B true CN102571315B (zh) | 2015-07-15 |
Family
ID=46316801
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110443126.2A Active CN102571315B (zh) | 2010-12-27 | 2011-12-26 | 一种在设备的范围内同步传感器数据的方法和*** |
Country Status (2)
Country | Link |
---|---|
US (1) | US9116220B2 (zh) |
CN (1) | CN102571315B (zh) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10785316B2 (en) * | 2008-11-24 | 2020-09-22 | MeshDynamics | Evolutionary wireless networks |
US8462681B2 (en) * | 2009-01-15 | 2013-06-11 | The Trustees Of Stevens Institute Of Technology | Method and apparatus for adaptive transmission of sensor data with latency controls |
FR2977059B1 (fr) * | 2011-06-27 | 2013-07-05 | Suez Environnement | Procede de tele-releve de compteurs de fluide, compteur et serveur associes a ce procede |
US9916514B2 (en) | 2012-06-11 | 2018-03-13 | Amazon Technologies, Inc. | Text recognition driven functionality |
US9075545B2 (en) | 2012-08-01 | 2015-07-07 | Hewlett-Packard Development Company, L.P. | Synchronizing sensor data using timestamps and signal interpolation |
DE102013202320A1 (de) * | 2013-02-13 | 2014-08-28 | Robert Bosch Gmbh | Verfahren zum Erfassen von Messwerten |
ES2491491B1 (es) * | 2013-03-05 | 2015-06-16 | Vodafone España, S.A.U. | Método para asociar de manera anónima mediciones de un dispositivo de monitorización sanitaria con un ID de usuario |
US20150127284A1 (en) * | 2013-11-03 | 2015-05-07 | Microsoft Corporation | Sensor Data Time Alignment |
WO2015071978A1 (ja) * | 2013-11-13 | 2015-05-21 | 富士通株式会社 | イベント管理プログラム、イベント管理方法および分散システム |
US20150185054A1 (en) * | 2013-12-30 | 2015-07-02 | Motorola Mobility Llc | Methods and Systems for Synchronizing Data Received from Multiple Sensors of a Device |
US10139253B2 (en) * | 2014-04-30 | 2018-11-27 | Google Llc | Adjustment of interrupt timestamps of signals from a sensor based on an estimated sampling rate of the sensor |
US9754552B2 (en) * | 2014-06-17 | 2017-09-05 | Amazon Technologies, Inc. | Architectures for processing of head tracking on a mobile device |
US20160011654A1 (en) * | 2014-07-14 | 2016-01-14 | Samsung Electronics Co., Ltd. | Interfacing apparatus and user input processing method |
CN104158625B (zh) * | 2014-08-13 | 2017-06-06 | 南京铁道职业技术学院 | 一种地铁调度通信的信息传输分发方法 |
CN104378783A (zh) * | 2014-10-24 | 2015-02-25 | 苏州德鲁森自动化***有限公司 | 一种信息通信分发方法 |
US10004979B2 (en) * | 2015-02-26 | 2018-06-26 | Microsoft Technology Licensing, Llc | Sensor data availability from remote devices |
US10188936B2 (en) * | 2015-07-07 | 2019-01-29 | Nimrod Back | Sided game accessory device |
CN105184228A (zh) * | 2015-08-13 | 2015-12-23 | 小米科技有限责任公司 | 移动设备及其屏幕模组、指纹采集方法、装置及电子设备 |
US9332160B1 (en) | 2015-09-09 | 2016-05-03 | Samuel Chenillo | Method of synchronizing audio-visual assets |
US9801202B2 (en) | 2015-09-14 | 2017-10-24 | Uber Technologies, Inc. | Bluetooth device and data scheduler |
CN105222718B (zh) * | 2015-09-21 | 2017-05-17 | 天津大学 | 室内空间测量定位网络动态坐标测量多站数据同步方法 |
US10419540B2 (en) | 2015-10-05 | 2019-09-17 | Microsoft Technology Licensing, Llc | Architecture for internet of things |
TWI570538B (zh) * | 2015-11-02 | 2017-02-11 | 財團法人資訊工業策進會 | 感測裝置、時序校準裝置、時序處理方法及時序校準方法 |
JP6487386B2 (ja) * | 2016-07-22 | 2019-03-20 | ファナック株式会社 | 時刻精度を維持するためのサーバ、方法、プログラム、記録媒体、及びシステム |
US10681198B2 (en) | 2016-09-12 | 2020-06-09 | Nymbus, Llc | Audience interaction system and method |
US11252485B2 (en) * | 2016-11-29 | 2022-02-15 | Nrg Holdings, Llc | Integration of transducer data collection |
JP6710644B2 (ja) * | 2017-01-05 | 2020-06-17 | 株式会社東芝 | 動作解析装置、動作解析方法およびプログラム |
EP3709173B1 (en) * | 2017-11-06 | 2023-12-06 | Nippon Telegraph and Telephone Corporation | Distributed information memory system, method, and program |
US10713935B2 (en) * | 2018-02-23 | 2020-07-14 | Nokia Technologies Oy | Control service for controlling devices with body-action input devices |
US11451931B1 (en) | 2018-09-28 | 2022-09-20 | Apple Inc. | Multi device clock synchronization for sensor data fusion |
US10706274B1 (en) * | 2018-11-02 | 2020-07-07 | Glo Big Boss Limited | Systems and methods for smooth remote pose recovery under noisy network conditions |
CN109857018B (zh) * | 2019-01-28 | 2020-09-25 | 中国地质大学(武汉) | 一种数字传感器软模型*** |
US11368571B1 (en) | 2019-03-06 | 2022-06-21 | Nymbus, Llc | Dense audience interaction device and communication method |
CN112188181B (zh) * | 2019-07-02 | 2023-07-04 | 中强光电股份有限公司 | 图像显示设备、立体图像处理电路及其同步信号校正方法 |
DE102019216517B3 (de) * | 2019-10-25 | 2021-03-18 | Daimler Ag | Verfahren zur Synchronisation zumindest zweier Sensor-Systeme |
KR20220132650A (ko) * | 2020-03-26 | 2022-09-30 | 바이두닷컴 타임즈 테크놀로지(베이징) 컴퍼니 리미티드 | 자율 주행 시스템 중 관성 항법 시스템의 시간 결정 |
US11968602B2 (en) * | 2020-06-30 | 2024-04-23 | Stmicroelectronics S.R.L. | Device, system and method for synchronizing of data from multiple sensors |
US11604439B2 (en) | 2020-12-28 | 2023-03-14 | Waymo Llc | GNSS time synchronization in redundant systems |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316279A (zh) * | 2008-07-09 | 2008-12-03 | 南京邮电大学 | 一种主观兴趣驱动的无线多媒体传感器网络设计方法 |
CN101833452A (zh) * | 2010-04-30 | 2010-09-15 | 中国海洋大学 | 一种基于传感器的监测软件设计方法 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6371921B1 (en) * | 1994-04-15 | 2002-04-16 | Masimo Corporation | System and method of determining whether to recalibrate a blood pressure monitor |
EP1195139A1 (en) | 2000-10-05 | 2002-04-10 | Ecole Polytechnique Féderale de Lausanne (EPFL) | Body movement monitoring system and method |
US7136934B2 (en) | 2001-06-19 | 2006-11-14 | Request, Inc. | Multimedia synchronization method and device |
US7406537B2 (en) | 2002-11-26 | 2008-07-29 | Progress Software Corporation | Dynamic subscription and message routing on a topic between publishing nodes and subscribing nodes |
DE60327073D1 (de) | 2002-02-07 | 2009-05-20 | Ecole Polytech | Körperbewegungsüberwachungsgerät |
EP1528702B1 (en) | 2003-11-03 | 2008-01-23 | Broadcom Corporation | FEC (forward error correction) decoding with dynamic parameters |
US20050234309A1 (en) * | 2004-01-07 | 2005-10-20 | David Klapper | Method and apparatus for classification of movement states in Parkinson's disease |
US20070032748A1 (en) * | 2005-07-28 | 2007-02-08 | 608442 Bc Ltd. | System for detecting and analyzing body motion |
KR100656385B1 (ko) * | 2005-12-21 | 2006-12-11 | 전자부품연구원 | 선형 구조를 가지는 실시간 무선 센서 네트워크 통신방법 |
EP2122965A1 (en) | 2006-12-19 | 2009-11-25 | Telefonaktiebolaget LM Ericsson (PUBL) | Method and apparatuses for making use of virtual ims subscriptions coupled with the identity of a non sip compliant terminal for non-registered subscribers |
EP1970005B1 (en) * | 2007-03-15 | 2012-10-03 | Xsens Holding B.V. | A system and a method for motion tracking using a calibration unit |
US8099512B2 (en) * | 2007-10-19 | 2012-01-17 | Voxer Ip Llc | Method and system for real-time synchronization across a distributed services communication network |
US20090111582A1 (en) * | 2007-10-31 | 2009-04-30 | Motorola, Inc. | Method and Apparatus for Tracking Sports Play |
US20090259711A1 (en) | 2008-04-11 | 2009-10-15 | Apple Inc. | Synchronization of Media State Across Multiple Devices |
US8647287B2 (en) * | 2008-12-07 | 2014-02-11 | Andrew Greenberg | Wireless synchronized movement monitoring apparatus and system |
US8141115B2 (en) | 2008-12-17 | 2012-03-20 | At&T Labs, Inc. | Systems and methods for multiple media coordination |
US20100165205A1 (en) | 2008-12-25 | 2010-07-01 | Kabushiki Kaisha Toshiba | Video signal sharpening apparatus, image processing apparatus, and video signal sharpening method |
US8406217B2 (en) * | 2010-04-16 | 2013-03-26 | Simmonds Precision Products, Inc. | Synchronizing wireless devices using timestamps and relative clock offsets of the wireless devices |
US9014021B2 (en) * | 2010-07-09 | 2015-04-21 | Aruba Networks, Inc. | Correlating data from multiple spectrum monitors |
US20120134282A1 (en) * | 2010-11-30 | 2012-05-31 | Nokia Corporation | Method and apparatus for selecting devices to form a community |
-
2010
- 2010-12-27 US US12/979,140 patent/US9116220B2/en active Active
-
2011
- 2011-12-26 CN CN201110443126.2A patent/CN102571315B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101316279A (zh) * | 2008-07-09 | 2008-12-03 | 南京邮电大学 | 一种主观兴趣驱动的无线多媒体传感器网络设计方法 |
CN101833452A (zh) * | 2010-04-30 | 2010-09-15 | 中国海洋大学 | 一种基于传感器的监测软件设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102571315A (zh) | 2012-07-11 |
US20120163520A1 (en) | 2012-06-28 |
US9116220B2 (en) | 2015-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102571315B (zh) | 一种在设备的范围内同步传感器数据的方法和*** | |
CN103095389B (zh) | 分布式稳健时钟同步 | |
US8990842B2 (en) | Presenting content and augmenting a broadcast | |
US9100667B2 (en) | Life streaming | |
US10419510B2 (en) | Selective capture with rapid sharing of user or mixed reality actions and states using interactive virtual streaming | |
CA2684487C (en) | Collaborative virtual reality system using multiple motion capture systems and multiple interactive clients | |
KR101637990B1 (ko) | 임의의 위치들을 가지는 디스플레이 구성 요소들 상에 3차원 콘텐츠의 공간적으로 상호 연관된 렌더링 | |
CN109407822B (zh) | 协作虚拟现实的防恶心和视频流式传输技术 | |
US10613703B2 (en) | Collaborative interaction with virtual reality video | |
CN109891899A (zh) | 视频内容切换和同步***及用于在多种视频格式之间切换的方法 | |
CN102577368B (zh) | 在虚拟协同***中传送视觉表示 | |
US20180232194A1 (en) | Guided Collaborative Viewing of Navigable Image Content | |
TWI644235B (zh) | Wearable instant interaction system | |
CN107911737A (zh) | 媒体内容的展示方法、装置、计算设备及存储介质 | |
EP4064691A1 (en) | Communication management device, image communication system, communication management method, and carrier means | |
CN106371455B (zh) | 一种智能交互方法和*** | |
US11165842B2 (en) | Selective capture with rapid sharing of user or mixed reality actions and states using interactive virtual streaming | |
CN114124911B (zh) | 直播回声的消除方法、计算机可读存储介质及电子设备 | |
CN117131225A (zh) | 视频处理方法、装置、电子设备及存储介质 | |
GB2565628A (en) | Collaborative interaction with virtual reality video | |
WO2021044851A1 (ja) | 情報処理装置、及び情報処理方法 | |
WO2022001200A1 (zh) | 显示设备 | |
Laibowitz | Creating cohesive video with the narrative-informed use of ubiquitous wearable and imaging sensor networks | |
JP2024008632A (ja) | 情報処理システム、表示方法、プログラム、記録情報作成システム | |
CN114554270A (zh) | 音视频播放方法及其装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150727 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150727 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |