CN116868151A - 激光雷达同时定位和地图构建 - Google Patents
激光雷达同时定位和地图构建 Download PDFInfo
- Publication number
- CN116868151A CN116868151A CN202280014599.7A CN202280014599A CN116868151A CN 116868151 A CN116868151 A CN 116868151A CN 202280014599 A CN202280014599 A CN 202280014599A CN 116868151 A CN116868151 A CN 116868151A
- Authority
- CN
- China
- Prior art keywords
- plane
- environment
- observations
- subset
- points
- 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.)
- Pending
Links
- 238000013507 mapping Methods 0.000 title abstract description 39
- 230000004807 localization Effects 0.000 title description 8
- 238000000034 method Methods 0.000 claims abstract description 106
- 239000011159 matrix material Substances 0.000 claims description 65
- 239000013598 vector Substances 0.000 claims description 24
- 230000006870 function Effects 0.000 claims description 21
- 238000003780 insertion Methods 0.000 claims description 5
- 230000037431 insertion Effects 0.000 claims description 5
- 238000003860 storage Methods 0.000 claims description 3
- 230000007613 environmental effect Effects 0.000 abstract description 7
- 210000003128 head Anatomy 0.000 description 27
- 230000009466 transformation Effects 0.000 description 25
- 238000012045 magnetic resonance elastography Methods 0.000 description 21
- 230000000007 visual effect Effects 0.000 description 16
- 230000033001 locomotion Effects 0.000 description 14
- 230000005236 sound signal Effects 0.000 description 13
- 238000004364 calculation method Methods 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 10
- 230000002085 persistent effect Effects 0.000 description 9
- 230000002829 reductive effect Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005259 measurement Methods 0.000 description 8
- 230000003287 optical effect Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000014616 translation Effects 0.000 description 6
- 230000000694 effects Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 201000003152 motion sickness Diseases 0.000 description 5
- 210000001747 pupil Anatomy 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000007654 immersion Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 230000003190 augmentative effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000001953 sensory effect Effects 0.000 description 3
- 102000008115 Signaling Lymphocytic Activation Molecule Family Member 1 Human genes 0.000 description 2
- 108010074687 Signaling Lymphocytic Activation Molecule Family Member 1 Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001815 facial effect Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000035807 sensation Effects 0.000 description 2
- 230000003595 spectral effect Effects 0.000 description 2
- 206010019233 Headaches Diseases 0.000 description 1
- 241000282412 Homo Species 0.000 description 1
- 241001465754 Metazoa Species 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 241000153282 Theope Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 208000010877 cognitive disease Diseases 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 210000003027 ear inner Anatomy 0.000 description 1
- 210000005069 ears Anatomy 0.000 description 1
- 230000004424 eye movement Effects 0.000 description 1
- 230000008921 facial expression Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 231100000869 headache Toxicity 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 150000003014 phosphoric acid esters Chemical class 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/50—Depth or shape recovery
- G06T7/55—Depth or shape recovery from multiple images
- G06T7/579—Depth or shape recovery from multiple images from motion
-
- 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
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T19/00—Manipulating 3D models or images for computer graphics
- G06T19/006—Mixed reality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/246—Analysis of motion using feature-based methods, e.g. the tracking of corners or segments
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V20/00—Scenes; Scene-specific elements
- G06V20/20—Scenes; Scene-specific elements in augmented reality scenes
-
- 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
- G01S17/00—Systems using the reflection or reradiation of electromagnetic waves other than radio waves, e.g. lidar systems
- G01S17/88—Lidar systems specially adapted for specific applications
- G01S17/89—Lidar systems specially adapted for specific applications for mapping or imaging
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/0093—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00 with means for monitoring data relating to the user, e.g. head-tracking, eye-tracking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/04—Indexing scheme for image data processing or generation, in general involving 3D image data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10028—Range image; Depth image; 3D point clouds
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Multimedia (AREA)
- Human Computer Interaction (AREA)
- Computer Graphics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
- User Interface Of Digital Computer (AREA)
- Optical Radar Systems And Details Thereof (AREA)
- Image Analysis (AREA)
Abstract
本文公开了用于映射环境信息的***和方法。在一些实施例中,***和方法被配置用于在混合现实环境中映射信息。在一些实施例中,该***被配置为执行一种方法,该方法包括扫描环境,包括用传感器捕获环境的多个点;跟踪环境的平面;通过在观察中***关键帧来更新与环境相关联的观察;确定该平面是否与环境的第二平面共面;根据确定该平面与第二平面共面,对与环境相关联的观察执行平面束调整;以及根据确定该平面与第二平面不共面,对与环境相关联的观察的一部分执行平面束调整。
Description
相关申请的交叉引用
本申请要求于2021年2月12日提交的美国临时申请No.63/149,037的优先权,其全部内容通过引用并入本文。
技术领域
本公开一般涉及用于映射环境的***和方法。在一些示例中,光检测和测距(LiDAR)传感器用于使用同时定位和地图构建(SLAM)来映射环境。
背景技术
虚拟环境在计算环境中无处不在,在以下中找到用途:视频游戏(其中虚拟环境可以表示游戏世界);地图(其中虚拟环境可以表示要导航的地形);模拟(其中虚拟环境可以模拟真实环境);数字故事(其中虚拟角色可以在虚拟环境中相互交互);以及许多其他应用。现代计算机用户通常能够舒适地感知虚拟环境并与之交互。然而,用户对虚拟环境的体验可能会受到用于呈现虚拟环境的技术的限制。例如,传统显示器(例如,2D显示屏)和音频***(例如,固定扬声器)可能无法以创建引人入胜、逼真和身临其境的体验的方式实现虚拟环境。
虚拟现实(“VR”)、增强现实(“AR”)、混合现实(“MR”)和相关技术(统称为“XR”)共享向XR***的用户呈现与由计算机***中的数据所表示的虚拟环境对应的感官信息的能力。本公开考虑了VR、AR和MR***之间的区别(尽管一些***可以在一个方面(例如,视觉方面)被归类为VR,并且在另一方面(例如,音频方面)同时被归类为AR或MR)。如本文所使用的,VR***呈现了至少在一个方面取代了用户的真实环境的虚拟环境;例如,VR***可以向用户呈现虚拟环境的视图,同时模糊他或她对真实环境的视图,例如使用光遮挡头戴式显示器。类似地,VR***可以向用户呈现与虚拟环境对应的音频,并且可以同时阻挡(衰减)来自真实环境的音频。
VR***可能会经历由于用虚拟环境替代用户的真实环境而导致的各种缺点。一个缺点是当用户在虚拟环境中的视场不再对应于他或她的内耳的状态时可能会出现晕动病的感觉,内耳检测一个人在真实环境(不是虚拟环境)中的平衡和取向。同样,用户可能会在他们自己的身体和肢体(用户在真实环境中感觉“接地(ground)”所依赖的视图)无法直接可见的VR环境中体验到迷失方向。另一个缺点是VR***上的计算负担(例如,存储、处理能力),VR***必须呈现完整的3D虚拟环境,特别是在寻求让用户沉浸在虚拟环境中的实时应用中。同样,此类环境可能需要达到非常高的真实感标准才能被认为是沉浸式的,因为用户往往对虚拟环境中的微小缺陷都很敏感——任何缺陷都会破坏用户在虚拟环境中的沉浸感。此外,VR***的另一个缺点是***的此类应用无法利用真实环境中广泛的感官数据,例如人们在现实世界中体验到的各种视觉和声音。相关的缺点是,VR***可能难以创建多个用户可以在其中交互的共享环境,因为在真实环境中共享物理空间的用户可能无法在虚拟环境中直接看到或相互交互。
如本文所用,AR***呈现在至少一个方面重叠或覆盖真实环境的虚拟环境。例如,AR***可以向用户呈现覆盖在用户的真实环境的视图上的虚拟环境的视图,例如使用呈现所显示的图像同时允许光穿过显示器进入用户的眼睛的透射式头戴式显示器。类似地,AR***可以向用户呈现与虚拟环境相对应的音频,同时混合来自真实环境的音频。类似地,如本文所使用的,MR***呈现在至少一个方面与真实环境重叠或覆盖的虚拟环境,AR***也是如此,并且可以另外允许MR***中的虚拟环境可以在至少一个方面与真实环境交互。例如,虚拟环境中的虚拟角色可能会切换真实环境中的电灯开关,从而导致真实环境中相应的灯泡打开或关闭。作为另一个示例,虚拟角色可以对真实环境中的音频信号做出反应(例如用面部表情)。通过保持真实环境的呈现,AR和MR***可以避免VR***的上述一些缺点;例如,用户的晕动病减少了,因为来自真实环境(包括用户自己的身体)的视觉提示可以保持可见,并且此类***无需为用户呈现完全实现的3D环境即可沉浸其中。此外,AR和MR***可以利用现实世界的感官输入(例如,场景、对象和其他用户的视图和声音)来创建增强该输入的新应用。
呈现重叠或覆盖真实环境的虚拟环境可能是困难的。例如,将虚拟环境与真实环境混合可能需要对真实环境进行复杂而彻底的理解,使得虚拟环境中的对象不会与真实环境中的对象发生冲突。还可能期望在虚拟环境中维持与真实环境中的一致性相对应的持久性。例如,即使用户移开视线,四处移动,然后回头看物理桌子,也可能希望物理桌子上显示的虚拟对象出现在同一位置。为了实现这种类型的沉浸感,对对象在现实世界中的位置以及用户在现实世界中的位置进行准确和精确的估计是有益的。
例如,LiDAR传感器可用于感知环境(例如,在机器人应用中)。使用LiDAR(或类似传感器)的SLAM技术可用于室内应用,例如自主安全、清洁和递送机器人,并包括增强现实(AR)应用。与仅使用诸如视觉相机之类的传感器的SLAM相比,LiDAR SLAM可以产生更密集的3D地图,这对于计算机视觉任务(例如AR)以及3D对象分类和语义分割可能很重要。此外,密集3D地图也可能在建筑行业中得到应用。建筑物的3D地图可用于装饰设计,并让建筑师能够在施工过程中监控建筑物是否满足设计要求。然而,使用诸如LiDAR传感器之类的传感器执行室内SLAM可能具有挑战性。
与室外环境相比,室内环境可能更加结构化。例如,室内环境可能更可能具有可预测的几何形状(例如,平面、直角)和一致的照明。虽然这些特征可以简化对象识别等任务,但更结构化的室内环境也带来了一系列挑战。例如,在室内环境中,GPS信号可能不可用,这会使LiDAR(或类似传感器)SLAM的闭环检测变得困难。此外,当用传感器检测平面表面(例如室内环境中的墙壁或门)时,表面的两侧中的哪一侧面向传感器可能是不明确的。这在本文中被称为“双侧”问题。例如,在室外环境中,LiDAR通常观察建筑物的外部。然而,LiDAR可以在室内环境中观察平面对象的两侧。由于平面对象的两侧通常可能彼此靠近,这可能导致基于迭代最近点(ICP)技术变体的LiDAR测距(odometry)和地图构建(LOAM)***产生错误的数据关联,这可能会导致大的误差。此外,LOAM及其变体可以提供通过将当前扫描实时配准(register)到最后一次(last one)扫描来估计的低保真度测距姿势,并且配准全局姿势可能慢得多。希望减轻这些影响,以便在各种传感器环境中获得更快且不易出错的观察结果。
平面可以用在传统的LiDAR SLAM方法中,并且通常可以用在ICP框架的变体中。然而,在一些传统方法中,可能无法明确地提取平面。例如,平面可以用在平面到平面ICP框架中,这是传统ICP的变体。然而,在一些示例中,平面参数通常可以根据从例如K最近邻搜索获得的点云的一小块来估计,而不是明确地提取。这些方法可能会导致错误不断增加的循环。例如,姿势误差可能会累积到点云中,从而降低姿势估计的准确性;不准确的姿势可能反过来进一步降低全局点云的质量。束调整(bundle adjustment)(BA)可以提供准确的解决方案,但执行BA可能非常耗时且计算量大。
另外,成本函数(例如,用于最小化代数误差或用于最小化与根据传感器测量来估计几何形状相关联的几何或统计距离的函数)可能影响解决方***性。期望几何问题的成本函数对于刚性变换来说是不变的。对于平面对应,可以有两种方式来构建成本函数:平面到平面的成本和点到平面的成本。点到平面的成本可以表示为从点到平面的距离的平方,这对于刚性变换是不变的。平面到平面的成本是两个平面参数之间的差的测量,其对于刚性变换可能不是不变的。因此,与平面到平面的成本相比,点到平面的成本可以产生更准确的结果。然而,点到平面的成本可能会导致比平面到平面的成本更大的最小二乘问题,可能被认为无法承受更准确的解决方案,并且可能适用于较小的问题(例如,单次扫描不失真(undistortion)和配准,扫描包括的点少于LiDAR或类似传感器的点)。
发明内容
本文公开了用于绘制环境信息的***和方法。在一些实施例中,***和方法被配置用于在混合现实环境中绘制信息。在一些实施例中,该***被配置为执行一种方法,该方法包括扫描环境,包括用传感器捕获环境的多个点;跟踪环境的平面;通过在观察中***关键帧来更新与环境相关联的观察;确定该平面是否与环境的第二平面共面;根据该平面与第二平面共面的确定,对与环境相关联的观察执行平面束调整;以及根据该平面与第二平面不共面的确定,对与环境相关联的一部分观察执行平面束调整。
在一些实施例中,公开了用于室内环境的平面LiDAR SLAM框架。在一些实施例中,平面对象的两侧通过朝向(例如,LiDAR传感器、传感器的)观察中心的矢量法线的方向来区分,并且可以减少双面问题的不期望的影响。
在一些实施例中,该***和方法包括执行平面束调整(PBA),其包括联合优化平面参数和传感器姿势。执行PBA可以有利地减少与未明确提取的平面相关联的姿势误差和漂移,如先前所描述的。
在一些实施例中,公开了LiDAR SLAM***和操作***的方法。该***和方法可以有利地平衡BA的准确性和计算成本。在一些实施例中,***包括三个并行组件,包括定位、局部(local)映射和PBA。例如,定位组件逐帧跟踪平面,使LiDAR点云不失真(undistort),并将新的扫描实时配准到全局平面模型。此外,可以通过使用用于两次扫描之间的小运动的近似旋转矩阵来加速不失真和配准任务。局部映射和PBA组件可以校正漂移并改进地图,确保定位组件可以提供准确的姿势。在一些实施例中,点到平面的成本包括特殊结构,可以利用该特殊结构来降低PBA的计算成本。基于这种结构,形成了整体(integral)点到平面的成本,并且可以加速局部映射。
附图说明
图1A至1C示出了根据本公开的实施例的示例性混合现实环境。
图2A至2D示出了根据本公开的实施例的示例性混合现实***的组件。
图3A示出了根据本公开的实施例的示例性混合现实手持式控制器。
图3B示出了根据本公开的实施例的示例性辅助单元。
图4示出了根据本公开的实施例的示例混合现实***的示例性功能框图。
图5示出了根据本公开的实施例的示例性SLAM***。
图6示出了根据本公开的实施例的SLAM***的示例性时序图。
图7示出了根据本公开的实施例的示例性因子图。
图8示出了根据本公开的实施例的更新整体成本矩阵的示例性示意图。
图9示出了根据本公开的实施例的示例性因子图。
具体实施方式
在以下的示例描述中,参考了构成本文一部分的附图,其中以说明的方式示出了通过可以实践的具体示例。应当理解,在不脱离所公开的示例的范围的情况下,可以使用其他示例并且可以进行结构改变。
像所有人一样,混合现实***的用户存在于真实环境中——即,“现实世界”的三维部分及其所有内容可由用户感知。例如,例如,用户使用普通的人类感官——视觉、声音、触觉、味觉、嗅觉——感知真实环境,并通过在真实环境中移动自己的身体与真实环境交互。真实环境中的位置可以被描述为坐标空间中的坐标;例如,坐标可包括纬度、经度和相对于海平面的海拔;在三个正交维度上距参考点的距离;或其他适合的值。同样地,矢量可描述在坐标空间中具有方向和大小的数量(quantity)。
计算设备可例如在与设备相关联的存储器中维持虚拟环境的表示。如本文所使用的,虚拟环境是三维空间的计算表示。虚拟环境可包括任何对象、动作、信号、参数、坐标、矢量、或与该空间相关联的其他特性的表示。在一些示例中,计算设备的电路(例如,处理器)可以维持和更新虚拟环境的状态;即,处理器可以在第一时间t0处基于与虚拟环境相关联的数据和/或由用户提供的输入来确定第二时间t1处的虚拟环境的状态。例如,如果虚拟环境中的对象在时间t0处位于第一坐标处,并且具有某个编程的物理参数(例如,质量、摩擦系数);以及从用户接收的输入指示力应当在方向矢量上被施加到该对象;处理器可应用运动学定律以使用基础力学确定对象在时间t1处的位置。处理器可以使用关于虚拟环境已知的任何适合的信息和/或任何适合的输入来确定虚拟环境在时间t1处的状态。在维持和更新虚拟环境的状态时,处理器可执行任何适合的软件,包括与虚拟环境中的虚拟对象的创建和删除有关的软件;用于限定虚拟环境中的虚拟对象或角色的行为的软件(例如,脚本);用于限定虚拟环境中的信号(例如,音频信号)的行为的软件;用于创建和更新与虚拟环境相关联的参数的软件;用于在虚拟环境中生成音频信号的软件;用于处理输入和输出的软件;用于实现网络操作的软件;用于应用资产数据(例如,随时间移动虚拟对象的动画数据)的软件;或许多其他可能性。
输出设备(诸如显示器或者扬声器)可以向用户呈现虚拟环境的任何或所有方面。例如,虚拟环境可包括可以呈现给用户的虚拟对象(其可包括无生命对象;人;动物;光等的表示)。处理器可以确定虚拟环境的视图(例如,对应于具有原点坐标、视图轴和视锥的“相机”);以及向显示器渲染对应于该视图的虚拟环境的可视场景。出于该目的,可以使用任何适合的渲染技术。在一些示例中,可视场景可以仅包括虚拟环境中的一些虚拟对象,并且不包括某些其他虚拟对象。类似地,虚拟环境可包括可呈现给用户作为一个或多个音频信号的音频方面。例如,虚拟环境中的虚拟对象可生成源自对象的位置坐标的声音(例如,虚拟角色可以说话或引起声音效果);或者虚拟环境可以与可以或可以不与特定位置相关联的音乐线索或环境声音相关联。处理器可确定对应于“听众”坐标的音频信号——例如,对应于虚拟环境中的声音的复合的音频信号,并且被混合并处理以模拟将由听众坐标处的听众听到的音频信号——并且经由一个或多个扬声器将音频信号呈现给用户。
由于虚拟环境仅作为计算结构存在,所以用户可能不使用其普通感觉直接感知虚拟环境。相反,用户只能间接地感知虚拟环境,例如通过显示器、扬声器、触觉输出设备等呈现给用户。类似地,用户可以不直接接触、操控虚拟环境、或以其他方式与虚拟环境交互;但是可以经由输入设备或传感器将输入数据提供给处理器,处理器可使用设备或传感器数据来更新虚拟环境。例如,相机传感器可提供指示用户试图移动虚拟环境中的对象的光学数据,并且处理器可使用该数据使得对象因此在虚拟环境中作出响应。
混合现实***可以向用户呈现组合真实环境和虚拟环境的各方面的混合现实环境(“MRE”),例如使用透射式显示器和/或一个或多个扬声器(其可以例如并入可穿戴头部设备中)。在一些实施例中,一个或多个扬声器可以在头戴式可穿戴单元的外部。如本文所使用的,MRE是真实环境和对应的虚拟环境的同时表示。在一些示例中,对应的真实环境和虚拟环境共享单个坐标空间;在一些示例中,真实坐标空间和对应的虚拟坐标空间通过变换矩阵(或其他适合的表示)彼此相关。因此,单个坐标(在一些示例中,连同变换矩阵一起)可以定义真实环境中的第一位置,以及虚拟环境中的第二对应位置;反之亦然。
在MRE中,虚拟对象(例如,在与MRE相关联的虚拟环境中)可以对应于真实对象(例如,在与MRE相关联的真实环境中)。例如,如果MRE的真实环境包括位置坐标处的真实灯杆(真实对象),则MRE的虚拟环境可包括在对应的位置坐标处的虚拟灯杆(虚拟对象)。如本文所使用的,真实对象组合其对应的虚拟对象一起构成“混合现实对象”。不需要虚拟对象与对应的真实对象完美匹配或者对准。在一些示例中,虚拟对象可以是对应的真实对象的简化版本。例如,如果真实环境包括真实灯杆,则对应的虚拟对象可以包括具有与真实灯杆粗略地相同的高度和半径的圆柱体(反映该灯杆可以在形状方面是粗略的圆柱形)。以这种方式简化虚拟对象可以允许计算效率,并且可以简化将在这样的虚拟对象上执行的计算。进一步地,在MRE的一些示例中,真实环境中的并非所有真实对象可以与对应的虚拟对象相关联。同样地,在MRE的一些示例中,虚拟环境中的并非所有虚拟对象可以与对应的真实对象相关联。即,一些虚拟对象可以仅在MRE的虚拟环境中而没有任何现实世界配对物。
在一些示例中,虚拟对象可以具有与对应的真实对象的特性不同的特性,有时甚至截然不同。例如,虽然MRE中的真实环境可以包括绿色双臂仙人掌——多刺无生命对象——MRE中的对应的虚拟对象可以具有具有人类面部特征和粗暴行为的绿色双臂虚拟角色的特性。在该示例中,虚拟对象在某些特性(颜色、臂数)方面类似其对应的真实对象;但是在其他特性(面部特征、个性)方面与真实对象不同。以这种方式,虚拟对象具有以创造性、抽象、夸大、或想象的方式表示真实对象的潜在性;或者向其他无生命真实对象给予行为(例如,人类个性)。在一些示例中,虚拟对象可以是纯想象创造而没有现实世界配对物(例如,虚拟环境中的虚拟怪物,也许在与真实环境中的空白空间对应的位置处)。
与VR***相比较,该VR***向用户呈现虚拟环境同时模糊真实环境,呈现MRE的混合现实***提供当虚拟环境被呈现时真实环境保持可感知的优点。因此,混合现实***的用户能够使用与真实环境相关联的视觉和音频线索来体验对应的虚拟环境并且与对应的虚拟环境交互。作为示例,当VR***的用户可以努力感知虚拟环境中所显示的虚拟对象或与虚拟环境中所显示的虚拟对象交互时——如在此所述,用户不能直接感知虚拟环境或与虚拟环境交互——MR***的用户可以通过看到、听到和触摸他或她自己的真实环境中的对应的真实对象来发现与虚拟对象交互直观并且自然。该交互性水平可以增强用户对虚拟环境的沉浸感、联系感和参与感。类似地,通过同时呈现真实环境和虚拟环境,混合现实***可以减少与VR***相关联的负面心理感觉(例如,认知失调)和负面身体感觉(例如,晕动病)。混合现实***进一步为应用提供了许多可能性,这些应用可能会增强或改变我们对现实世界的体验。
图1A示出了用户110使用混合现实***112的示例性真实环境100。混合现实***112可以包括显示器(例如,透射式显示器)和一个或多个扬声器,以及一个或多个传感器(例如,相机,LiDAR传感器,被配置为在一次扫描期间捕获多个点的传感器),例如如在此所描述的。示出的真实环境100包括用户110站立的矩形房间104A;以及真实对象122A(灯)、124A(桌子)、126A(沙发)和128A(油画)。房间104A还包括位置坐标106,它可以被认为是真实环境100的原点。如图1A所示,具有其原点在点106(世界坐标)处的环境/世界坐标系108(包括x轴108X、y轴108Y、和z轴108Z)可以定义用于真实环境100的坐标空间。在一些实施例中,环境/世界坐标系108的原点106可以对应于混合现实环境112被上电的位置。在一些实施例中,环境/世界坐标系108的原点106可以在操作期间被重置。在一些示例中,用户110可以被认为是真实环境100中的真实对象;类似地,用户110的身体部分(例如,手、脚)可以被认为是真实环境100中的真实对象。在一些示例中,具有其原点在点115(例如,用户/听众/头部坐标)处的用户/听众/头部坐标系114(包括x轴114X、y轴114Y、和z轴114Z)可以定义针对混合现实***112位于的用户/听众/头部的坐标空间。用户/听众/头部坐标系114的原点115可以相对于混合现实***112的一个或多个组件来定义。例如,用户/听众/头部坐标系114的原点115可以相对于混合现实***112的显示器来定义,诸如在混合现实***112的初始校准期间。矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵)或其他适合的表示可以表征用户/听众/头部坐标系114空间与环境/世界坐标系108空间之间的变换。在一些实施例中,左耳坐标116和右耳坐标117可以相对于用户/听众/头部坐标系114的原点115来定义。矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵)或其他适合的表示可以表征左耳坐标116和右耳坐标117与用户/听众/头部坐标系114空间之间的变换。用户/听众/头部坐标系114可以简化相对于用户的头部或头戴式设备(例如,相对于环境/世界坐标系108)的位置的表示。使用SLAM、视觉测距或其他技术,用户坐标系114与环境坐标系108之间的变换可以实时确定和更新。
图1B示出了对应于真实环境100的示例性虚拟环境130。示出的虚拟环境130包括对应于真实矩形房间104A的虚拟矩形房间104B;对应于真实对象122A的虚拟对象122B;对应于真实对象124A的虚拟对象124B;以及对应于真实对象126A的虚拟对象126B。与虚拟对象122B、124B、126B相关联的元数据可以包括从对应的真实对象122A、124A、126A导出的信息。虚拟环境130附加地包括虚拟怪兽132,该虚拟怪兽132不对应于真实环境100中的任何真实对象。真实环境100中的真实对象128A不对应于虚拟环境130中的任何虚拟对象。具有其原点在点134(持久坐标)处的持久坐标系133(包括x轴133X、y轴133Y、和z轴133Z)可以定义用于虚拟内容的坐标空间。持久坐标系133的原点134可以相对于/关于一个或多个真实对象(诸如真实对象126A)来定义。矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵)或其他适合的表示可以表征持久坐标系133空间与环境/世界坐标系108空间之间的变换。在一些实施例中,虚拟对象122B、124B、126B和132中的每个虚拟对象可以具有相对于持久坐标系133的原点134的其自己的持久坐标点。在一些实施例中,可以存在多个持久坐标系,并且虚拟对象122B、124B、126B和132中的每个虚拟对象可以具有相对于一个或多个持久坐标系的其自己的持久坐标点。
相对于图1A和图1B,环境/世界坐标系108定义用于真实环境100和虚拟环境130二者的共享坐标空间。在示出的示例中,坐标空间具有其原点在点106处。进一步地,坐标空间由相同的三个正交轴(108X、108Y、108Z)定义。因此,真实环境100中的第一位置和虚拟环境130中的第二对应位置可以相对于相同的坐标空间来描述。这简化在真实环境和虚拟环境中识别和显示对应的位置,因为相同的坐标可以用于识别这两个位置。然而,在一些示例中,对应的真实环境和虚拟环境不需要使用共享坐标空间。例如,在一些示例中(未示出),矩阵(其可以包括平移矩阵和四元数矩阵或其他旋转矩阵)或其他适合的表示可以表征真实环境坐标空间与虚拟环境坐标空间之间的变换。
图1C示出了经由混合现实***112将真实环境100和虚拟环境130的各方面同时呈现给用户110的示例性MRE 150。在示出的示例中,MRE 150同时向用户110呈现来自真实环境100的真实对象122A、124A、126A和128A(例如,经由混合现实***112的显示器的透射部分);以及来自虚拟环境130的虚拟对象122B、124B、126B和132(例如,经由混合现实***112的显示器的有源(active)显示部分)。如在此所描述的,原点106可以充当用于对应于MRE150的坐标空间的原点,并且坐标系108定义用于坐标空间的x轴、y轴和z轴。
在示出的示例中,混合现实对象包括占据坐标空间108中的对应位置的真实对象和虚拟对象的对应对(即,122A/122B、124A/124B、126A/126B)。在一些示例中,真实对象和虚拟对象二者可以对用户110同时可见。这可以在例如虚拟对象呈现被设计为增强对应的真实对象的视图的信息的实例中(诸如在虚拟对象呈现古代损坏雕塑的丢失件的博物馆应用中)是期望的。在一些示例中,虚拟对象(122B、124B和/或126B)可以被显示(例如,经由使用像素化遮挡快门的有源像素化遮挡)以便遮挡对应的真实对象(122A、124A和/或126A)。这可以在例如虚拟对象充当用于对应的真实对象的视觉替换的实例中(诸如在无生命真实对象变为“活的”角色的交互式故事应用中)是期望的。
在一些示例中,真实对象(例如,122A、124A、126A)可以与虚拟内容或可以不必构成虚拟对象的辅助数据(helper data)相关联。虚拟内容或辅助数据可以促进混合现实环境中的虚拟对象的处理或处置。例如,这样的虚拟内容可以包括以下各项的二维表示:对应的真实对象;与对应的真实对象相关联的定制资产类型;或与对应的真实对象相关联的统计数据。该信息可以使能或者促进涉及真实对象的计算而不招致不必要的计算开销。
在一些示例中,如在此所描述的呈现还可以包含音频方面。例如,在MRE 150中,虚拟怪兽132可以与一个或多个音频信号相关联,诸如当怪兽在MRE 150到处走时生成的脚步声效果。如在此所描述的,混合现实***112的处理器可以计算与MRE 150中的所有此类声音的经混合和处理的合成对应的音频信号,并且经由包括在混合现实***112中的一个或多个扬声器和/或一个或多个外部扬声器将音频信号呈现给用户110。
示例性混合现实***112可以包括可穿戴头部设备(例如,可穿戴增强现实或混合现实头部设备),其包括:显示器(其可以包括左和右透射式显示器,其可以是近眼显示器,以及用于将来自显示器的光耦合到用户的眼睛的相关联的部件);左和右扬声器(例如,分别邻近用户的左和右耳被定位);惯性测量单元(IMU)(例如,被安装到头部设备的边撑臂(temple arm));正交线圈电磁接收器(例如,其被安装到左边撑件);左和右相机(例如,深度(飞行时间)相机),其远离用户取向;以及左和右眼相机,其朝向用户取向(例如,用于检测用户的眼睛移动)。然而,混合现实***112可以包含任何适合的显示技术,以及任何适合的传感器(例如,光学、红外、声学、LIDAR、EOG、GPS、磁性、LiDAR传感器,被配置为在一次扫描期间扫描多个点的传感器)。此外,混合现实***112可包含联网特征(例如,Wi-Fi能力)以与其他设备和***通信,包括其他混合现实***。混合现实***112还可以包括电池(其可以被安装在辅助单元中,诸如被设计为穿戴在用户的腰部周围的腰带包)、处理器和存储器。混合现实***112的可穿戴头部设备可以包括跟踪部件,诸如IMU或其他适合的传感器,其被配置为输出可穿戴头部设备相对于用户的环境的一组坐标。在一些示例中,跟踪部件可以向执行SLAM、视觉测距、和/或LiDAR测距算法的处理器提供输入。在一些示例中,混合现实***112还可以包括手持式控制器300和/或辅助单元320,其可以是可穿戴腰带包,如在此进一步描述。
图2A至图2D示出了可以用于将MRE(其可以对应于MRE 150)或其他虚拟环境呈现给用户的示例性混合现实***200(其可以对应于混合现实***112)的部件。图2A示出了在示例混合现实***200中包括的可穿戴头部设备2102的透视图。图2B示出了在用户的头部2202上穿戴的可穿戴头部设备2102的俯视图。图2C示出了可穿戴头部设备2102的前视图。图2D示出了可穿戴头部设备2102的示例目镜2110的边视图。如图2A至图2C所示,示例可穿戴头部设备2102包括示例性左目镜(例如,左透明波导集(set)目镜)2108和示例性右目镜(例如,右透明波导集目镜)2110。每个目镜2108和2110可以包括:透射元件,通过该透射元件,真实环境可以是可见的;以及显示元件,其用于呈现重叠真实环境的显示(例如,经由逐图像调制光)。在一些示例中,这样的显示元件可以包括用于控制逐图像调制光的流动的表面衍射光学元件。例如,左目镜2108可以包括左耦入光栅集2112、左正交光瞳扩展(OPE)光栅集2120、以及左出射(输出)光瞳扩展(EPE)光栅集2122。类似地,右目镜2110可以包括右耦入光栅集2118、右OPE光栅集2114、以及右EPE光栅集2116。逐图像调制光可以经由耦入光栅2112和2118、OPE 2114和2120、以及EPE 2116和2122传递到用户的眼睛。每个耦入光栅集2112、2118可以被配置为朝向其对应的OPE光栅集2120、2114偏转光。每个OPE光栅集2120、2114可以被设计为朝向其相关联的EPE 2122、2116向下递增地偏转光,从而水平延伸正在形成的出射光瞳。每个EPE 2122、2116可以被配置为将从其对应的OPE光栅集2120、2114接收的光的至少一部分向外递增地重定向到被限定在目镜2108、2110后面的用户适眼区(eyebox)位置(未示出),垂直延伸在适眼区处所形成的出射光瞳。可替代地,代替耦入光栅集2112和2118、OPE光栅集2114和2120、和EPE光栅集2116和2122,目镜2108和2110可以包括光栅和/或折射和反射特征的其他布置,用于控制将逐图像调制光耦合到用户的眼睛。
在一些示例中,可穿戴头部设备2102可以包括左边撑臂2130和右边撑臂2132,其中,左边撑臂2130包括左扬声器2134并且右边撑臂2132包括右扬声器2136。正交线圈电磁接收器2138可以定位在左边撑件中,或者在可穿戴头部单元2102中的另一适合的位置。惯性测量单元(IMU)2140可以定位在右边撑臂2132中,或者在可穿戴头部设备2102中的另一适合的位置。可穿戴头部设备2102还可以包括左深度(例如,飞行时间)相机2142和右深度相机2144。深度相机2142、2144可以在不同的方向上适合地取向以便一起覆盖更宽的视场。
在图2A至图2D中示出的示例中,逐图像调制光的左源2124可以通过左耦入光栅集2112被光学耦合到左目镜2108中,并且逐图像调制光的右源2126可以通过右耦入光栅集2118被光学耦合到右目镜2110中。逐图像调制光的源2124、2126可以包括例如光纤扫描器;投影仪,包括电子光调制器,诸如数字光处理(DLP)芯片或硅上液晶(LCoS)调制器;或发射显示器,诸如微发光二极管(μLED)或微有机发光二极管(μOLED)面板,其使用每侧一个或多个透镜被耦合到耦入光栅集2112、2118中。输入耦合光栅集2112、2118可以将来自逐图像调制光的源2124、2126的光偏转到大于针对目镜2108、2110的全内反射(TIR)的临界角的角度。OPE光栅集2114、2120向下朝向EPE光栅集2116、2122递增地偏转通过TIR传播的光。EPE光栅集2116、2122将光递增地耦合朝向用户的面部,包括用户的眼睛的瞳孔。
在一些示例中,如图2D所示,左目镜2108和右目镜2110中的每一个包括多个波导2402。例如,每个目镜2108、2110可以包括多个单独波导,每个波导专用于相应的颜色通道(例如,红色、蓝色和绿色)。在一些示例中,每个目镜2108、2110可以包括这样的波导的多个集合,其中,每个集合被配置为向所发射的光给予不同的波前曲率。波前曲率可以相对于用户的眼睛是凸的,例如以呈现定位在用户的前面一定距离(例如,通过与波前曲率的倒数对应的距离)的虚拟对象。在一些示例中,EPE光栅集2116、2122可以包括弯曲的光栅凹陷(groove),以通过改变跨每个EPE出射光的坡印廷(Poynting)矢量来实现凸波前曲率。
在一些示例中,为了创建所显示的内容是三维的感知,立体调节的左和右眼图像可以通过逐图像光调制器2124、2126和目镜2108、2110呈现给用户。三维虚拟对象的呈现的感知的真实性可以通过选择波导(并且因此对应的波前曲率)被增强,使得虚拟对象在接近由立体左和右图像所指示的距离的距离处被显示。该技术还可以减少由一些用户经历的晕动病,其可以由由立体左和右眼图像所提供的深度感知线索与人眼的自动调节(例如,对象距离-相关焦点)之间的差异引起。
图2D示出了从示例可穿戴头部设备2102的右目镜2110的顶部的面向边缘的视图。如图2D所示,多个波导2402可以包括三个波的第一子集导2404和三个波导的第二子集2406。波导的两个子集2404、2406可以通过不同EPE光栅来区分,不同EPE光栅具有不同光栅线曲率(line curvature)以将不同的波前曲率赋予给出射光。在波导的子集2404、2406中的每一个内,每个波导可以用于将不同的光谱通道(例如,红色、绿色和蓝色光谱通道之一)耦合到用户的右眼2206。(虽然未示出在图2D中,但是左目镜2108的结构类似于右目镜2110的结构。)
图3A示出了混合现实***200的示例性手持式控制器部件300。在一些示例中,手持式控制器300包括握持部分346和沿着顶表面348设置的一个或多个按钮350。在一些示例中,按钮350可以被配置用于用作光学跟踪目标,例如,用于结合相机、LiDAR、或其他传感器(其可以被安装在混合现实***200的头部单元(例如,可穿戴头部设备2102)中)来跟踪手持式控制器300的六自由度(6DOF)运动。在一些示例中,手持式控制器300包括用于检测位置或取向(诸如相对于可穿戴头部设备2102的位置或取向)的跟踪部件(例如,IMU或其他适合的传感器)。在一些示例中,这样的跟踪部件可以定位在手持式控制器300的手柄中,和/或可以机械耦合到手持式控制器。手持式控制器300可以被配置为提供与按钮的按压状态中的一个或多个对应的一个或多个输出信号;或手持式控制器300的位置、取向、和/或移动(例如,经由IMU)。这样的输出信号可以用作混合现实***200的处理器的输入。这样的输入可以对应于手持式控制器的位置、取向和/或移动(例如,通过扩展而对应于握住控制器的用户的手部的位置、取向和/或移动)。这样的输入还可以对应于用户按下按钮350。
图3B示出了混合现实***200的示例性辅助单元320。辅助单元320可以包括提供用于操作***200的能量的电池,并且可以包括用于执行用于操作***200的程序的处理器。如所示,示例辅助单元320包括芯片2128,诸如用于将辅助单元320附接到用户的腰带。其他形状因子适合于辅助单元320并且将是明显的,包括不涉及将单元安装到用户的腰带的形状因子。在一些示例中,辅助单元320通过多导管电缆被耦合到可穿戴头部设备2102,该多导管电缆可以包括例如电线和光纤。还可以使用辅助单元320与可穿戴头部设备2102之间的无线连接。
在一些示例中,混合现实***200可以包括检测声音并且将对应的信号提供给混合现实***的一个或多个麦克风。在一些示例中,麦克风可以被附接到可穿戴头部设备2102或与其集成,并且被配置为检测用户的语音。在一些示例中,麦克风可以被附接到手持式控制器300和/或辅助单元320或与其集成。这样的麦克风可以被配置为检测环境声音、环境噪声、用户或第三方的语音、或其他声音。
图4示出了可以与示例性混合现实***对应的示例性功能框图,诸如如在此所述的混合现实***200(其可以对应于相对于图1的混合现实***112)。如图4所示,示例手持式控制器400B(其可以对应于手持式控制器300(“图腾”))包括图腾到可穿戴头部设备六自由度(6DOF)图腾子***404A,并且示例可穿戴头部设备400A(其可以对应于可穿戴头部设备2102)包括图腾到可穿戴头部设备6DOF子***404B。在示例中,6DOF图腾子***404A和6DOF子***404B合作确定手持式控制器400B相对于可穿戴头部设备400A的六个坐标(例如,在三个平移方向上的偏移和沿着三个轴的旋转)。六个自由度可以相对于可穿戴头部设备400A的坐标系表示。三个平移偏移可以表示为这样的坐标系中的X、Y和Z偏移、表示为平移矩阵、或表示为一些其他表示。旋转自由度可以表示为一序列的偏航、俯仰和滚动旋转、表示为旋转矩阵、表示为四元数、或表示为一些其他表示。在一些示例中,可穿戴头部设备400A;包括在可穿戴头部设备400A中的一个或多个深度相机444(和/或一个或多个非深度相机);和/或一个或多个光学目标(例如,如在此所描述的手持式控制器400B的按钮350,或包括在手持式控制器400B中的专用光学目标)可以用于6DOF跟踪。在一些示例中,手持式控制器400B可以包括相机,如在此所描述的;并且可穿戴头部设备400A可以包括用于结合相机来光学跟踪的光学目标。在一些示例中,可穿戴头部设备400A和手持式控制器400B各自包括一组三个正交取向的螺线管,其用于无线地发送和接收三个可区分的信号。通过测量用于接收的线圈中的每一个中所接收的三个可区分信号的相对幅度,可以确定可穿戴头部设备400A相对于手持式控制器400B的6DOF。此外,6DOF图腾子***404A可以包括惯性测量单元(IMU),该惯性测量单元(IMU)可用于提供关于手持式控制器400B的快速移动的经改进的准确度和/或更及时的信息。
在一些示例中,可能变得需要将来自本地坐标空间(例如,相对于可穿戴头部设备400A固定的坐标空间)的坐标变换到惯性坐标空间(例如,相对于真实环境固定的坐标空间),例如以便补偿可穿戴头部设备400A相对于坐标系108的移动。例如,对于可穿戴头部设备400A的显示器,这样的变换可能是必要的,以将虚拟对象呈现在相对于真实环境的期望位置和取向处(例如,坐在真实椅子中、面向前的虚拟人,而不管可穿戴头部设备的位置和取向),而不是呈现在显示器上的固定位置和取向处(例如,在显示器的右下角的相同位置处),以保持虚拟对象存在于真实环境中的错觉(并且例如当可穿戴头部设备400A移动和旋转时不显得不自然地定位在真实环境中)。在一些示例中,坐标空间之间的补偿变换可以通过使用SLAM和/或视觉测距程序处理来自深度相机444的图像来确定,以便确定可穿戴头部设备400A相对于坐标系108的变换。在图4所示的示例中,深度相机444被耦合到SLAM/视觉测距块406并且可以向块406提供图像。SLAM/视觉测距块406实施方式可以包括处理器,该处理器被配置为处理该图像并且确定用户的头部的位置和取向,该位置和取向然后可以用于识别头部坐标空间与另一坐标空间(例如,惯性坐标空间)之间的变换。类似地,在一些示例中,从IMU 409获得关于用户的头部姿势和位置的信息的附加源。来自IMU 409的信息可以与来自SLAM/视觉测距块406的信息集成,以提供关于用户的头部姿势和位置的快速调节的经改进的准确度和/或更及时的信息。
在一些示例中,深度相机444可以将3D图像供应到手势***411,该手势***411可以实现在可穿戴头部设备400A的处理器中。手势***411可以识别用户的手势,例如通过将从深度相机444接收的3D图像与表示手势的所存储的图案相匹配。识别用户的手势的其他适合的技术将是明显的。
在一些示例中,一个或多个处理器416可以被配置为从可穿戴头部设备的6DOF头盔子***404B、IMU 409、SLAM/视觉测距块406、深度相机444、和/或手势***411接收数据。处理器416还可以发送和接收来自6DOF图腾***404A的控制信号。处理器416可以被无线耦合到6DOF图腾***404A,诸如在手持式控制器400B不受限的示例中。处理器416还可以与附加部件通信,诸如音频-视觉内容存储器418、图形处理单元(GPU)420、和/或数字信号处理器(DSP)音频声场***(spatializer)422。DSP音频声场***422可以被耦合到头部相关传递函数(HRTF)存储器425。GPU 420可以包括被耦合到逐图像调制光的左源424的左通道输出和被耦合到逐图像调制光的右源426的右通道输出。GPU 420可以将立体图像数据输出到逐图像调制光的源424、426,例如如在此相对于图2A-2D所描述的。DSP音频声场***422可以向左扬声器412和/或右扬声器414输出音频。DSP音频声场***422可以从处理器419接收指示从用户到虚拟声源(其可以由用户移动,例如,经由手持式控制器320)的方向矢量的输入。基于方向矢量,DSP音频声场***422可以确定对应的HRTF(例如,通过访问HRTF、或通过内插多个HRTF)。DSP音频声场***422然后可以将所确定的HRTF应用到音频信号,诸如对应于由虚拟对象生成的虚拟声音的音频信号。这可以通过在混合现实环境中结合用户相对于虚拟声音的相对位置和取向来增强虚拟声音的可信度和真实性——即,通过呈现与用户对虚拟声音将听起来像什么(如果其是在真实环境中的真实声音)的期望相匹配的虚拟声音。
在一些示例中,诸如图4所示,处理器416、GPU 420、DSP音频声场***422、HRTF存储器425、和音频/视觉内容存储器418中的一个或多个可以包括在辅助单元400C中(其可以对应于如在此所描述的辅助单元320)。辅助单元400C可以包括对其部件供电和/或向可穿戴头部设备400A或手持式控制器400B供电的电池427。将这样的部件包括在可安装到用户的腰部的辅助单元中可以限制可穿戴头部设备400A的大小和重量,其进而可以减少用户的头部和颈部的疲劳。
虽然图4呈现了与示例性混合现实***的各种组件对应的元件,但是这些部件的各种其他适合的布置对于本领域技术人员来说将变得显而易见。例如,图4中呈现为与辅助单元400C相关联的元件可以替代地与可穿戴头部设备400A或手持式控制器400B相关联。此外,一些混合现实***可以完全放弃手持式控制器400B或辅助单元400C。这样的改变和修改将被理解为包括在所公开的示例的范围内。
在混合现实环境中显示虚拟内容以使虚拟内容对应于真实内容可能具有挑战性。例如,可能希望在与真实对象122A相同的位置在图1C中显示虚拟对象122B。这样做可能涉及混合现实***112的许多能力。例如,混合现实***112可以创建真实环境104A和真实环境104A内的真实对象(例如,灯122A)的三维图。混合现实***112还可以在真实环境104A内建立其位置(其可以对应于用户在真实环境内的位置)。混合现实***112可以进一步在真实环境104A内建立其取向(其可以对应于用户在真实环境内的取向)。混合现实***112还可以建立其相对于真实环境104A的移动,例如,线性和/或角速度以及线性和/或角加速度(其可以对应于用户相对于真实环境的移动)。SLAM可以是一种在与真实对象122A相同的位置显示虚拟对象122B的方法,即使用户110在房间104A周围移动、远离真实对象122A观看,并且回看真实对象122A。在一些示例中,诸如本文所述的SLAM计算可以经由上述SLAM/视觉测距块406在混合现实***112中执行。在一些示例中,SLAM计算可以经由处理器416、GPU420、和/或混合现实***112的任何其他合适的组件来执行。诸如本文所述的SLAM计算可以利用诸如本文所描述的混合现实***112的任何合适的传感器。
可能需要以精确但计算高效且低延迟的方式运行SLAM。如本文所使用的,延迟可以是指混合现实***的组件的位置或取向的改变(例如,可穿戴头部设备的旋转)与在混合现实***中表示的该改变的反应(例如,在可穿戴头部设备的显示器中呈现的视场的显示角度)之间的时间延迟。计算效率低和/或高延迟会对用户对混合现实***112的体验产生负面影响。例如,如果用户110环顾房间104A,则虚拟对象可能由于用户的运动和/或高延迟而显得“抖动”。准确性对于产生沉浸式混合现实环境至关重要,否则与真实内容冲突的虚拟内容可能会提醒用户虚拟内容与真实内容之间的区别,并降低用户的沉浸感。此外,在某些情况下,延迟可能会导致某些用户出现晕动病、头痛或其他负面身体体验。在混合现实***112是依赖于有限电源(例如电池)的移动***的实施例中,计算效率低下可能会产生加剧的问题。作为更准确、计算高效、和/或更低延迟SLAM的结果,本文描述的***和方法可以产生改进的用户体验。
图5示出了根据本公开的实施例的操作SLAM***的示例性方法500。方法500有利地允许将LiDAR或类似传感器(例如,被配置为在扫描期间捕获多个点的传感器)有效地用于SLAM***(例如,用于环境映射应用、用于混合现实映射应用)。尽管方法500被示为包括所描述的元件,但是应当理解,在不脱离本公开的范围的情况下,可以包括元件、附加元件、或更少元件的不同顺序。
在一些实施例中,方法500允许通过朝向(例如,LiDAR传感器、传感器的)观察中心的矢量法线的方向来区分平面对象的两侧,并且可以减少双侧问题的不期望影响。例如,观察中心是深度传感器(例如,LiDAR传感器,本文公开的传感器)坐标系的原点。
在一些实施例中,方法500包括执行PBA,其包括联合优化平面参数和传感器姿势。执行PBA可以有利地减少与未明确提取的平面相关联的姿势误差和漂移。
在一些实施例中,方法500可以有利地平衡BA的精度和计算成本。在一些实施例中,方法500包括三个并行组件,包括定位、局部映射和PBA。例如,定位组件逐帧跟踪平面,使LiDAR点云不失真,并实时将新扫描配准到全局平面模型。此外,可以通过使用用于两次扫描之间的小运动的近似旋转矩阵来加速不失真和配准任务。局部映射和PBA组件可以校正漂移并改进地图,确保定位组件可以提供准确的姿势。在一些实施例中,点到平面的成本包括特殊结构,其可以被利用来降低PBA的计算成本。基于这种结构,形成了整体点到平面的成本,并且可以加速局部映射。
尽管本文中的一些示例是关于LiDAR***进行描述的,但是应当理解,这些描述是示例性的。虽然明确描述了LiDAR传感器,但应当理解的是,在不脱离本公开的范围的情况下,其他传感器或更具体种类的传感器(例如,被配置为在扫描期间捕获多个点的传感器、深度传感器、提供深度信息的传感器、机械旋转LiDAR、固态LiDAR、RGBD相机)可用于执行所描述的操作,将其结合到所描述的***中,并实现类似的所描述的益处。此外,可以设想,LiDAR传感器(或类似传感器)的使用可以通过使用其他传感器来补充,例如深度相机、RGB相机、声学传感器、红外传感器、GPS单元、和/或惯性测量单元(IMU),视情况而定。例如,这种补充传感器可以与LiDAR结合使用,以细化由LiDAR传感器提供的数据,提供冗余,或者允许降低功率操作。
本文的示例可以用包括LiDAR或类似传感器的设备来执行,例如混合现实设备(例如,混合现实***112、混合现实***200、关于图4描述的混合现实***),移动设备(例如,智能手机或平板电脑),或机器人设备,和/或可以利用被配置为与第二设备(例如,被配置为发送和/或接收环境映射信息的设备、包括LiDAR或类似传感器的设备、不包括被配置为接收环境映射信息的LiDAR或类似传感器的设备)通信的第一设备(例如,云计算设备、服务器、计算设备)来执行(例如,为了简化或减少对第二设备的需求)。
在一些实施例中,来自本文中执行的***或方法的结果(例如,PBA结果、点云、关键帧、姿势、计算结果)使用这些结果存储在第一设备中(例如,以获得环境映射信息)和/或存储在配置为与第二设备通信的第一设备中,第二设备被配置为请求和/或接收结果(例如,以获得环境映射信息)。通过存储结果,可以减少与处理和/或获得环境映射信息相关联的时间(例如,不需要重新计算结果,可以在更快的设备上计算结果),并且可以简化处理和/或者获得环境映射信息(例如,无需在更慢和/或电池消耗设备上计算该结果)。
在一些实施例中,用于执行本文所述方法的指令被预先加载到设备中(例如,在使用设备之前预先安装到设备中)。在一些实施例中,用于执行本文描述的方法的指令可以被下载到设备中(例如,稍后安装到设备中)。在一些实施例中,本文所述的方法和操作可以离线执行(例如,在使用映射的***不活动(active)时离线执行映射)。在一些实施例中,本文所描述的方法和操作可以实时执行(例如,在使用映射的***处于活动时实时执行映射)。
在一些实施例中,LiDAR扫描包括可以同时捕获也可以不同时捕获的一组点。扫描/>的姿势可以被定义为在捕获/>中的最后(last)一点时LiDAR框架(frame)相对于全局框架的刚性变换。如本文所述,刚性变换可以表示为旋转和平移:
该变换可以与变换矩阵相关联:
在一些实施例中,旋转矩阵R位于特殊正交群SO(3)中。为了表示R,可以使用角轴参数化(angle-axis parameterization)ω=[ω1;ω2;ω3];T可以被参数化为x=[ω;t](例如,用于本文所述的优化)。ω的偏斜矩阵可以被定义为:
在上文中,[ω]×位于单位(identity)处流形(manifold)SO(3)的切线空间so(3)中。指数映射exp:so(3)→SO(3)可被表示为:
平面对象可能有两侧,并且在某些情况下,两侧彼此靠近。如上所述,平面对象的两侧的接近可能会导致模糊性误差,其中平面对象的哪一侧面对传感器是模糊的(例如,双侧问题)。例如,机器人可能进入房间并错误地捕获墙壁的与预期一侧相反的一侧。平面对象的两侧可以通过识别垂直于平面并指向观察中心(例如,LiDAR传感器的中心、传感器的中心)的矢量来区分。
平面可以用π=[n;d]表示,其中n是朝向观察中心的法向矢量,其中‖n‖=1,并且d是从原点到平面的有符号距离。为了参数化平面,可以使用最近点(CP)矢量η=nd。
如所讨论的,平面可以用π表示。平面π可以在全局坐标系中表达,p是π在局部坐标系中的观察。如上所述,从局部坐标系到全局坐标系的变换矩阵可以是T。可以是p的齐次坐标系。点到平面的残差δ可以表示如下:
(3)
在一些实施例中,方法500包括执行新的扫描(例如,扫描)(步骤502)。例如,执行新的LiDAR扫描。作为另一示例,执行包括多个点(例如,数十个点、数百个点、数千个点)的扫描。
在一些实施例中,LiDAR传感器从静态状态开始,使得第一帧不会遭受运动失真。可以使用任何合适的方法从LiDAR点云中提取平面。例如,可以基于区域生长方法来提取平面;可以估计每个点的法线,并且可以通过聚类具有相似法线的点来分割点云。对于每个聚类,可以使用RANSAC或类似算法来检测平面。在一些实施例中,包括多于阈值数量(例如,50个)的点的平面被保留,并且包括少于阈值数量的点的平面被丢弃。
在一些实施例中,方法500包括执行定位(步骤504)。执行定位可以包括跟踪平面(例如,逐帧跟踪、逐扫描跟踪)。每个局部平面可以与全局平面相关联,并且在跟踪期间可以保持这种关系。通过逐帧跟踪平面或逐扫描跟踪平面,可以节省计算时间,因为可以保持全局平面与局部观察之间的数据关联。作为另一示例性优点,由于局部到全局平面的对应关系,允许点到平面的成本同时不使点云(例如,全局点云)失真并估计姿势。旋转矩阵的一阶近似(如本文所述)可以用于简化计算。执行定位还可以包括将当前扫描配准到全局点云中。
例如,扫描和/>是两个连续扫描,/>是在/>中检测到的第i个平面的点集,参数πk-1,i和/>与第mi全局平面/>相关联。一组局部到全局点到平面的对应关系可以表示为/>
根据示例方法,可以为构建KD树。对于每个点/> 中的n个最近邻(例如,n=2)被发现。可以消除冗余点以获得点集/>可以应用RANSAC算法(或其他合适的算法)来拟合来自/>的平面πk,i,并获得内点(inlier)集/>可以通过收集距πk,i小于阈值距离(例如,5cm)的附近点来扩展/>如果/>中的点的数量大于阈值(例如,50个),并且πk,i与πk-1,i之间的角度小于阈值角度(例如,10度),则一组点到平面的对应关系可以通过扫描/>获得。
图6示出了根据本公开的实施例的SLAM***的示例性时序图600。时序图可以示出扫描期间所捕获的点。例如,中的点可能会在具有间隔Δt的[tk-1,tk]期间被捕获。对于时间t∈[tk-1,tk]处的点(例如,LiDAR点、传感器点),可以通过在Tk-1与Tk之间内插(例如,线性内插)相对姿势Tk,k-1来获得姿势/>
返回到示例方法500,执行定位还可以包括执行姿势估计和/或姿势非失真。例如,扫描k-1和扫描k之间的刚性变换可以被定义为Tk,k-1,并且(Rk,k-1,tk,k-1)可以是对应的旋转和平移。ωk,k-1可以是Rk,k-1的角轴表示,并且xk,k-1=[ωk,k-1;tk,k-1]可以用于参数化Tk,k-1。
扫描k-1和扫描k的最后一个点处的刚性变换可以分别为Tk-1和Tk。Tk-1、Tk与Tk,k-1之间的关系可由下式给出:
(4) Tk=Tk-1Tk,k-1
如果xk,k-1被计算,则可以得到Tk,k-1,并且可以求解Tk。
LiDAR的测量可以在不同时间获得。当LiDAR在获取测量时移动时,LiDAR点云可能会因运动而失真。可以针对每个点通过内插(例如,线性内插)姿势来减少失真。tk-1和tk可以分别是扫描k-1和k的最后点的时间。对于t∈(tk-1,tk],s可以被定义如下:
则在t∈[tk-1,tk]处刚性变换的/>和/>可以通过线性内插来估计:
(6)/>
如上所述,一组点到平面的对应关系可以对于扫描/>获得。并且第j个点/>可以在时间tk,i,j被捕获。/> 的残差可以写成:
(7)
可以定义以下等式:
(8)
将等式(8)代入等式(7)可得:
(9)
可能有Nk组点到平面的对应关系并且/>可能具有Nk,i个点。对于xk,k-1的最小二乘成本函数可以是:
(10)
等式(10)提出的最小二乘问题可以通过Levenberg-Marquardt(LM)方法来求解。
在一些实施例中,扫描内的运动很小。因此,(例如,根据等式(6))可以通过一阶泰勒展开来近似:
(11)
此外,还可以定义以下内容:
(12)
将式(11)中的一阶近似和式(12)的定义代入式(9)并展开(9),可得到xk,k-1的线性约束:
(13) ak,i,jxk,k-1=bk,i,j,其中
通过叠加(stack)中的所有约束,可以得到xk,k-1的线性***:
(14) Akxk,k-1=bk
因此,可以获得闭式解:Rk,k-1可以通过指数图(例如,等式(2))来恢复。/>
在一些实施例中,当在和/>之间的旋转很大时,等式(11)中的一阶泰勒展开可能无法充分逼近等式(2)。当/>和/>之间的旋转很大时,可以迭代地细化解。例如,基于等式(14)的初步估计/>可以生成初始变换矩阵/>根据初始估计和等式(2),可以计算出/>如果/>大于度数阈值(例如,1度),则可以更新以下内容:其中/>是在时间tk,i,j处的线性内插/>通过等式(6)计算。
基于更新,可以使用新的来生成等式(14)的新的线性***。可以求解新的线性***以获得/>和随后的/>重复这些步骤直到/>小于度数阈值(例如,1度)。例如,如果执行n次迭代,则可以通过以下方式恢复Tk,k-1的最终结果:
(15)
执行定位还可以包括确定是否需要***新的关键帧。例如,如果满足以下条件之一,则需要***新的关键帧:(1)当前扫描与最后关键帧之间的距离大于阈值距离(例如,0.2m),或(2)当前扫描中的点的阈值百分比(例如,20%)未被跟踪。根据需要***新的关键帧的确定,***新的关键帧。在一些实施例中,响应于正***新的关键帧,执行局部映射。在一些示例中,当满足这些条件之一并且已经执行了针对最后关键帧的局部映射时,则针对新***的关键帧执行局部映射。
在一些实施例中,方法500包括执行局部映射(步骤506)。在局部映射期间,可以优化由这些关键帧观察到的平面和/或窗口内的关键帧姿势,而窗口外的关键帧姿势保持固定。执行局部映射可以包括检测剩余点云中的平面。
作为示例,对于新的关键帧,可以通过应用等式(6)的变换来使对应的扫描不失真。然后,保留尚未被跟踪的点的平面和包括多于阈值数量(例如,50个)点的平面。
执行局部映射可以包括生成推定的(putative)局部到全局的匹配。例如,使用已知的姿势,来自该检测的新局部平面可以与全局平面匹配。平面法线可以首先用于选择候选全局平面。例如,考虑其法线几乎平行于局部平面(例如,它们之间的角度小于阈值角度(例如,10度))的全局平面。
执行局部映射可以包括检查匹配和***新平面。例如,可以计算局部平面点与(例如,从上述步骤中选择的)候选全局平面之间的距离,并且保留与最小平均距离相关联的候选。对于保留的候选,如果点到平面距离的阈值百分比(例如,90%)小于阈值距离γ,则接受该对应关系。如果点到平面距离的阈值百分比(例如,90%)小于阈值距离γ的两倍,则可以执行进一步的几何一致性检查(GCC)。如果这两个条件都不满足,则引入新的全局平面。
可执行GCC以进一步验证局部平面与(例如,基于上述步骤识别的)候选全局平面之间的对应关系。对于原始对应关系,等式(14)中描述的线性***可以被构造并表示为然后,对于每个新对应关系(例如,第i个新对应关系),可以构造新线性***,表示为/>对于每个新对应关系的增强线性***可以被求解:/>
如果是/>的解,则可能需要满足以下条件:
(A)
(b)点到平面距离的阈值百分比(例如,90%)小于阈值距离γ。
在一些实施例中,λ被设置为1.1。如果基于上述步骤添加新的对应关系,则使用所有对应关系(包括新的对应关系)重新估计姿势。
可以通过求解正规等式来有效地求解等式(16)。可以发现/>和/>并且项/>和/>可能主导计算并且可以在所有新的线性***之间共享。因此,这些项可以有利地仅需要计算一次。另外,可以有效地求解包括所有约束的最终线性***,因为对于所有i都获得/>
执行局部映射可以包括执行局部PBA和更新地图。例如,如果找到至少一个新的局部到全局平面对应关系(例如,根据上述步骤,确定局部平面与全局平面共面),或者如果SLAM***正在初始化,则全局PBA(例如,关于步骤508描述的)可以被执行。否则,可以执行局部PBA。
在一些实施例中,局部映射优化滑动窗口内的关键帧以及由这些关键帧观察到的平面。例如,滑动窗口的大小为Nw,可以设置为5。最新的Nw个关键帧可以形成集合由Nw个关键帧观察到的平面可以形成集合/>看到集合/>中的平面的滑动窗口之外的关键帧形成集合/> 中关键帧的姿势可能是固定的。在一些实施例中,在局部映射期间,最小化以下成本函数:
(17)
其中,第一集合的总和可以被定义为Cw,并且第二集合的总和可以被定义为Cf。可能是由第i个关键帧观察到的平面集合,并且/>可能是看到第j个平面πj的滑动窗口之外的关键帧的集合。Jw和Jf可以分别是Cw中的残差δw和Cf中的残差δf的Jacobian矩阵。那么,基于等式(17)和相应的Jacobian矩阵Jl的残差δl矢量可以具有以下形式:
(18)
图7示出了根据本公开的实施例的示例性因子图。例如,示例性因子图700是与窗口大小为三的(例如,在上述步骤中描述的)局部映射的环境的观察相关联的因子图。在局部映射期间,滑动窗口内的姿势(例如,x4、x5、x6)和平面(例如,π4、π5、π6)可以被优化,并且其他姿势(例如,x1、x2、x3)和平面(例如,π1)可以被固定。可以是在关键帧xi处记录的平面πj的一组点。成本函数可以包括两部分,Cf和Cw,如关于等式(17)所描述的。
返回到示例方法500,LM算法可用于通过求解***的线性等式来计算步长矢量。直接计算δl和Jl可能比较耗时。δw和Jw可以被简化,并且δf和Jf可以如下计算。
对于Cf中的δf和姿势Tm处的平面πj,根据等式(17)的δmjk(ηj)可重写为:
(19)
滑动窗口之外的关键帧的姿势可以是固定的。在等式(19)中通过堆叠Kmj残差δmjk(ηj),可以获得以下残差矢量:
(20)
其中,和/>
通过堆叠所有可以得到在滑动窗口之外对于πj的约束:
(21)
其中,
因此,Cf中的残差矢量δf(ηj)可以通过堆叠所有得到,并且可以具有以下形式:
(22) δf=[…,δj(ηj)T,…]T
为了计算Jf,可以先计算δmjk(η)的导数(derivative)。ηj可以定义为ηj=[ηj1,ηj2,ηj3]T。则关于ηj的δmjk(η)的导数可能具有以下形式:
(23)
其中,
使用等式(21),δj(ηj)的Jacobian矩阵可写为:
(24) Jj=[0…,PjVj,…0]
可以被叠加,以得到等式(22)中残差的Jacobian矩阵Jf:
(25)
在一些实施例中,由于在扫描(例如,LiDAR扫描、被配置为捕获多个点的传感器的扫描)期间所记录的点的数量,计算等式(22)中的δf和等式(25)中的Jf可能是耗时的。整体点到平面的成本可以显着减少该计算时间。
使用等式(21),可以计算等式(17)中Cf的最后两个总和:
(26)
其中,
可以是4×4矩阵Hj的Cholesky分解。Lj可以是4×4下三角矩阵。因为Hj是4x4矩阵,所以Cholesky分解的运行时间可能并不重要,从而有利地减少与点到平面成本计算相关联的计算时间。Cj可以称为平面πj的整体点到平面的成本,并且Hj可以称为整体成本矩阵。Lj可以提供执行LM算法所需的信息。可以定义以下内容:
(27)
其中,和/>
可以包括执行LM算法所需的信息,有利地减少与点到平面的成本计算相关联的计算时间。可以提出以下引理:
引理1:
证明:在一些实施例中,在等式(25)中定义的Jf并且在等式(27)中定义的是分块矢量。使用分块矩阵乘法规则,可以得到以下:
(28)
根据等式(24)中Jj的定义,具有非零项/>根据等式(26)中限定的Hj的定义:
(29)
类似地,根据等式(27)中的定义,/>具有非零项/>并且基于等式(26)/>
(30)
因此,根据等式(29)和(30),因此,根据等式(28),/>
引理2:
证明:根据等式(25)、(22)和(27),Jf、δf、和/>是具有元素)、Jj、/>δj和/>的分块矢量。利用分块矩阵乘法规则,可以得到以下:
(31)
根据等式(24)中Jj的定义以及等式(21)中δj的定义,具有非零项并且根据等式(26)中限定的Hj的定义:
(32)
类似地,根据等式(27)中和/>的定义,/>具有非零项/>并且基于等式(26)/>
(33)
因此,根据等式(32)和(33),因此,根据等式(31)
引理3:在一些示例中,δj(ηj)中存在Kj个约束,如等式(21)中所定义。用于计算和/>的运行时间分别相对于与原始计算Jj、δj、/>和/>相关联的项可以有利地为/>
证明:通过比较等式(27)中的和/>与等式(24)中的Ij和等式(21)中的δj,两对之间的差异可以是使用Lj来代替Pj。Lj有四行,Pij有Kj行。因此,用于计算/>和/>的运行时间相对于计算Ij和δj是/>并且有利地被减少。另外,根据矩阵乘法的规则,计算/>和的运行时间分别相对于计算/>和/>是/>并且有利地被减少。
如上所述,等式(26)中的整体成本矩阵Hj对于简化与成本函数相关的计算可能是至关重要的。在一些实施例中,Hj总结了在滑动窗口之外在关键帧处从平面πj的观察导出的成本。如果观察的量较多,每次从头开始计算Hj可能会很耗时。因此,在一些实施例中,可以增量地计算Hj以避免冗余计算并减少计算整体成本矩阵Hj的计算时间。
例如,在滑动窗口之外可能有K个关键帧已经看到平面πj,从而产生基于等式(26)计算的相应的δnj(ηnj)=Pnjπj,如等式(21)中所定义,可以是从在第n个关键帧处的πj的观察导出的残差矢量,其将移出滑动窗口。
使用等式(26)中Hj的定义和等式(21)中Pj的定义,对于K+1个观察的可得:
(34)/>
根据等式(34),对于每个全局平面,维持整体成本矩阵Hj,并通过更新/>在一些实施例中,当关键帧移出滑动窗口时,使用等式(34)来更新由该关键帧观察到的平面的整体矩阵。
图8示出了根据本公开的实施例的更新整体成本矩阵的示例性示意图800。例如,示意图800示出了如何递增地更新整体成本矩阵Hj。例如,第n个关键帧即将移出滑动窗口,并且滑动窗口之外存在πj的K组观察。Pnj可以根据在第n个关键帧处的πj的观察(例如,由阴影所示)以等式(20)定义的形式来获得。由更新/>
返回示例方法500并且具体地返回等式(17),可能期望最小化等式(17),因为在一些实施例中,等式(17)是大规模优化问题。来自等式(18)的残差矢量δl和对应的Jacobian矩阵Jl可以被简化。等式(18)中的Jw和δw可以由使用LM算法获得的简化Jacobian和简化残差矢量/>来代替。进一步来说,/>和/>并且可以定义以下内容:
(35)
基于此,可以推导出以下定理。
定理:和/>
证明:基于根据等式(18)的Jl和δl的定义以及根据等式(35)的和/>的定义,可得以下关系:
(36)
正如所讨论的,并且/>因此,/>类似地,/>和/>因此,/>
根据上述定理,和/>可以用来代替LM算法中的Jl和δl。在一些实施例中,/>和具有比Jl和δl更低的尺寸;因此,通过推导和使用/>和/>可以有利地减少计算时间。
在一些实施例中,当确定环路闭合时,执行全局PBA。例如,根据已重新访问先前平面的确定,确定环路闭合,并且根据环路闭合的确定,执行全局PBA。在一些实施例中,全局PBA可以通过最小化点到平面距离来联合优化LiDAR(或类似传感器)姿势和平面参数。
在一些实施例中,方法500包括执行全局映射(步骤508)。在全局映射期间,关键帧姿势和/或平面参数可以被全局优化(例如,与局部映射相比,没有窗口)。执行全局映射可以包括执行全局PBA和/或更新地图。
例如,存在M个平面和N个关键帧,对于第i个姿势的变换矩阵可以是Ti,并且第j个平面包括参数πj。第i个姿势处的第j个平面的测量可以是一组Kij点,定义为:
(37)
每个可以对第i个姿势和第j个平面提供一个约束。基于等式(3),对于的残差δijk可以表示为:
(38)
xi和ηj可以分别表示Ti和πj的参数化。δijk可能是xi和ηj的函数。PBA过程可以通过最小化以下最小二乘问题(可以有效求解)来联合细化xi(i≠1)和ηj:
(39)
等式(39)的原始Jacobian矩阵和原始残差矢量可以分别是Jg和rg。与本文描述的方法(例如,关于局部PBA)类似,可以使用简化的Jacobian矩阵和简化的残差矢量/>来代替LM算法中的Jg和rg,从而减少计算时间。
在姿势被细化之后,可能需要更新整体成本矩阵Hj。如先前所讨论的,可以有效地执行更新。根据等式(34),计算Hj可能很关键。根据等式(20),Pnj可被表示为:
(40)
在一些实施例中,是固定量并且可能只需要计算一次。根据等式(40),在执行PBA之后,可以使用细化姿势Tn来更新/>然后可以更新Hj。由于/>可能是一个很大的固定量,并且可能只需要计算一次,因此/>可能只需要被更新,可以有利地减少Hj的计算时间。
图9示出了根据本公开的实施例的示例性因子图900。例如,因子图900与环境的观察和具有N个姿势和M个平面的PBA相关联。xi可以代表第i个关键帧,πj可以代表第j个全局平面,并且可以是在xi处捕获的πj的一组观察。在此示例中,在x1此优化期间是固定的,并且所示的PBA问题包括联合优化关键帧姿势/>和平面参数/>
根据一些实施例,一种方法包括:扫描环境,其中,所述扫描包括用传感器检测环境的多个点;识别环境的第一平面,其中第一平面包括所检测的多个点中的至少阈值数量的点;获得与环境相关联的多个观察,多个观察包括第一观察子集和第二观察子集;确定第一平面是否与环境的第二平面共面;根据确定第一平面与第二平面共面,基于第一观察子集并进一步基于第二观察子集来执行平面束调整;以及根据确定第一平面与第二平面不共面,基于第一观察子集而不基于第二观察子集执行平面束调整。
根据一些实施例,传感器包括LiDAR传感器。
根据一些实施例,第一平面的法线包括在朝向与传感器相关联的观察中心的方向上的矢量。
根据一些实施例,对第一观察子集执行平面束调整还包括:计算与在与第一子集相关联的滑动窗口中的关键帧姿势相关联的成本函数。
根据一些实施例,该方法还包括:确定所扫描的环境的一部分与第一关键帧之间的距离;根据所扫描的环境的该部分与最后关键帧之间的距离大于阈值距离的确定,***第二关键帧;并且根据所扫描的环境的该部分与最后关键帧之间的距离不大于阈值距离的确定,放弃***第二关键帧。
根据一些实施例,该方法还包括:确定正被跟踪的点的百分比,其中,第一平面包括正被跟踪的点;根据确定正被跟踪的点的百分比小于阈值百分比,***关键帧;并根据确定正被跟踪的点的百分比不小于阈值百分比,放弃***关键帧。
根据一些实施例,该方法还包括:确定整体成本矩阵,其中,执行平面束调整包括使用整体成本矩阵来计算成本函数。
根据一些实施例,该方法还包括:基于先前的整体成本矩阵来更新整体成本矩阵。
根据一些实施例,该方法还包括:估计关键帧姿势。
根据一些实施例,该方法还包括:对关键帧姿势的点进行线性内插。
根据一些实施例,该方法还包括:基于平面束调整来更新环境的地图。
根据一些实施例,环境包括混合现实环境。
根据一些实施例,传感器包括混合现实设备的传感器。
根据一些实施例,该方法还包括:执行Levenberg-Marquardt方法来求解最小二乘函数。
根据一些实施例,该方法还包括:根据确定第一平面与第二平面不共面,将第一平面***与环境相关联的地图;以及根据确定第一平面与第二平面共面,放弃将第一平面***与环境相关联的地图。
根据一些实施例,确定第一平面是否与第二平面共面还包括:确定点到平面距离的阈值百分比是否小于阈值距离。
根据一些实施例,确定第一平面是否与第二平面共面还包括:执行几何一致性检查。
根据一些实施例,该方法还包括:在存储器中存储与环境相关联的多个观察。
根据一些实施例,该方法还包括:传输关于环境的信息,其中,关于环境的信息和与该环境相关联的多个观察相关联。
根据一些实施例,一种***包括:传感器,以及一个或多个处理器,该一个或多个处理器被配置为使该***执行一种方法,该方法包括:扫描环境,其中,所述扫描包括用传感器检测环境的多个点;以及识别环境的第一平面,其中,第一平面包括所检测的多个点中的至少阈值数量的点;获得与环境相关联的多个观察,多个观察包括第一观察子集和第二观察子集;确定第一平面与环境的第二平面是否共面;根据确定第一平面与第二平面共面,基于第一观察子集并进一步基于第二观察子集来执行平面束调整;以及根据确定第一平面与第二平面不共面,基于第一观察子集而不基于第二观察子集执行平面束调整。
根据一些实施例,传感器包括LiDAR传感器。
根据一些实施例,第一平面的法线包括在朝向与传感器相关联的观察中心的方向上的矢量。
根据一些实施例,对第一观察子集执行平面束调整还包括:计算与在与第一子集相关联的滑动窗口中的关键帧姿势相关联的成本函数。
根据一些实施例,该方法还包括:确定所扫描的环境的一部分与第一关键帧之间的距离;根据所扫描的环境的该部分与最后关键帧之间的距离大于阈值距离的确定,***第二关键帧;并且根据所扫描的环境的该部分与最后关键帧之间的距离不大于阈值距离的确定,放弃***第二关键帧。
根据一些实施例,该方法还包括:确定正被跟踪的点的百分比,其中,第一平面包括正被跟踪的点;根据确定正被跟踪的点的百分比小于阈值百分比,***关键帧;并根据确定正被跟踪的点的百分比不小于阈值百分比,放弃***关键帧。
根据一些实施例,该方法还包括:确定整体成本矩阵,其中,执行平面束调整包括使用整体成本矩阵来计算成本函数。
根据一些实施例,该方法还包括:基于先前的整体成本矩阵来更新整体成本矩阵。
根据一些实施例,该方法还包括:估计关键帧姿势。
根据一些实施例,该方法还包括:对关键帧姿势的点进行线性内插。
根据一些实施例,该方法还包括:基于平面束调整来更新环境的地图。
根据一些实施例,环境包括混合现实环境。
根据一些实施例,传感器包括混合现实设备的传感器。
根据一些实施例,该方法还包括:执行Levenberg-Marquardt方法来求解最小二乘函数。
根据一些实施例,该方法还包括:根据确定第一平面与第二平面不共面,将第一平面***与环境相关联的地图;以及根据确定第一平面与第二平面共面,放弃将第一平面***与环境相关联的地图。
根据一些实施例,确定第一平面是否与第二平面共面还包括:确定点到平面距离的阈值百分比是否小于阈值距离。
根据一些实施例,确定第一平面是否与第二平面共面还包括:执行几何一致性检查。
根据一些实施例,该方法还包括:在存储器中存储与环境相关联的多个观察。
根据一些实施例,该方法还包括:传输关于环境的信息,其中,关于环境的信息和与该环境相关联的多个观察相关联。
根据一些实施例,一种存储一个或多个程序的非暂时性计算机可读存储介质,一个或多个程序包括指令,当指令由具有一个或多个处理器和存储器的电子设备执行时,使得设备执行包括以下的方法:扫描环境,其中,所述扫描包括用传感器检测环境的多个点;识别环境的第一平面,其中,第一平面包括所检测的多个点中的至少阈值数量的点;获得与环境相关联的多个观察,多个观察包括第一观察子集和第二观察子集;确定第一平面是否与环境的第二平面共面;根据确定第一平面与第二平面共面,基于第一观察子集并进一步基于第二观察子集来执行平面束调整;以及根据确定第一平面与第二平面不共面,基于第一观察子集而不基于第二观察子集执行平面束调整。
根据一些实施例,传感器包括LiDAR传感器。
根据一些实施例,第一平面的法线包括在朝向与传感器相关联的观察中心的方向上的矢量。
根据一些实施例,对第一观察子集执行平面束调整还包括:计算与在与第一子集相关联的滑动窗口中的关键帧姿势相关联的成本函数。
根据一些实施例,该方法还包括:确定所扫描的环境的一部分与第一关键帧之间的距离;根据所扫描的环境的该部分与最后关键帧之间的距离大于阈值距离的确定,***第二关键帧;并且根据所扫描的环境的该部分与最后关键帧之间的距离不大于阈值距离的确定,放弃***第二关键帧。
根据一些实施例,该方法还包括:确定正被跟踪的点的百分比,其中,第一平面包括正被跟踪的点;根据确定正被跟踪的点的百分比小于阈值百分比,***关键帧;并根据确定正被跟踪点的百分比不小于阈值百分比,放弃***关键帧。
根据一些实施例,该方法还包括:确定整体成本矩阵,其中,执行平面束调整包括使用整体成本矩阵来计算成本函数。
根据一些实施例,该方法还包括:基于先前的整体成本矩阵来更新整体成本矩阵。
根据一些实施例,该方法还包括:估计关键帧姿势。
根据一些实施例,该方法还包括:对关键帧姿势的点进行线性内插。
根据一些实施例,该方法还包括:基于平面束调整来更新环境的地图。
根据一些实施例,环境包括混合现实环境。
根据一些实施例,传感器包括混合现实设备的传感器。
根据一些实施例,该方法还包括:执行Levenberg-Marquardt方法来求解最小二乘函数。
根据一些实施例,该方法还包括:根据确定第一平面与第二平面不共面,将第一平面***与环境相关联的地图;以及根据确定第一平面与第二平面共面,放弃将第一平面***与环境相关联的地图。
根据一些实施例,确定第一平面是否与第二平面共面还包括:确定点到平面距离的阈值百分比是否小于阈值距离。
根据一些实施例,确定第一平面是否与第二平面共面还包括:执行几何一致性检查。
根据一些实施例,该方法还包括:在存储器中存储与环境相关联的多个观察。
根据一些实施例,该方法还包括:传输关于环境的信息,其中,关于环境的信息和与该环境相关联的多个观察相关联。
尽管已经参照附图充分地描述了所公开的示例,但是应当注意的是,各种改变和修改对于本领域技术人员来说将是显而易见的。例如,一个或多个实施方式的元素可以被组合、删除、修改或补充以形成进一步的实施方式。这些改变和修改应被理解为包括在由所附权利要求限定的公开示例的范围内。
Claims (20)
1.一种方法,包括:
扫描环境,其中,所述扫描包括用传感器检测所述环境的多个点;
识别所述环境的第一平面,其中,所述第一平面包括所检测的多个点中的至少阈值数量的点;
获得与所述环境相关联的多个观察,所述多个观察包括第一观察子集和第二观察子集;
确定所述第一平面是否与所述环境的第二平面共面;
根据所述第一平面与所述第二平面共面的确定,基于所述第一观察子集并进一步基于所述第二观察子集,执行平面束调整;以及
根据所述第一平面与所述第二平面不共面的确定,基于所述第一观察子集而不基于所述第二观察子集,执行平面束调整。
2.根据权利要求1所述的方法,其中,所述传感器包括LiDAR传感器。
3.根据权利要求1所述的方法,其中,所述第一平面的法线包括在朝向与所述传感器相关联的观察中心的方向上的矢量。
4.根据权利要求1所述的方法,其中,对所述第一观察子集执行平面束调整还包括:计算与在与所述第一子集相关联的滑动窗口中的关键帧姿势相关联的成本函数。
5.根据权利要求1所述的方法,还包括:
确定所扫描的环境的一部分与第一关键帧之间的距离;
根据所扫描的环境的所述部分与所述第一关键帧之间的所述距离大于阈值距离的确定,***第二关键帧;以及
根据所扫描的环境的所述部分与所述第一关键帧之间的所述距离不大于所述阈值距离的确定,放弃***第二关键帧。
6.根据权利要求1所述的方法,还包括:
确定正被跟踪的点的百分比,其中,所述第一平面包括正被跟踪的所述点;
根据正被跟踪的点的所述百分比小于阈值百分比的确定,***关键帧;以及
根据正被跟踪的点的所述百分比不小于所述阈值百分比的确定,放弃***所述关键帧。
7.根据权利要求1所述的方法,还包括:确定整体成本矩阵,其中,执行平面束调整包括:使用所述整体成本矩阵来计算成本函数。
8.根据权利要求1所述的方法,还包括:估计关键帧姿势。
9.根据权利要求1所述的方法,还包括:线性内插关键帧姿势的点。
10.根据权利要求1所述的方法,还包括:基于所述平面束调整,更新所述环境的地图。
11.根据权利要求1所述的方法,其中,所述环境包括混合现实环境。
12.根据权利要求1所述的方法,其中,所述传感器包括混合现实设备的传感器。
13.根据权利要求1所述的方法,还包括:
根据所述第一平面与所述第二平面不共面的确定,将所述第一平面***与所述环境相关联的地图;以及
根据所述第一平面与所述第二平面共面的确定,放弃将所述第一平面***与所述环境相关联的所述地图。
14.根据权利要求1所述的方法,其中,确定所述第一平面是否与所述第二平面共面还包括:确定点到平面距离的阈值百分比是否小于阈值距离。
15.根据权利要求1所述的方法,其中,确定所述第一平面是否与所述第二平面共面还包括:执行几何一致性检查。
16.根据权利要求1所述的方法,还包括:在存储器中存储与所述环境相关联的所述多个观察。
17.根据权利要求1所述的方法,还包括:传输关于所述环境的信息,其中,关于所述环境的所述信息和与所述环境相关联的所述多个观察相关联。
18.一种***,包括:
传感器,以及
一个或多个处理器,其被配置为使所述***执行一种方法,所述方法包括:
扫描环境,其中,所述扫描包括用所述传感器检测所述环境的多个点;
识别所述环境的第一平面,其中,所述第一平面包括所检测的多个点中的至少阈值数量的点;
获得与所述环境相关联的多个观察,所述多个观察包括第一观察子集和第二观察子集;
确定所述第一平面是否与所述环境的第二平面共面;
根据所述第一平面与所述第二平面共面的确定,基于所述第一观察子集并进一步基于所述第二观察子集,执行平面束调整;以及
根据所述第一平面与所述第二平面不共面的确定,基于所述第一观察子集而不基于所述第二观察子集,执行平面束调整。
19.根据权利要求18所述的***,其中,所述传感器包括LiDAR传感器。
20.一种存储一个或多个程序的非暂时性计算机可读存储介质,所述一个或多个程序包括指令,所述指令当由具有一个或多个处理器和存储器的电子设备执行时使得所述设备执行一种方法,所述方法包括:
扫描环境,其中,所述扫描包括用传感器检测所述环境的多个点;
识别所述环境的第一平面,其中,所述第一平面包括所检测的多个点中的至少阈值数量的点;
获得与所述环境相关联的多个观察,所述多个观察包括第一观察子集和第二观察子集;
确定所述第一平面是否与所述环境的第二平面共面;
根据所述第一平面与所述第二平面共面的确定,基于所述第一观察子集并进一步基于所述第二观察子集,执行平面束调整;以及
根据所述第一平面与所述第二平面不共面的确定,基于所述第一观察子集而不基于所述第二观察子集,执行平面束调整。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163149037P | 2021-02-12 | 2021-02-12 | |
US63/149,037 | 2021-02-12 | ||
PCT/US2022/070642 WO2022174263A1 (en) | 2021-02-12 | 2022-02-11 | Lidar simultaneous localization and mapping |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116868151A true CN116868151A (zh) | 2023-10-10 |
Family
ID=82837985
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280014599.7A Pending CN116868151A (zh) | 2021-02-12 | 2022-02-11 | 激光雷达同时定位和地图构建 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20240062403A1 (zh) |
EP (1) | EP4291973A1 (zh) |
JP (1) | JP2024512211A (zh) |
CN (1) | CN116868151A (zh) |
WO (1) | WO2022174263A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115375902B (zh) * | 2022-10-26 | 2023-03-24 | 昆明理工大学 | 一种基于多光谱激光雷达点云数据的超点分割方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2479998A1 (en) * | 2011-01-21 | 2012-07-25 | Thomson Licensing | Method and system for aligning cameras |
US8862138B2 (en) * | 2011-02-09 | 2014-10-14 | Nokia Corporation | Forecasting of dynamic environmental parameters to optimize operation of a wireless communication system |
CA3164530C (en) * | 2011-10-28 | 2023-09-19 | Magic Leap, Inc. | System and method for augmented and virtual reality |
KR102331164B1 (ko) * | 2015-03-05 | 2021-11-24 | 매직 립, 인코포레이티드 | 증강 현실을 위한 시스템들 및 방법들 |
EP3078935A1 (en) * | 2015-04-10 | 2016-10-12 | The European Atomic Energy Community (EURATOM), represented by the European Commission | Method and device for real-time mapping and localization |
-
2022
- 2022-02-11 JP JP2023547795A patent/JP2024512211A/ja active Pending
- 2022-02-11 EP EP22753567.1A patent/EP4291973A1/en active Pending
- 2022-02-11 US US18/264,572 patent/US20240062403A1/en active Pending
- 2022-02-11 CN CN202280014599.7A patent/CN116868151A/zh active Pending
- 2022-02-11 WO PCT/US2022/070642 patent/WO2022174263A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP4291973A1 (en) | 2023-12-20 |
US20240062403A1 (en) | 2024-02-22 |
JP2024512211A (ja) | 2024-03-19 |
WO2022174263A1 (en) | 2022-08-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11763559B2 (en) | 3D object annotation | |
US11935180B2 (en) | Dual IMU SLAM | |
US9165381B2 (en) | Augmented books in a mixed reality environment | |
US20140368537A1 (en) | Shared and private holographic objects | |
US11861803B2 (en) | Session manager | |
US11797720B2 (en) | Tool bridge | |
US11561613B2 (en) | Determining angular acceleration | |
JP2023100820A (ja) | 空間コンピューティングのための写実的キャラクタ構成 | |
WO2021163224A1 (en) | Dynamic colocation of virtual content | |
US20240062403A1 (en) | Lidar simultaneous localization and mapping | |
EP4150519A1 (en) | Computationally efficient method for computing a composite representation of a 3d environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |