微软专利分享为多个定位追踪设备共享数据实现6DoF统一坐标
在设备之间共享映射数据
(映维网Nweon 2022年10月31日)六自由度追踪是设备使用传感器确定其相对于周围物理环境位置的方法。例如,混合现实头显或智能手机可以使用这种位置理解来放置全息图或数字内容,以便看起来世界锁定在物理世界中的特定位置。为了支持两个或多个这样的设备加入至相同的体验,两台设备需要对位置具有共同的理解。所以,可以在设备之间共享映射数据。
在名为“Sharing neighboring map data across devices”的专利申请中,微软就介绍了一种相关的技术。
追踪设备位置的一种方法是外向内追踪。尽管这种方法可以确定两个或多个设备的位置,但它需要在外部定位传感器,这在某些情况下可能不方便或不切实际。
追踪设备位置的另二种方法是为内向外追踪。内向外追踪无需借助环境中的外部传感器即可确定其位置的方法。尽不过,位置数据是在每个设备内确定。因此,协调设备之间的相对对齐是一个挑战。
两个或多个内向外追踪设备实现六自由度坐标对准的一种传统方法是,使用识别的标记以及物理环境中理解的相互参考点,以便每个设备确定其相对于特定点的位置。然而,一个局限性是,每增加一个标记,物理环境都需要改变,这会增加成本和设置时间,并减少自发性。
另外,如果标记移动或更改,设备之间关于标记的任何常见空间理解都必须更改,从而降低可靠性。这种方法同时限制了共享坐标的物理范围,因为设备需要在物理环境中标记的操作范围内。
另一种传统方法是设备独立生成映射,然后传输到中央服务器并拼合在一起,形成一个公共映射,然后将其重新传输回每个相应的设备。
但这种方法的缺点是传输时间变慢,因为需要通过网络进行大量数据传输。另外,加载公共映射的设备可能会遇到本地映射数据的意外丢失,因为在与所有目标设备共享公共映射的过程中,每个目标设备中以前存在的映射数据可能会被覆盖、删除或删除,并且公共映射可能不会100%保真度地保留来自每个贡献设备的映射数据。
所以对于微软而言,由设备共享映射数据是一种合适的解决方案。
图4是根服务器计算设备与设备和交互的示意图。服务器计算设备可用于生成位于目标虚拟位置处锚56的虚拟位置。目标虚拟位置可以被世界锁定到一个位置。或者,目标虚拟位置可以被世界锁定到相对于真实世界三维环境中的对象位置。
服务器计算设备可以包括锚程序和锚传输程序,锚传输程序可以存储在计算设备的大容量存储器中。锚程序和锚传输程序可加载到存储器中,并由服务器计算设备的处理器执行,以生成位于锚56的虚拟位置,并将锚数据54和相邻映射数据58从第一设备传输到第二设备。
服务器计算设备可以配置无线收发器。收发器230与第一设备和第二设备无线通信,以接收指令52并从显示设备传输请求48,并将映射数据传输到显示设备。可以理解,相邻映射数据58是虚拟位置锚56所在的虚拟位置周围的邻近映射数据。
服务器计算设备可以通过与网络的有线连接或无线连接与一个或多个其他设备进行通信耦合。在一个实施例中,网络可以采取局域网(LAN)、广域网(WAN)、有线网络、无线网络、个人区域网络或其组合的形式,并且可以包括Internet。
在图4的示例中,服务器计算设备通过一个或多个网络通信地耦合到第一设备和第二设备。在其他示例中,服务器计算设备可以与更少或更多的设备进行操作连接。第一设备的显示器和第二设备的显示器可以从各自设备的有利位置在位于锚56的虚拟位置显示一个或多个全息图。
在一个示例中,位于虚拟地点的锚56的虚拟位置可以被世界锁定到一个虚拟位置。在其他示例中,位于锚56的虚拟地点的虚拟位置可以被世界锁定到相对于真实世界三维环境中的对象的虚拟位置。
第一设备和第二设备的处理器执行公共锚传输程序38。第一设备将本地映射数据32存储到本地存储器中,而第二设备将本地映射信息36存储到本地内存中。本地映射数据可能包括显示设备中视觉传感器和/或惯性测量传感器追踪的显示设备旋转和平移运动。锚传输程序38以两种模式之一执行:导出锚模式和导入锚模式。
在图4中,第一设备描绘为正在执行锚传输程序38的导出锚模式,其中,第一设备向第二设备发送锚数据54和序列化的相邻映射数据66。第二设备描绘为在执行锚传输程序38的导入锚模式。其中,第二显示设备从另一设备接收锚数据54并序列化相邻映射数据,使得第二设备最终将映射数据66合并到现有的本地映射数据36之中,以及使得第二设备的显示器从第二用户的有利位置向操作显示一个或多个全息图。
第一设备和第二设备可以通过与网络的有线连接或无线连接与一个或多个其他设备进行通信耦合,但通信耦合并不特别受限,并且可以包括任何形式的数据流,包括Wi-Fi、电子邮件、外部数据存储设备、云存储设备等。
如图5所示,第一用户302可以穿着第一显示设备30站在餐厅306中,在本示例中,第一显示设备可以是头戴式显示器。
第一显示设备30和第二显示设备34可以包括锚传输程序38的程序逻辑,锚传输程序配置为发送和接收餐厅306的映射数据。在这个示例中,全息图50使用目标锚56投影在桌子308上。另一全息图的另一个相邻锚64位于时钟312中。第一用户302和第二用户304在房间306周围漫游,分别操作第一显示设备30和第二显示设备34,以便从各自的有利位置从房间306中的不同角度查看全息图50。
当用户在房间306周围漫游时,第一显示设备30和第二显示设备34内的传感器18捕获视觉和/或惯性追踪数据,从而通过传感器设备18追踪显示设备的旋转和平移运动。它们观察传感器设备18的三维旋转和平移,将其记录为姿势62A-G和关键帧60A-G,随后分别作为本地映射数据32和本地映射数据36存储在第一显示设备30和第二显示设备34中。
为了帮助每个显示设备在房间内定位,显示设备可以配置为观察其环境中的角落,例如所示两个窗口中每个窗口的四个角落,并可以使用检测到的窗口角落的位置来校正其估计位置,。因此,可由每个设备存储的本地映射数据的一个示例是指示房间中检测到的窗口角落的特征匹配数据。
在图5的示例中,第一用户302可能希望指定一个虚拟位置,并在所述虚拟位置显示艺术品图像的全息图50。为了设置全息图50,第一用户302可以通过操作第一显示设备30,通过用户输入指定位于虚拟位置的锚56的虚拟位置,第一显示设备执行锚传输程序38,向服务器计算设备200发送指令52,以生成位于图片310一角的虚拟位置锚56。
服务器计算设备200实例化锚程序214以接收指令52。响应接收指令52,服务器计算设备20生成位于图片310旁边墙上的锚56的虚拟位置,并将锚56的锚数据54发送回第一显示设备30,然后使用锚定数据54查看艺术品图像的全息图50。
或者,第一显示设备30可以编程方式为位于世界锁定虚拟位置的锚56处的虚拟位置生成指令52。例如,第一显示设备30可以使用传感器数据以编程方式将餐厅306中的图片310识别为虚拟位置,从而生成虚拟位置定位锚。
响应于识别图片310,第一显示设备30可编程地向计算设备200发送指令52,以生成位于与图片310的角对应的世界锁定虚拟位置处的锚56的虚拟位置。
第一用户302可能希望与正在使用第二显示设备34的第二用户304共享全息图50。在这种情况下,第一用户302向计算设备200发送传输请求48,以将对应于目标锚56的相邻映射数据58传输到第二显示设备34。在一个实施例中,从第二显示设备34到第一显示设备30的原始传输请求47可以致使第一显示设备发送传输请求48。
计算设备200接收传输与目标锚56对应的相邻映射数据58的请求48。设备检索、序列化,并将相邻映射数据58作为串行化的相邻映射数据66发送到第一显示设备30。串行化处理将邻近映射数据58编码为专有格式,只有计算设备200才能反串行化为对执行锚传输程序38的显示设备可读的格式。序列化的相邻映射数据66可以以二进制文件或数据流的形式打包。
计算设备200可以应用锚传输程序216的程序逻辑来定义锚56的邻域,以适当地确定对应于锚56的相邻樱色数据58。所述邻域可以包括姿势62A-G、关键帧60A-D、目标锚56附近的相邻锚64。
第一显示设备30接收序列化的相邻映射数据66,然后将锚定数据54和序列化的相邻映射数据66发送给第二显示设备34。第二显示设备34接收锚定数据64和序列化的邻近映射数据66。然后将序列化的相邻映射数据66发送到计算设备200。
计算设备200接收序列化的相邻映射数据66,然后反序列化相邻映射数据58,并将反序列化的相邻映射数据68发送回第二显示设备34。第二显示设备34接收反序列化的邻近映射数据68,然后,将反序列化的相邻映射数据68缝合到存储在第二显示设备34中的本地映射数据36中,以创建集成映射数据。第二显示设备34使用集成的映射数据在显示器35渲染全息图50图像。
通过这种方式,两人都可以以合适的角度在同一体验中查看全息内容。
相关专利:Microsoft Patent | Sharing neighboring map data across devices
名为“Sharing neighboring map data across devices”的微软专利申请最初在2022年6月提交,并在日前由美国专利商标局公布。