用于同步从设备的多个传感器接收的数据的方法和系统的制作方法
【专利摘要】提供了用于同步从设备的多个传感器接收的数据的示例系统和方法。一种方法可以由具有应用处理器和协同处理器的设备执行,所述应用处理器被配置为基于操作系统运行,所述协同处理器被配置为从所述设备的传感器接收数据。所述方法可以包括:确定由所述设备的传感器产生的中断,以及由所述协同处理器提供指示所述传感器具有用于输出的数据的时间的中断的时间戳。所述方法还包括:接收来自所述传感器的用于输出的所述数据,将由所述传感器产生的所述中断的所述时间戳与所接收的数据相关联,基于所述数据的时间戳来将从所述多个传感器接收的数据一起关联为数据结构,以及基于所述数据的所述时间戳来将所述数据结构依次提供至所述应用处理器。
【专利说明】用于同步从设备的多个传感器接收的数据的方法和系统
【背景技术】
[0001] 除非本文中以其他方式指示,否则在此部分中所描述的材料不是本申请的权利要 求的现有技术并且不会通过在此部分中的包含而被承认为现有技术。
[0002] 传感器融合包括组合传感器数据或从来自独立源的感官数据导出的数据,使得结 果信息更为完整。用于融合过程的数据源可以包括多个孑然不同的传感器。例如,每个传感 器可以提供关于环境中的相同对象或者关于环境中的相同位置的不同信息。通过组合传感 器数据,能够提供更为完整的对象或位置的描绘。作为示例,一个传感器可以包括捕获对象 的图像的相机,另一传感器可以包括位置检测能力以确定用于捕获该图像的设备的位置。 通过组合所述传感器数据,提供了图像数据的特定位置信息。
【发明内容】
[0003] 在一个示例中,提供了一种方法,所述方法由具有应用处理器和协同处理器的设 备执行,所述应用处理器被配置为基于操作系统运行,所述协同处理器被配置为从所述设 备的多个传感器接收数据。所述方法包括:确定由所述设备的所述多个传感器中的给定传 感器产生的中断,以及所述中断指示所述给定传感器具有用于输出的数据。所述方法还包 括:由所述协同处理器提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示 所述给定传感器具有用于输出的数据的时间,以及由所述协同处理器接收来自所述给定传 感器的用于输出的所述数据。所述方法还包括:将由所述给定传感器产生的所述中断的所 述时间戳与来自所述给定传感器的所接收的数据相关联,基于由所述协同处理器提供的所 述数据的时间戳来将从所述多个传感器接收的数据一起关联为数据结构,以及基于所述数 据的所述时间戳来由所述协同处理器将所述数据结构依次提供至所述应用处理器。
[0004] 在另一示例中,提供了一种被配置为存储指令的计算机可读存储器,所述指令当 由具有被配置为基于操作系统运行的应用处理器和被配置为从所述设备的多个传感器接 收数据的协同处理器的设备执行时,使得所述设备执行功能。所述功能包括:确定由所述设 备的所述多个传感器中的给定传感器产生的中断,以及所述中断指示所述给定传感器具有 用于输出的数据。所述功能还包括:由所述协同处理器提供由所述给定传感器产生的所述 中断的时间戳,所述时间戳指示所述给定传感器具有用于输出的数据的时间,以及由所述 协同处理器接收来自所述给定传感器的用于输出的所述数据。所述功能还包括:将由所述 给定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收的数据相关联, 基于由所述协同处理器提供的所述数据的时间戳来将从所述多个传感器接收的数据一起 关联为数据结构,以及基于所述数据的所述时间戳来由所述协同处理器将所述数据结构依 次提供至所述应用处理器。
[0005] 在另一示例中,提供了一种包括应用处理器和协同处理器的设备,所述应用处理 器被配置为基于操作系统运行,所述协同处理器被配置为从所述设备的多个传感器接收数 据以及被配置为执行功能。所述功能包括:确定由所述设备的所述多个传感器中的给定传 感器产生的中断,以及所述中断指示所述给定传感器具有用于输出的数据。所述功能还包 括:提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示所述给定传感器具 有用于输出的数据的时间,接收来自所述给定传感器的用于输出的所述数据,将由所述给 定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收的数据相关联,基 于由所述协同处理器提供的所述数据的时间戳来将从所述多个传感器接收的数据一起关 联为数据结构,以及基于所述数据的所述时间戳来将所述数据结构依次提供至所述应用处 理器。
[0006]这些以及其他方面、优点、和替选方案,通过在适当处参照附图来阅读以下具体实 施方式,对于本领域的普通技术人员将变得显而易见。
【附图说明】
[0007]图1图示了示例计算设备。
[0008]图2图示了另一示例计算设备。
[0009] 图3A至图3B是示出图2中的计算设备的一些传感器的配置的计算设备的概念图 不。
[0010] 图4是根据本文所述的至少一些实施例的用于同步从设备的多个传感器接收的数 据的示例方法的框图。
[0011] 图5A是概念地图示同步从设备的多个传感器接收的数据的示例时序图。
[0012] 图5B是概念地图示同步从设备的多个传感器接收的数据的另一示例时序图。
[0013] 图6是概念地图示同步从设备的多个传感器接收的数据的另一示例时序图。
【具体实施方式】
[0014] 以下【具体实施方式】参照附图描述了所公开的系统和方法的各种特征和功能。在附 图中,除非上下文另有指示,否则相似附图标记标识相似组件。本文所描述的说明性系统和 方法的实施例不意味着限制。可以容易地理解到,所公开的系统和方法的某些方面可以以 各种不同的配置进行布置和组合,所有这些都在本文中被考虑到。
[0015] 示例内,描述了用于同步从设备的多个传感器接收的数据的方法和系统。示例方 法可以由设备来执行,所述设备具有应用处理器和协同处理器,所述应用处理器被配置为 基于操作系统来运行,所述协同处理器被配置为从设备的多个传感器接收数据。示例方法 包括确定设备的多个传感器中的给定传感器所产生的中断,以及所述中断指示该给定传感 器具有用于输出的数据。所述方法还包括:由协同处理器提供由所述给定传感器所产生的 中断的时间戳,所述时间戳指示该给定传感器具有用于输出的数据的时间;以及由协同处 理器接收来自给定传感器的用于输出的数据。所述方法还包括:将由给定传感器产生的中 断的时间戳与来自给定传感器的所接收的数据相关联;以及基于由协同处理器所提供的数 据的时间戳,将从多个传感器接收的数据一起关联为数据结构。所述方法还包括:基于数据 的时间戳,由协同处理器将该数据结构依次提供给应用处理器。
[0016] 在一些现有设备中,传感器数据被提供给应用处理器并且该传感器数据从由该应 用处理器所执行的软件接收时间戳。然而,由于传感器和应用处理器之间通过通信总线的 数据传输或者由于数据的缓冲或排队,在通过软件进行的数据收集和数据时间戳之间有一 些时间流逝,并且因此,时间戳可以是不精确的或者没有跨从多个传感器接收的所有数据 同步。在本文所呈现的示例内,协同处理器可以被配置为对于设备的所有传感器数据提供 基于硬件的时间戳以捕获用于由传感器收集或测量的精确和确切的时间戳。
[0017] 现在参照附图,图1图示了示例计算设备100。在一些示例中,图1中所图示的组件 可以跨多个计算设备分布。然而,为了示例起见,所述组件被示出和描述为一个示例计算设 备100的一部分。计算设备100可以是或包括移动设备(诸如移动电话)、桌面计算机、膝上型 计算机、电子邮件/消息设备、平板式计算机、或可以被配置为执行本文所述的功能的类似 设备。大体上,计算设备100可以是根据本文所述的方法和功能的被配置为发射数据或接收 数据的任何类型的计算设备或发射器。
[0018] 计算设备100可以包括接口 102、无线通信组件104、蜂窝无线电通信组件106、全球 定位系统(GPS)接收器108、(一个或多个)传感器110、数据储存器112、以及(一个或多个)处 理器114。图1中图示的组件可以通过通信链接116来被链接在一起。计算设备100也可以包 括实现计算设备100内的通信以及计算设备100与诸如服务器实体的其他计算设备(未示 出)之间的通信的硬件。例如,所述硬件可以包括发射器、接收器、和天线。
[0019] 接口 102可以被配置为允许计算设备100与诸如服务器的其他计算设备(未示出) 通信。因此,接口 102可以配置为从一个或多个计算设备接收输入数据,并且也可以被配置 为向所述一个或多个计算设备发送输出数据。接口 102可以被配置为根据有线或无线通信 协议来运行。在一些示例中,接口 102可以包括按钮、键盘、触摸屏、(一个或多个)扬声器 118、(一个或多个)麦克风120、和/或用于接收输入的任何其他元件,以及一个或多个显示 器、和/或用于通信输出的任何其他元件。
[0020] 无线通信组件104可以是被配置为促进根据一个或多个无线通信标准的计算设备 100的无线数据通信的通信接口。例如,无线通信组件104可以包括Wi-Fi通信组件,所述WiFi 通信组件被配置为促进根据一个或多个 IEEE 802.11 标准的无线数据通信。作为另一示 例,无线通信组件104可以包括蓝牙通信组件,所述蓝牙通信组件被配置为促进根据一个或 多个蓝牙标准的无线数据通信。其他示例也是可能的。
[0021] 蜂窝无线电通信组件106可以是被配置为促进与蜂窝无线基站的无线连接(语音 和/或数据)以提供对网络的移动连接的通信接口。例如,蜂窝无线电通信组件106可以被配 置为连接至计算设备100所位于的小区的基站。
[0022] GPS接收器108可以被配置为通过由GPS卫星发送的精确计时信号来估计计算设备 100的位置。
[0023](-个或多个)传感器110可以包括一个或多个传感器,或者可以表示包括在计算 设备100内的一个或多个传感器。示例传感器包括加速度计、陀螺仪、计步器、光传感器、麦 克风、(一个或多个)相机、红外闪光灯、气压计、磁力计、GPS、WiFi、近场通信(NFC)、蓝牙、投 影仪、深度传感器、温度传感器、或者其他位置和/或情境感知(context-aware)传感器。 [0024]数据储存器112可以存储能够由(一个或多个)处理器114存取和执行的编程逻辑 122。数据储存器112也可以存储由(一个或多个)传感器110所收集的数据,或者由无线通信 组件104、蜂窝无线电通信组件106、和GPS接收器108中的任何一个所收集的数据。
[0025](一个或多个)处理器114可以被配置为接收由(一个或多个)处理器110中的任何 一个所收集的数据并且基于该数据来执行任何数目的功能。作为示例,(一个或多个)处理 器114可以被配置为使用一个或多个位置确定组件来确定计算设备100的一个或多个地理 位置估计,所述位置确定组件诸如无线通信组件104、蜂窝无线电通信组件106、或者GPS接 收器108。(一个或多个)处理器114可以基于计算设备100的无线范围内一个或多个已知无 线接入点的存在和/或位置使用位置确定算法来确定计算设备100的位置。在一个示例中, 无线位置组件104可以确定一个或多个无线接入点的身份(例如MAC地址)并且测量从所述 一个或多个无线接入点中的每一个无线接入点所接收的信号的强度(例如,所接收信号强 度指示)。来自每个独特无线接入点的所接收信号强度指示(RSSI)可以被用于确定到每个 无线接入点的距离。然后可以将该距离与存储关于每个独特无线接入点位于哪里的信息的 数据库进行比较。基于到每个无线接入点的距离以及所述无线接入点中的每个无线接入点 的已知位置,可以确定计算设备100的位置估计。
[0026]在另一实例中,(一个或多个)处理器114可以基于邻近蜂窝基站使用位置确定算 法来确定计算设备100的位置。例如,蜂窝无线电通信组件106可以被配置为识别计算设备 100正从其或最近一次从其接收来自蜂窝网络的信号的小区。蜂窝无线电通信组件106也可 以被配置为测量到提供信号的基站的往返时延(RTT),并且将此信息与所识别的小区组合 以确定位置估计。在另一示例中,蜂窝通信组件106可以被配置为使用离三个或更多个基站 的观察到达时间差(OTDOA)来估计计算设备100的位置。
[0027] 在一些实施方式中,计算设备100可以包括设备平台(未示出),其可以被配置为多 层的Linux平台。设备平台可以包括不同应用和应用框架,以及各种内核、库、和运行时实 体。在其他示例中,其他格式或操作系统也可以操作计算设备100。
[0028] 通信链接116被图示为有线连接,然而,也可以使用无线连接。例如,通信链接116 可以是:除其他可能性之外,诸如通用串行总线或并行总线的有线串行总线,或者使用例如 短程无线无线电技术、或IEEE 802.11中所描述的通信协议(包括任何IEEE 802.11修订)的 无线连接。
[0029] 计算设备100可以包括更多或更少的组件。此外,本文所述的示例方法可以由计算 设备100的组件单独执行,或者由计算设备100的组件中的一个或全部组件来组合执行。 [00 30]图2图示了另一示例计算设备200。图2中的计算设备200可以表示图1中示出的计 算设备100的一部分。在图2中,计算设备200被示出为包括多个传感器,诸如:包括陀螺仪 204和加速度计206的惯性测量单元(MU)202、全局快门(GS)相机208、滚动快门(RS)相机 210、前置相机212、红外(IR)闪光灯214、气压计216、磁力计218、GPS接收器220、WiFi/NFC/ 蓝牙传感器222、投影仪224、深度传感器226、以及温度传感器228,其中的每个输出至协同 处理器230。协同处理器230从应用处理器232接收输入以及向其输出。计算设备220可以进 一步包括向应用处理器232直接输出的第二頂U 234。
[0031] MU 202可以被配置为基于陀螺仪204和加速度计206的输出来确定计算设备200 的速度、定向、和重力。
[0032] GS相机208可以被配置在计算设备200上以作为后置相机,以便背对着计算设备 200的正面。GS相机208可以被配置为同时读取相机208的所有像素的输出。GS相机208可以 被配置为具有大约120至170度的视场,GS相机208诸如用于广角观察的鱼眼传感器。
[0033] RS相机210可以被配置为从像素显示的顶部到像素显示的底部读取像素的输出。 作为一个示例,RS相机210可以是红/绿/蓝(RGB)红外(IR)4百万像素的图像传感器,然而其 他传感器也是可能的。例如,RS相机210可以具有快速曝光以便使用大约5.5ms的最小读出 时间来操作。与GS相机208相似,RS相机210可以是后置相机。
[0034]相机212可以是计算设备200中的附加相机,其被配置为前置相机或者被配置在朝 向与GS相机208和RS相机210相对的方向上。相机212可以被配置为捕获计算设备200的第一 视角的图像,并且GS相机208和RS相机210可以被配置为捕获与第一视角相对的设备的第二 视角的图像。例如,相机212可以是广角相机,并且可以具有大约120至170度的视场以用于 广角观察。
[0035] IR闪光灯214可以为计算设备200提供光源,以及例如,可以被配置为以朝向计算 设备200后方的方向来输出光以便为GS相机208和RS相机210提供光。在一些示例中,IR闪光 灯214可以被配置为以诸如5Hz的低占空比周期闪光,或者如由协同处理器230或应用处理 器232所指导的以非连续方式闪光。例如,IR闪光灯214可以包括被配置用于移动设备的LED 光源。
[0036]图3A至图3B是示出图2中的计算设备200的一些传感器的配置的计算设备300的概 念图不。在图3A至图3B中,计算设备300被不出为移动电话。计算设备300可以与图1中内的 计算设备100或图2中的计算设备200相似。图3A图示了计算设备300的正面,在其中提供了 显示器302、以及前置相机304和P/L传感器开口 306(例如接近传感器或光传感器)。前置相 机304可以是如图2中所描述的相机212。
[0037]图3B图不了显不设备300的背面308,在其中提供了后置相机310和另一个后置相 机314。如图2中的计算设备200中所描述的,后置相机310可以是RS相机210以及后置相机 312可以是GS相机208。计算设备300的背面308还包括IR闪光灯314,其可以是图2中的计算 设备200中所描述的IR闪光灯214或投影仪224。在一个示例中,IR闪光灯214和投影仪224可 以是相同的一个。例如,单个IR闪光灯可以被用于执行IR闪光灯214和投影仪224的功能。在 另一示例中,计算设备300可以包括位于后置相机310附近的第二闪光灯(例如LED闪光灯) (未示出)。例如,传感器的配置和放置可以有助于提供计算设备300的所期望的功能,然而 其他配置也是可能的。
[0038] 再参照图2,气压计216可以包括压力传感器、且可以被配置为确定空气压力和高 度变化。
[0039] 磁力计218可以被配置为提供计算设备的翻转、偏航、和倾斜测量,以及例如,能够 被配置为作为内部罗盘来操作。在一些示例中,磁力计218可以是頂U 202的组件(未示出)。
[0040] GPS接收器220可以与图1的计算设备100中所描述的GPS接收器108相似。在其他示 例中,GPS 220也可以输出从GPS卫星或其他网络实体所接收的计时信号。这样的计时信号 可以被用于使从跨包括相同卫星时间戳的多个设备的传感器所收集的数据同步。
[0041] WiFi/NFC/蓝牙传感器222可以包括无线通信组件,所述无线通信组件被配置为根 据如上面关于图1的计算设备100所讨论的WiFi和蓝牙标准来操作,以及根据用于经由与其 他设备接触或进入其附近来建立与其他设备的无线通信的NFC标准来操作。
[0042] 投影仪224可以是或包括具有激光器的结构光投影仪,所述激光器具有在环境中 产生点图案的图案生成器。投影仪224可以被配置为结合RS相机210来操作以恢复关于环境 中的对象深度的信息,诸如对象的三维(3D)特性。例如,分离的深度传感器226可以被配置 为在环境光条件下以3D方式捕获点图案的视频数据以感测环境中的对象的距离。投影仪 224和/或深度传感器226可以被配置为基于所投影的点图案来确定对象的形状。通过示例 的方式,深度传感器226可以被配置为使得投影仪224产生点图案并且使得RS相机210捕获 该点图案的图像。然后,深度传感器226可以处理该点图案的图像、使用各种算法来进行三 角剖分并提取3D数据的、以及将深度图像输出至协同处理器230。
[0043] 温度传感器228可以被配置为测量温度或温度梯度,例如,诸如计算设备200的周 围环境的温度变化。
[0044]协同处理器230可以被配置为控制计算设备200上的所有传感器。在示例中,协同 处理器230可以控制相机208、210、和212中的任何一个相机的曝光时间以匹配IR闪光灯 214,控制投影仪224脉冲同步、持续时间、和强度,以及在总体上,控制传感器的数据捕获或 收集时间。协同处理器230也可以被配置为将来自任何传感器的数据处理为对于应用处理 器232合适的格式。在一些示例中,协同处理器230将与相同时间戳或数据收集时间(或时间 段)相对应的来自任何传感器的所有数据合并为单个数据结构以提供给应用处理器232。 [0045]应用处理器232可以被配置为控制计算设备200的其他功能,诸如配置为控制计算 设备200以根据存储在计算设备200上的操作系统或任何数目的软件应用来操作。应用处理 器232可以使用由传感器收集的数据和从协同处理器接收的数据来执行任何数目的类型的 功能。应用处理器232可以接收协同处理器230的输出,以及在一些示例中,应用处理器232 也可以从包括GS相机208和RS相机210的其他传感器接收原始数据输出。
[0046]第二MU 234可以将所收集的数据直接输出至应用处理器232,所述数据可以由应 用处理器232接收并且被用于触发其他传感器来开始收集数据。作为示例,第二頂U 234的 输出可以指示计算设备200的运动,以及当计算设备200处于运动中时,可以期望其收集图 像数据、GPS数据等。因此,应用处理器232能够通过公共总线上的通信信令来触发其他传感 器在頂U 234的输出指示运动的时候收集数据。
[0047]图2中示出的计算设备200可以包括传感器和处理器中的每个之间的多个通信总 线。例如,协同处理器230可以通过包括用于通信的多主机串行单端总线的内置集成电路 (I2C)总线来与MU 202、GS相机208、以及RS相机212中的每个进行通信。协同处理器230可 以通过相同的I2C总线或单独的通信总线来接收由MU 202、GS相机208、以及RS相机212中 的每个所收集、测量、或检测的原始数据。协同处理器230可以通过多个通信总线来与应用 处理器232通信,所述通信总线包括:包括可以以全双工模式操作的同步串行数据链接的串 行外设接口(SPI)总线,I2C总线,以及包括配置用于传送相机或像素信息的移动产业处理 器接口(MIPI)。例如,可以基于对数据通信的速度的需求以及由相应通信总线所提供的带 宽来确定各种总线的使用。
[0048] 图4为根据本文所述的至少一些实施例的用于同步从设备的多个传感器接收的数 据的示例方法的框图。例如,图4中示出的方法400呈现了方法的一个实施例,所述实施例能 够利用图1中的计算设备100、图2中的计算设备200、或者图3中的计算设备300来使用,或者 例如,可以由图1中的计算设备100、图2中的计算设备200、或者图3中的计算设备300中的任 何组件的组合来执行。方法400可以包括如框402至框412中的一个或多个所示的一个或多 个操作、功能、或动作。尽管以序列顺序图示了所述框,但是在一些实例中这些框可以被并 行执行,和/或以与本文所述的这些不同的顺序来执行。此外,各个框可以组合为较少的框, 划分为额外的框,和/或基于所期望的实施方式被移除。
[0049] 此外,对于本文所公开的方法400以及其他过程和方法而言,流程图示出了本实施 例的一个可能的实施方式的功能和操作。在这方面,每个框可以表示模块、区段、或程序代 码的一部分,其包括用于实现过程中的特定逻辑功能或步骤的可由处理器执行的一个或多 个指令。例如,程序代码可以被存储在任何类型的计算机可读介质上,诸如包括盘或硬盘驱 动器的存储设备。例如,计算机可读介质可以包括非暂时性计算机可读介质,诸如在短时间 段内存储数据的计算机可读介质,如寄存器存储器、处理器高速缓存和随机存取存储器 (RAM)。例如,计算机可读介质也可以包括其他非暂时性介质,诸如二级存储或持久性长期 存储,如只读存储器(ROM)、光盘或磁盘、光盘只读存储器(CD-ROM)。计算机可读介质也可以 是任何其他暂时性或非暂时性存储系统。例如,计算机可读介质也可以被视为计算机可读 存储介质、有形存储设备、或其他制品。例如,程序代码(或代码的数据)也可以被存储在或 被提供在包括通信介质的其他介质上,诸如无线通信介质。
[0050] 此外,对于本文所公开的方法400以及其他过程和方法而言,图4中的每个框可以 表示被线连以执行过程中的特定逻辑功能的电路。
[0051] 方法400的功能可以完全由计算设备来执行,或者可以跨多个计算设备和/或服务 器分布。在一些示例中,计算设备可以从计算设备的传感器接收信息,或者在计算设备是服 务器的情况下,能够从收集信息的另一设备接收信息。例如,计算设备还可以与服务器通信 以接收来自其他设备的传感器的信息。方法400还可以由设备来执行,所述设备具有应用处 理器和协同处理器,所述应用处理器被配置为基于操作系统来运行,以及所述协同处理器 被配置为从设备的多个传感器接收数据。传感器可以包括如上文中图1、图2、或图3A至图3B 中的任何一个中所述的任何传感器,例如包括MU、全局快门相机、滚动快门相机、结构光投 影仪、深度相机、红外闪光灯、气压计、磁力计、以及温度传感器。
[0052]在框402处,方法400包括确定由设备的多个传感器中的给定传感器所产生的中 断。该中断指示该给定传感器具有用于输出的数据。作为示例,协同处理器可以从传感器接 收指示该中断的信号,诸如包括被设置为真的标记的信号。例如,在传感器执行感测功能之 后,该传感器可以一旦具有用于输出的数据就发送信号。传感器可以基于该传感器内部地 执行数据收集或者基于被触发以执行数据收集来具有用于输出的数据。
[0053] 在框404处,方法400包括由协同处理器提供由给定传感器产生的中断的时间戳, 所述时间戳指示该给定传感器具有用于输出的数据的时间。例如,在协同处理器确定中断 的时候,协同处理器生成中断的时间戳,并且将该时间戳连同指示传感器提供中断的其他 元数据与该中断一起存储。这样,协同处理器标记了传感器收集数据的确切时间。
[0054]作为另一个示例,对于相机而言,由于图像捕获需要时间来使图像曝光,图像捕获 可能不会在时间上的离散点处发生。可以期望确定与曝光的开始、中间、或结束相对应的图 像的时间戳。例如,对于从顶部至底部曝光的RS相机而言,图像的顶部部分比该图像的底部 部分在时间上较早出现,且图像可以与仅一个时间戳相关联,因此协同处理器能够生成中 心曝光时间的时间戳以最小化图像的顶部部分与底部部分之间的时间差。例如,协同处理 器可以知道相机的曝光时间并且能够基于相机一旦被触发捕获图像其曝光时间的平均值 来生成处于中心曝光时间的时间戳。
[0055] 在框406处,方法400包括由协同处理器从给定传感器接收用于输出的数据。因此, 在生成时间戳之后,协同处理器能够从传感器取得数据。可以沿计算设备内的任何数目的 通信总线来将数据从传感器提供至协同处理器。数据传输能够发生在例如大约10-30ms的 时间段内。因此,协同处理器能够从与中断对应的传感器请求数据。因为对传感器数据的请 求可能缓慢且花时间,而且数据处理可能需要精确的时间戳,因此标记时间戳和数据取得 被分别执行。因此,中断被用于作为生成时间戳的标记,以及之后随后执行数据获取。
[0056]在框408处,方法400包括将由给定传感器产生的中断的时间戳与从该给定传感器 接收的数据相关联。以这种方式,协同处理器能够将数据被传感器收集时的时间与该数据 相关联,而不是将在协同处理器处的接收到数据的时间作为数据采集时间来关联。由于从 传感器到协同处理器的数据传输要消耗一些时间,因此基于先前所接收的中断的时间戳来 提供传感器收集数据时的确切时间戳。
[0057]在框410处,方法400包括基于由协同处理器提供的数据的时间戳来将从多个传感 器接收的数据一起关联为数据结构。例如,协同处理器可以从设备的许多传感器接收数据, 并且能够基于对于协同处理器所提供的中断而生成的时间戳来组织所述数据。对于由协同 处理器从传感器接收并且与相同时间的中断时间戳相关联的数据,这样的数据能够被关联 在一起或者一起被格式化为一个数据结构。
[0058]数据能够被格式化在任何数目的类型的数据结构内。在一个示例中,可以将数据 存储在一个文件内,该文件指示数据的类型、收集数据的传感器、以及数据的时间戳。在另 一示例中,数据能够被格式化在图像帧格式数据结构内,其中,数据被存储为用于给定时间 戳的像素值。图像帧格式可以采用用于跨相机接口的传统传输的"RGB"或"YUV"传输数据类 型的形式。
[0059]在框412处,方法400包括基于数据的时间戳来由协同处理器将数据结构依次提供 至应用处理器。然后,应用处理器可以随着数据被收集依次接收到数据。
[0060]在示例内,使用图4中的方法400,基于由专用于时间戳/同步所有传感器数据的协 同处理器提供的时间戳来提供传感器所收集的数据的精确计时。基于所同步的传感器数据 来执行的功能可以由应用处理器来执行。由于所有数据由根据主时钟来运行的相同协同处 理器来标记时间戳,因此所有传感器数据基于相同时钟来进行同步以便提供硬件级时间同 步。此外,基于中断来生成时间戳,以及因此时间戳是传感器进行数据收集的时间而不是在 协同处理器处的接收到数据的时间。
[0061 ] 在一些示例中,方法400可以进一步包括由协同处理器在将从多个传感器接收到 的数据一起关联至数据结构内之前,将从MU接收的数据提供至应用处理器,以及随后将该 数据结构提供至应用处理器。頂U可以以比其他传感器更高的频率收集数据,并且MU数据 可以比其他数据对应用处理器更为有用。因此,协同处理器能够生成IMU数据的时间戳、取 得頂U数据、并且先于与相同时间戳相关联的其他数据来立即将頂U数据提供至应用处理器 以使得应用处理器能够具有用于执行时间敏感功能的数据。
[0062] 计算设备可以包括用于应用处理器与协同处理器之间的通信的总线,以及另一总 线,该另一总线用于协同处理器与具有小于应用处理器与协同处理器之间的通信的时延的 传感器之间的通信。在一些实例中,协同处理器可以从MU接收数据并且将该数据提供至相 同总线上的应用处理器以便更快地将数据提供至应用处理器。总线可以是作为用于MU数 据的高速低时延通信信道。然后,例如,更大量数据的数据结构能够被集合并提供至I2C总 线上的应用处理器,该I2C总线允许更大带宽的数据传输。例如,应用处理器可以通过快速 单独接收頂U数据而受益。
[0063]在其他示例中,设备可以包括多个相机,协同处理器可以向第一相机提供请求从 第一相机输出的数据的触发信号。所述触发信号能够经由第一相机而被设备的其他相机接 收,以便致使图像的捕获处于同步。作为示例,一个相机可以是RS相机且另一个相机可以是 GS相机。能够在大约RS相机的中心曝光时间向GS相机提供触发信号以便致使GS相机的曝光 发生在大约RS相机的中心曝光时间。
[0064] 传感器也可以包括红-绿-蓝(RGB)相机和红外(IR)相机。IR传感器可以被配置为 以小于RGB相机的输出频率的频率来输出数据。因此,当与来自传感器的数据一起关联时, 能够基于由协同处理器提供的相应数据的时间戳来使IR传感器的数据输出与RGB相机所输 出的数据相交织。作为示例,对于来自IR传感器的深度数据的每一帧,可以接收来自相机的 大约四帧图像数据。
[0065] 在其他示例中,传感器可以以第一频率输出数据,能够由协同处理器以小于第一 频率的第二频率来将数据一起关联至数据结构内。例如,传感器可以以比用于传送数据的 相机帧速率更快地来输出数据,并且因此,协同处理器可以以更低频率在数据结构内提供 最新近的MU数据样本(其可以被配置为在120Hz下运行)以便在一个数据结构内提供多个 IMU样本。
[0066] 在一些示例中,传感器可以包括用于存储最近收集的数据的缓冲器,并且传感器 可以提供所收集的当前数据以及先前数据以用于向协同处理器输出。由于先前数据很可能 先前已由协同处理器接收,因此先前数据可以是被接收用于误差校正的冗余数据。例如, 頂U可以具有冗余頂U数据的运行缓冲器,并且替代仅从頂U拉取最新的数据,协同处理器能 够从缓冲器收集所有数据以接收来自MU的最新近的X数目的样本。如果在数据传输期间数 据帧曾经丢失或损坏,则能够使用在下一数据帧中所接收的由协同处理器接收的冗余数据 来填充丢失的数据。作为示例,如果计算设备正在以每秒30度的速度旋转,并且数据帧丢 失,则可能不知道计算设备的确切位置和定向(即,位置/定向估计现在可能与设备实际所 处之处相差若干度)。通过提供冗余数据,能够识别来自IMU的遗失或丢失的数据以对设备 的任何位置/定向估计进行校正。
[0067] 图5A是概念地图示同步从设备的多个传感器接收的数据的示例时序图。如图所 示,传感器502可以向协同处理器504提供中断,此时协同处理器504将生成时间戳。多个传 感器可以同时或以各种时间间隔来向协同处理器504提供中断,并且在接收到中断时,协同 处理器504将生成相关联的时间戳。之后,协同处理器504可以从传感器502请求与该中断相 对应的数据,并且随后从传感器502接收数据。在其他示例中,由于传感器502将在提供中断 之后提供数据,因此协同处理器504可能不需要从传感器502请求数据。在接收到传感器数 据后,协同处理器可以通过将中断时间戳与对应的传感器数据相匹配来将时间戳与相应的 数据相关联,并且之后将每时间戳的传感器数据组合为每时间戳的单个数据结构。协同处 理器504随后可以将数据结构依次提供至应用处理器506。
[0068] 图5B是概念地图示同步从设备的多个传感器接收的数据的另一示例时序图。在图 5B中,传感器502可以向协同处理器504提供中断,在这个时候协同处理器504将生成时间 戳。多个传感器可以同时或以各种时间间隔来向协同处理器504提供中断,并且在接收到中 断时,协同处理器504将生成相关联的时间戳。之后,协同处理器504可以从传感器502请求 与该中断相对应的数据,并且随后传感器502可以将数据转发至应用处理器508。之后,协同 处理器504可以将时间戳数据发送至应用处理器508。在接收到数据后,应用处理器508可以 通过将中断时间戳与对应的传感器数据相匹配来将时间戳与相应的数据相关联,并且之后 将每时间戳的传感器数据组合为每时间戳的单个数据结构。
[0069] 图6是概念地图示同步从设备的多个传感器接收的数据的另一示例时序图。在图6 中,将两个时间线示出为与由MU输出的数据的时间线和协同处理器的时间轴相对应。MU 可以沿MJ数据时间轴以所示间隔来输出数据。基于由MJ向协同处理器提供的数据就绪中 断来相对于协同处理器时间轴对每个頂U数据分组标记时间戳。
[0070] 同样沿协同处理器时间轴示出了 RS相机和GS相机的示例RS曝光时间和GS曝光时 间。由于RS曝光从图像的顶部至底部发生,因此在比GS相机的曝光更长的时间段上进行曝 光。例如,RS相机可以以30Hz的频率操作。GS相机触发时间被设置为与RS相机的中心扫描线 的曝光一致,使得GS相机和RS相机曝光的中心在时间上对齐。例如,RS相机可能需要30ms来 捕获图像,且GS相机可能仅需要20ms,并且因此,能够将GS触发时间设置为RS曝光时间之后 的5ms以使得GS相机和RS相机曝光时间的中心对齐。则可以将GS相机的触发时间表示如下: [0071] GS触发时间=RS曝光开始时间+1/2RS曝光时间-1/2GS曝光时间
[0072]相机的中心扫描线是由协同处理器针对相机图像来产生的时间戳,其例如是根据 相机标记了时间戳的终读出并减去确定性读出以及该帧的曝光时间来确定的。
[0073]协同处理器以同步的方式来从相机和MU二者捕获数据,并且之后将数据组合为 数据结构以提供至应用处理器。数据结构可以是图像帧格式。图6图示了单个帧包括来自RS 相机的图像、来自GS相机的图像、以及来自頂U的大约四至五个输出。由于MU运行得比相机 更快,因此MU数据可以更快地累积并且例如能够单独被提供给应用处理器以供立即使用。 [0074]因此,一旦分组就绪并且以IMU的帧速率标记了时间戳,IMU数据就可以被记录 (即,如果MU被设置为IOOHz模式,则可以以IOOHz来读出頂U分组,并且MU分组上的对应的 协同处理器时间戳能够以IOOHz发生)。之后頂U数据可以与其中封装了的MU数据的图像帧 进行时间对准。例如,帧中的第一IMU数据分组与GS相机的图像触发时间相对应。在其他示 例中,下面的表格示出了当相机以30Hz(近似为表格中33ms的差量t)运行且頂U以120Hz(近 似为表格中8ms的差量t)运行时的图像与被封装在帧中的IMU数据的示例集合。
[0076] RS相机和GS相机这两者可以在它们相应的曝光开始时相对于协同处理器时间轴 来标记时间戳。RS相机和GS相机的曝光时间这两者也被记录以计算曝光的开始、中间、和结 束。
[0077] 在其他示例中,图像帧还可以包括附加数据,诸如来自先前帧的数据。作为示例, 帧2可以包括帧2的所有数据以及帧1内的所有数据,并且帧2内的来自帧1的重新发送的数 据的冗余能够被用于误差校正或数据验证。
[0078] 在本文所描述的示例内,来自传感器的数据输出能够与和数据被传感器所收集的 时间相对应的数据的确切时间戳相关联,以及来自多个传感器的数据能够被同步为数据结 构。在一些示例中,这使得能够将指示设备运动的数据(例如,由陀螺仪输出的数据)与相机 图像进行同步。来自设备的所有传感器的传感器数据能够在没有任何软件时间戳延迟或不 精确的情况下,被精确同步以取得传感器的读出以及将在相同时间收集的来自所有传感器 的数据一起匹配为数据结构。
[0079] 应当理解,本文所述的布置仅出于示例目的。因此,本领域技术人员将意识到,其 他布置和其他要素(例如,机器、接口、功能、顺序、和功能的群组等)能够作为替代来使用, 并且根据所期望的结果可以完全省略一些要素。此外,所描述的要素中的许多是功能实体, 所述功能实体可以被实现为在任何合适的组合或位置中的离散或分布式组件,或与其他组 件结合,或者可以组合被描述为独立结构的其他结构化组件。
[0080] 尽管本文已经公开了各个方面和实施例,但是其他方面和实施例对于本领域技术 人员将是显而易见的。本文所公开的各个方面和实施例出于说明性目的并且不旨在进行限 制,其中由所附权利要求书指示真正的范围,以及这样的权利要求所享有的等同物的全部 范围。还应当理解,本文所使用的术语仅为了描述特定实施例,并且不旨在进行限制。
【主权项】
1. 一种由具有应用处理器和协同处理器的设备执行的方法,所述应用处理器被配置为 基于操作系统运行,且所述协同处理器被配置为从所述设备的多个传感器接收数据,所述 方法包括: 确定由所述设备的所述多个传感器中的给定传感器产生的中断,其中,所述中断指示 所述给定传感器具有用于输出的数据; 由所述协同处理器提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示 所述给定传感器具有用于输出的所述数据的时间; 由所述协同处理器从所述给定传感器接收用于输出的所述数据; 将由所述给定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收 数据相关联; 基于由所述协同处理器提供的所述数据的时间戳,来将从所述多个传感器接收的所述 数据一起关联至数据结构中;以及 由所述协同处理器基于所述数据的所述时间戳,来将所述数据结构依次提供至所述应 用处理器。2. 根据权利要求1所述的方法,进一步包括,其中,所述数据结构包括图像帧格式。3. 根据权利要求1所述的方法,其中,所述多个传感器中的一个传感器包括惯性测量单 元IMU,以及其中,所述方法进一步包括: 在将从所述多个传感器接收的所述数据一起关联至所述数据结构中之前,由所述协同 处理器将从所述MU接收的数据提供至所述应用处理器;以及 随后将所述数据结构提供至所述应用处理器。4. 根据权利要求1所述的方法,其中,所述设备包括第一总线和第二总线,所述第一总 线用于所述应用处理器与所述协同处理器之间的通信,且所述第二总线用于所述协同处理 器与所述多个传感器之间的通信,其中,所述第二总线被配置用于具有小于所述第一总线 上的通信的时延的通信,以及其中,所述方法进一步包括: 由所述协同处理器将从所述多个传感器的惯性测量单元MU接收的数据经由所述第二 总线提供至所述应用处理器;以及 由所述协同处理器将所述数据结构经由所述第一总线提供至所述应用处理器。5. 根据权利要求1所述的方法,进一步包括:除来自所述给定传感器的用于输出的所述 数据以外,还从所述给定传感器的缓冲器接收用于由所述给定传感器输出的先前数据,其 中所述先前数据是被接收用于误差校正的冗余数据。6. 根据权利要求5所述的方法,其中,所述给定传感器被配置为以第一频率输出数据, 以及所述方法进一步包括: 由所述协同处理器以第二频率将从所述多个传感器接收的数据一起关联至数据结构 中,其中,所述第一频率大于所述第二频率;以及在所述数据结构中提供来自所述给定传感 器的所述缓冲器的用于输出的所接收的先前数据。7. 根据权利要求1所述的方法,其中,所述设备的所述多个传感器包括多个相机,以及 其中,所述方法进一步包括: 由所述协同处理器将触发信号提供至所述多个相机中的第一相机,其中,所述触发信 号请求从所述第一相机输出的数据,其中,所述触发信号经由所述第一相机来被所述多个 相机中的其他相机接收,以便致使同步地捕获图像。8. 根据权利要求7所述的方法,其中,所述第一相机是滚动快门相机且第二相机是全局 快门相机,以及所述方法进一步包括: 在所述第一相机的大约中心曝光时间,将所述触发信号提供至所述第二相机,以便致 使所述第二相机的曝光处于所述第一相机的大约中心曝光时间处。9. 根据权利要求1所述的方法,其中,所述多个传感器包括红-绿-蓝RGB相机和红外IR 传感器,以及其中所述RGB相机被配置为以第一频率输出数据且所述IR相机被配置为以小 于所述第一频率的第二频率输出数据,以及所述方法进一步包括: 基于由所述协同处理器提供的相应数据的时间戳,来使由所述IR传感器输出的数据与 由所述RGB相机输出的数据相交织。10. 根据权利要求1所述的方法,其中,所述多个传感器包括惯性测量单元IMU、全局快 门相机、滚动快门相机、结构光投影仪、深度相机、红外闪光灯、气压计、磁力计、以及温度传 感器。11. 根据权利要求1所述的方法,其中,所述多个传感器包括三个相机,其中,第一相机 是前置相机,且第二相机和第三相机中每个是后置相机,其中,所述前置相机被配置为捕获 所述设备的第一视角的图像,以及所述后置相机被配置为捕获与所述第一视角相对的所述 设备的第二视角的图像。12. 根据权利要求1所述的方法,其中,所述给定传感器包括GPS传感器,所述GPS传感器 被配置为输出数据,所述数据指示所述设备的位置以及从网络实体所接收的所述位置的时 间戳,以及所述方法进一步包括: 基于从所述网络实体所接收的所述位置的所述时间戳,来将所述位置与所述时间戳关 联至给定数据结构中。13. -种被配置为存储指令的计算机可读存储器,所述指令当由具有被配置为基于操 作系统运行的应用处理器和被配置为从所述设备的多个传感器接收数据的协同处理器的 设备执行时,使得所述设备执行功能,所述功能包括: 确定由所述设备的所述多个传感器中的给定传感器产生的中断,其中,所述中断指示 所述给定传感器具有用于输出的数据; 由所述协同处理器提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示 所述给定传感器具有用于输出的所述数据的时间; 由所述协同处理器从所述给定传感器接收用于输出的所述数据; 将由所述给定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收 的所述数据相关联; 基于由所述协同处理器提供的所述数据的时间戳,来将从所述多个传感器接收的所述 数据一起关联至数据结构中;以及 由所述协同处理器基于所述数据的所述时间戳,来将所述数据结构依次提供至所述应 用处理器。14. 根据权利要求13所述的计算机可读存储器,其中,所述多个传感器中的一个传感器 包括惯性测量单元IMU,以及其中,所述方法进一步包括: 在将从所述多个传感器接收的所述数据一起关联至所述数据结构中之前,由所述协同 处理器将从所述MU接收的数据提供至所述应用处理器;以及 随后将所述数据结构提供至所述应用处理器。15. 根据权利要求13所述的计算机可读存储器,其中,所述功能进一步包括: 除来自所述给定传感器的用于输出的所述数据以外,还从所述给定传感器的缓冲器接 收用于由所述给定传感器输出的先前数据,其中所述先前数据是被接收用于误差校正的冗 余数据;以及 由所述协同处理器将从所述给定传感器的所述缓冲器所接收的用于输出的所述先前 数据关联至所述数据结构中。16. 根据权利要求13所述的计算机可读存储器,其中,所述设备的所述多个传感器包括 滚动快门相机和全局快门相机,以及所述功能进一步包括: 由所述协同处理器在所述滚动快门相机的大约所述中心曝光时间将触发信号提供至 所述滚动快门相机,其中,所述触发信号请求从所述滚动快门相机输出的数据; 其中,所述触发信号经由所述滚动快门相机来被所述全局快门相机接收,以便致使在 所述滚动快门相机的大约所述中心曝光时间由所述滚动快门相机和所述全局快门相机进 行图像的捕获。17. 根据权利要求13所述的计算机可读存储器,其中,所述多个传感器包括红-绿-蓝 (RGB)相机和红外(IR)传感器,以及其中所述RGB相机被配置为以第一频率输出数据且所述 IR相机被配置为以小于所述第一频率的第二频率来输出数据,以及所述功能进一步包括: 基于由所述协同处理器提供的相应数据的时间戳,来使由所述IR传感器输出的数据与 由所述RGB相机输出的数据相交织。18. -种设备,包括: 应用处理器,所述应用处理器被配置为基于操作系统来运行; 多个传感器;以及 协同处理器,所述协同处理器被配置为从所述多个传感器接收数据,以及其中,所述协 同传感器被配置为执行功能,所述功能包括: 确定由所述多个传感器中的给定传感器产生的中断,其中,所述中断指示所述给定传 感器具有用于输出的数据; 提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示所述给定传感器具 有用于输出的所述数据的时间; 从所述给定传感器接收用于输出的所述数据; 将由所述给定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收 数据相关联; 基于由所述协同处理器提供的所述数据的时间戳,来将从所述多个传感器接收的所述 数据一起关联至数据结构中;以及 基于所述数据的所述时间戳,来将所述数据结构依次提供至所述应用处理器。19. 根据权利要求18所述的设备,其中,所述协同处理器被配置为:将从所述多个传感 器接收的所述数据一起关联至具有图像帧格式的所述数据结构中。20. 根据权利要求18所述的设备,其中,所述多个传感器中的一个传感器包括惯性测量 单元MU,以及其中,所述协同处理器被进一步配置为: 在将从所述多个传感器接收的所述数据一起关联至所述数据结构中之前,将从所述 MU接收的数据提供至所述应用处理器;以及 随后将所述数据结构提供至所述应用处理器。21. 根据权利要求18所述的设备,进一步包括: 第一总线,所述第一总线用于所述应用处理器与所述协同处理器之间的通信;以及 第二总线,所述第二总线用于所述协同处理器与所述多个传感器之间的通信,其中,所 述第二总线被配置用于具有小于所述第一总线上的通信的时延的通信,以及 其中,所述协同处理器被配置为:将从所述多个传感器的惯性测量单元MU接收的数据 经由所述第二总线提供至所述应用处理器,以及将所述数据结构经由所述第一总线提供至 所述应用处理器。22. -种由具有应用处理器和协同处理器的设备执行的方法,所述应用处理器被配置 为基于操作系统运行,且所述协同处理器被配置为从所述设备的多个传感器接收数据,所 述方法包括: 确定由所述设备的所述多个传感器中的给定传感器产生的中断,其中,所述中断指示 所述给定传感器具有用于输出的数据; 由所述协同处理器提供由所述给定传感器产生的所述中断的时间戳,所述时间戳指示 所述给定传感器具有用于输出的所述数据的时间; 由所述协同处理器将所述时间戳提供至所述应用处理器; 由所述应用处理器从所述给定传感器接收用于输出的所述数据; 将由所述给定传感器产生的所述中断的所述时间戳与来自所述给定传感器的所接收 数据相关联; 基于由所述协同处理器提供的所述数据的时间戳,来将从所述多个传感器接收的所述 数据一起关联至数据结构中。
【文档编号】G01D21/00GK105940390SQ201480074379
【公开日】2016年9月14日
【申请日】2014年12月29日
【发明人】乔尔·黑施, 詹姆斯·方, 约翰尼·李
【申请人】谷歌技术控股有限责任公司