CN110383340A - 使用稀疏体积数据进行路径规划 - Google Patents

使用稀疏体积数据进行路径规划 Download PDF

Info

Publication number
CN110383340A
CN110383340A CN201780063370.1A CN201780063370A CN110383340A CN 110383340 A CN110383340 A CN 110383340A CN 201780063370 A CN201780063370 A CN 201780063370A CN 110383340 A CN110383340 A CN 110383340A
Authority
CN
China
Prior art keywords
voxel
volume
data
level
detail
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.)
Granted
Application number
CN201780063370.1A
Other languages
English (en)
Other versions
CN110383340B (zh
Inventor
D·M·莫洛尼
J·D·拜恩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Movidius Ltd Netherland
Original Assignee
Movidius Ltd Netherland
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Movidius Ltd Netherland filed Critical Movidius Ltd Netherland
Publication of CN110383340A publication Critical patent/CN110383340A/zh
Application granted granted Critical
Publication of CN110383340B publication Critical patent/CN110383340B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/28Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network with correlation of data from several navigational instruments
    • G01C21/30Map- or contour-matching
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0212Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory
    • G05D1/0214Control of position or course in two dimensions specially adapted to land vehicles with means for defining a desired trajectory in accordance with safety or protection criteria, e.g. avoiding hazardous areas
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0268Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means
    • G05D1/0274Control of position or course in two dimensions specially adapted to land vehicles using internal positioning means using mapping information stored in a memory device
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/20Control system inputs
    • G05D1/24Arrangements for determining position or orientation
    • G05D1/246Arrangements for determining position or orientation using environment maps, e.g. simultaneous localisation and mapping [SLAM]
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/60Intended control result
    • G05D1/617Safety or protection, e.g. defining protection zones around obstacles or avoiding hazards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/05Geographic models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/579Depth or shape recovery from multiple images from motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • G06T7/593Depth or shape recovery from multiple images from stereo images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/75Determining position or orientation of objects or cameras using feature-based methods involving models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • G06V20/13Satellite images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • G06V20/17Terrestrial scenes taken from planes or by drones
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10032Satellite or aerial image; Remote sensing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30248Vehicle exterior or interior
    • G06T2207/30252Vehicle exterior; Vicinity of vehicle
    • G06T2207/30261Obstacle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/08Bandwidth reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/004Annotating, labelling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Data Mining & Analysis (AREA)
  • Geometry (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Astronomy & Astrophysics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

将在由成像传感器生成的图像数据中捕获的几何结构视图与体积数据结构中的几何结构的描述进行比较。所述体积数据结构以多个细节层次描述所述体积,并且包括描述限定处于所述多个细节层次的所述体积的子体积的体素的条目。所述体积数据结构包括用于以所述细节层次中的最低细节层次描述体素的第一条目,并且进一步包括用于以更高的第二细节层次描述体素的多个第二条目,处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积。这些条目中的每一个包括用于指示所述体素中的相应体素是否至少部分地被所述几何结构占据的位。这些条目中的一个或多个用于与所述图像数据进行比较。

Description

使用稀疏体积数据进行路径规划
相关申请
本申请要求于2016年8月19日提交的美国临时专利申请序列号62/377,471的权益,并且所述美国临时专利申请通过引用以其全文结合于此。
技术领域
本公开总体上涉及计算机系统领域,并且更具体地,涉及计算机视觉和增强或混合现实系统。
背景技术
随着诸如来自MagicLeapTM、MicrosoftTM HoloLensTM、OculusTM RiftTM的那些增强现实(AR)、虚拟现实(VR)和混合现实(MR)产品以及诸如来自ValveTM和HTCTM的系统等其他VR系统的出现,计算机视觉和图形的世界迅速融合。这种系统中的现有方法是使用并行运行的分开的图形处理单元(GPU)和计算机视觉子系统。这些并行系统可以由与在处理器阵列和/或可编程硬件加速器阵列上运行的软件中实施的计算机视觉流水线并行的预先存在的GPU来组装。
附图说明
当结合以下附图考虑时,参考下面对所公开主题的详细描述,可以更充分地理解所公开主题的各种目的、特征和优点,在附图中相似的附图标记表示相似的元件。这些附图是示意性的,并且不旨在按比例绘制。为了清楚起见,在每个附图中并非每个组件都被标记。也并未示出所公开主题的每个实施例的每个组件,其中图示无需允许本领域普通技术人员理解所公开主题。
图1展示了常规的增强或混合现实渲染系统;
图2展示了根据一些实施例的基于体素的增强或混合现实渲染系统;
图3展示了根据一些实施例的密集体积表示与稀疏体积表示之间的差异;
图4展示了根据一些实施例的场景的复合视图;
图5展示了根据一些实施例的示例元素树结构中的细节层次;
图6展示了根据一些实施例的可以利用本申请的数据结构和体素数据的应用;
图7展示了根据一些实施例的用于辨识3D数字的示例网络;
图8展示了根据一些实施例的使用隐含的细节层次来对同一数据结构执行的多种分类;
图9展示了根据一些实施例的2D卷积神经网络的操作消除;
图10展示了根据一些实施例的来自对示例测试图像的分析的实验结果;
图11展示了根据一些实施例的用于剔除操作的硬件;
图12展示了根据一些实施例的对用于剔除操作的硬件的精化;
图13展示了根据一些实施例的硬件;
图14展示了根据一些实施例的使用示例体积数据来合成音频流;
图15展示了根据一些实施例的可重复使用混响滤波器元件的示例;
图16展示了根据一些实施例的FIR混响滤波器的构造;
图17示出了根据一些实施例的FIR混响滤波器的向量化实施方式;
图18示出了根据一些实施例的使用向量化处理进行的光线投射;
图19描绘了根据一些实施例的示例多时隙向量处理器;
图20展示了根据一些实施例的示例体积加速硬件;
图21展示了根据一些实施例的体素立方体的组织;
图22展示了根据一些实施例的两级稀疏体素树;
图23展示了根据一些实施例的两级稀疏体素树;
图24展示了根据一些实施例的示例体素数据的存储;
图25展示了根据一些实施例的将体素插入示例体积数据结构中;
图26展示了根据一些实施例的用于将体素插入示例体积数据结构中的逻辑;
图27展示了根据一些实施例的用于生成地址三元组以控制多路复用器的逻辑;
图28展示了根据一些实施例的地址选择逻辑;
图29展示了根据一些实施例的示例3D体积对象的投影;
图30展示了涉及示例体积数据结构的示例操作;
图31示出了根据一些实施例的示例3D到2D投影的硬件组织;
图32示出了根据一些实施例的使用投影来生成简化地图;
图33展示了根据一些实施例的来自嵌入式设备的示例体积3D和/或简单2D测量结果的示例聚合;
图34展示了一些实施例中的X、Y或Z上的示例投影;
图35示出了根据一些实施例的由2D位图生成直方图金字塔的示例加速;
图36示出了根据一些实施例的由3D位图生成直方图金字塔的示例加速;
图37示出了根据一些实施例的在2D 2×2位图上进行2D路径查找的示例加速;
图38示出了根据一些实施例的在2D 2×2位图上进行2D路径查找的示例加速;
图39示出了根据一些实施例的使用示例体积数据结构进行碰撞检测的示例加速;
图40是包括使用示例体积数据结构进行路径引导的运载工具的示例系统的框图。
图41是包括维持示例体积数据结构的储存库系统的示例系统的框图。
图42是示例体积数据结构的表示。
图43是简化框图,展示了体积在地图上的投影和关联。
图44是使用示例体积数据结构进行光线投射的简化表示。
图45是示例处理器设备的简化框图。
图46是简化框图,展示了结合帧渲染的并行处理。
图47是有待用于执行光线投射的示例逻辑的简化框图。
图48是有待用于执行光线投射的示例逻辑的简化框图。
图49是简化框图,展示了示例光线投射的一方面。
图50是简化框图,展示了示例光线投射
图51A是有待用于执行光线投射的示例逻辑的简化框图。
图51B至图51C展示了示例光线投射技术。
图52是有待用于执行光线投射的示例逻辑的简化框图。
图53是包括自主车辆的示例系统的框图。
图54A至图54B是简化框图,展示了自主车辆的示例实施方式。
图55是简化框图,展示了根据一些实施例的体积图的示例比较。
图56是简化框图,展示了示例体积数据结构。
图57是简化框图,展示了根据一些实施例的体积数据结构的示例比较。
图58是简化框图,展示了使用示例体积数据结构的系统的一部分。
图59是示例处理器设备的简化框图。
图60示出了根据示例体积数据结构中表示的多个不同细节层次而生成的示例图像。
图61A至图61B是流程图,展示了利用示例体积数据结构的示例技术。
图62是根据至少一些实施例的具有设备的示例性网络的简化框图;
图63是根据至少一些实施例的示例性雾或云计算网络的简化框图;
图64是根据至少一些实施例的包括示例设备的系统的简化框图;
图65是根据至少一些实施例的示例处理设备的简化框图;
图66是根据至少一些实施例的示例性处理器的框图;并且
图67是根据至少一些实施例的示例性计算系统的框图。
具体实施方式
在下面的描述中,关于所公开主题的系统和方法以及这些系统和方法可以运算的环境等,阐述了许多具体细节,以便提供对所公开主题的透彻理解。然而,本领域技术人员将清楚的是,可以在没有这些具体细节的情况下实践所公开主题,并且本领域公知的某些特征未进行详细描述,以避免使所公开主题复杂化。此外,应当理解的是,下面提供的实施例是示例性的,并且可以预期,在所公开主题的范围内存在其他系统和方法。
基于并结合增强现实、虚拟现实、混合现实、自主设备和机器人的各种技术正在出现,这些技术可以利用表示三维空间和几何结构的体积的数据模型。使用这种3D或体积数据对各种真实环境和虚拟环境的描述传统上涉及大数据集,一些计算系统一直在努力以期望的方式来处理所述大数据集。进一步地,随着诸如无人机、可穿戴设备、虚拟现实系统等设备变得越来越小,此类设备的存储器和处理资源也可能受到约束。作为示例,AR/VR/MR应用可能要求用于使用支持硬件生成的图形呈现的高帧速率。然而,在一些应用中,这种硬件的GPU和计算机视觉子系统可能需要以诸如高达130fps(7毫秒)的高速率来处理数据(例如,3D数据),以便产生期望的结果(例如,以生成具有产生可信结果、防止用户由于过长的等待时间而导致的晕动病、以及其他示例目标的帧速率的可信图形场景)。可以类似地挑战附加应用以令人满意地处理描述大体积的数据,同时满足相应系统的处理、存储器、功率、应用要求中的约束以及其他示例问题。
在一些实施方式中,计算系统可以设置有用于生成和/或使用根据格式定义的稀疏体积数据的逻辑。例如,可以提供定义的体积数据结构以统一各种系统和应用中的计算机视觉和3D渲染。此类体积数据结构可以被实施为具有定义的存储格式的稀疏六四元树(Sparse Sexaquaternary Tree,SST),所述定义的存储格式允许将体积描述为具有多个细节层次的稀疏树。例如,可以使用诸如立体相机或深度相机等光学传感器来捕获对象的体积表示。对象的体积表示可以包括多个体素。可以定义使得能够递归地细分相应的体积表示以获得对象的目标分辨率的改进的体积数据结构。在细分期间,体积表示中的可以包括在一个或多个体素中的空白空间可以从体积表示(和支持操作)中剔除。所述空白空间可以是体积表示中不包括对象的几何属性的区域。
因此,在改进的体积数据结构中,相应体积内的各个体素可以被标记为“被占据”(由于相应的体积空间内存在一些几何结构)或被标记为“空白”(表示相应的体积由空白空间组成)。此类标记可以另外被解释为指示其相应子体积中的一个或多个也被占据(例如,如果父级或更高级别的体素被标记为被占据)或者其所有子体积是空白空间(即,在父级或更高级别的体素被标记为空白的情况下)。在一些实施方式中,将体素标记为空白可以允许从用于生成相应体积表示的操作中有效地移除体素和/或其相应子体积体素。进一步地,这种用于稀疏体积数据结构的方法可以利用比传统上使用的方法相对更少的存储空间来存储对象的体积表示。另外,压缩体积数据可以增加传输这种表示的可行性,并且使得能够更快地处理这种表示,以及其他示例益处。
体积数据结构可以被硬件加速,以快速允许对3D渲染器的更新,从而消除可能在分开的计算机视觉系统和图形系统中发生的延迟。这种延迟可能引发等待时间,所述等待时间可能在AR、VR、MR和其他应用中使用时引起用户的晕动病以及其他附加缺点。在加速数据结构中快速测试体素的几何属性占据的能力允许构造可以实时更新的低等待时间AR、VR、MR或其他系统。
在一些实施例中,体积数据结构的能力还可以提供帧内警告。例如,在AR、VR、MR和其他应用中,当用户可能与成像场景中的真实或合成对象碰撞时,或者在无人机或机器人的计算机视觉应用中,当此类设备可能与成像场景中的真实或合成对象碰撞时,由体积数据结构提供的处理速度允许警告即将发生的碰撞。
本公开的实施例可以涉及针对诸如机器人、用于增强和混合现实头戴式耳机的头戴式显示器以及电话和平板计算机等应用中的体积数据进行存储和处理。本公开的实施例将一组体积元素(例如,体素)内的每个体素以及可选地与所述体素的几何结构有关的物理量表示为单个位。与一组64个体素有关的附加参数可以与诸如相应的红绿蓝(RGB)或其他着色编码、透明度、舍位带符号距离函数(TSDF)信息等体素相关联,并且被存储在相关联且可选的64位数据结构中(例如,使得使用两个或更多个位来表示每个体素)。这种表示方案可以实现最小的存储器要求。此外,由单个位来表示体素允许执行许多简化的计算以逻辑地或数学地组合来自体积表示的元素。组合来自体积表示的元素可以包括例如:对体积中的平面进行或运算(ORing)以创建3D体积数据的2D投影,以及通过对2.5D流形中的被占据体素的数量进行计数来计算表面积等。为了进行比较,可以使用异或逻辑来对64位子体积(例如,4^3个子体积)进行比较,并且可以反转体积,其中,可以通过将对象一起进行或运算来合并所述对象以创建混合对象,以及其他示例。
图1展示了常规的增强或混合现实系统,其由具有后渲染连接装置的并行的图形渲染子系统和计算机视觉子系统组成,以考虑由于快速头部移动引起的变化、以及环境中可能在所渲染的图形中产生遮挡和阴影的变化。在一种示例实施方式中,系统可以包括由主机存储器124支持的主机处理器100,以通过经由总线101、片上片上网络的互连或其他互连来控制图形流水线、计算机视觉流水线和后渲染校正装置的执行。所述互连允许主机处理器100运行适当的软件来控制图形处理单元(GPU)106、相关联图形存储器111、计算机视觉流水线116、及相关联的计算机视觉存储器124的执行。在一个示例中,使用GPU 106经由OpenGL图形着色器107(例如,对三角形列表105进行操作)来渲染图形可以以比计算机视觉流水线更慢的速率进行。因此,可以经由扭曲引擎108和显示/遮挡处理器109来执行后渲染校正,以考虑自通过GPU 106渲染图形以来可能已经发生的头部姿态和遮挡场景几何结构的变化。除其他示例之外,对GPU 106的输出加时间戳,使得其可以分别与来自头部姿态流水线120和遮挡流水线123的正确控制信号121和123结合使用以产生正确的图形输出,从而考虑头部姿态119和遮挡几何结构113的任何变化。
与GPU 106并行地,多个传感器和相机(例如,包括用于深度和视觉处理的有源立体相机和无源立体相机117)可以连接到计算机视觉流水线116。计算机视觉流水线116可以包括至少三个级中的一个或多个,每个级可以包含多个更低级的处理级。在一个示例中,计算机视觉流水线116中的级可以是图像信号处理(ISP)流水线118、头部姿态流水线120、和遮挡流水线122。ISP流水线118可以获取输入相机传感器117的输出并对其进行调节,使得所述输出可以用于随后的头部姿态和遮挡处理。头部姿态流水线120可以获取ISP流水线118的输出并将其与头戴式耳机110中的惯性测量单元(IMU)的输出119一起使用,以计算自通过GPU 106渲染相应的输出图形帧以来的头部姿态变化。可以将头部姿态流水线(HPP)120的输出121与用户指定的网格一起施加至扭曲引擎108以使GPU输出102失真,使得其与更新的头部姿态位置119相匹配。遮挡流水线122可以获取头部姿态流水线121的输出并且在视野中寻找新对象,诸如进入视野的手113(或其他示例对象),所述新对象应该在场景几何结构上产生相应的阴影114。遮挡流水线122的输出123可以由显示和遮挡处理器109使用,以将视野正确地覆盖在扭曲引擎108的输出103之上。除其他示例用例和特征之外,显示和遮挡处理器109使用计算的头部姿态119来产生用于合成阴影114的阴影掩码,并且显示和遮挡处理器109可以在阴影掩码之上合成手113的遮挡几何结构,以在扭曲引擎108的输出103之上产生图形阴影114,并产生最终的(多个)输出帧104以用于在增强/混合现实头戴式耳机110上显示。
图2展示了根据本公开的一些实施例的基于体素的增强或混合现实渲染系统。图2中描绘的装置可以包括在主机CPU 200和相关联主机存储器201上组成的主机系统。这种系统可以经由总线204、片上网络或其他通信机制来与统一计算机视觉和图形流水线223以及相关联的统一计算机视觉和图形存储器213进行通信,所述统一计算机视觉和图形存储器包含要在最终场景中渲染以供在头戴式增强或混合现实显示器211上显示的真实体素和合成体素。AR/MR显示器211还可以包含多个有源图像传感器和无源图像传感器214以及用于测量头部姿态222的取向变化的惯性测量单元(IMU)212。
在组合渲染流水线中,可以从三角形列表204开始生成合成几何结构,所述三角形列表由OpenGL JiT(即时)翻译器205进行处理以产生合成体素几何结构202。可以例如通过从三角形列表中选择三角形的主平面来生成合成体素几何结构。然后可以对所选平面中的每个三角形执行2D光栅化(例如,在X和Z方向上)。可以创建第三坐标(例如,Y)作为要跨三角形进行插值的属性。光栅化三角形的每个像素可以导致相应体素的定义。此处理可以由CPU或GPU来执行。除其他示例实施方式之外,当由GPU执行时,可以从GPU读回每个光栅化三角形以创建GPU在其中绘制像素的体素。例如,可以使用列表的2D缓冲器来生成合成体素,其中,列表的每个条目存储有在此像素处渲染的多边形的深度信息。例如,可以使用正投影视点(例如,自上而下)来渲染模型。例如,在示例缓冲器中提供的每个(x,y)可以表示相应体素体积中的(x,y)处的列(例如,从(x,y,0)到(x,y,4095))。然后可以根据所述信息使用每个列表中的信息将每个列渲染为3D扫描线。
继续图2的示例,在一些实施方式中,合成体素几何结构202可以与使用同步定位和建图(SLAM)流水线217构造的所测得几何结构体素227组合。SLAM流水线可以使用有源传感器和/或无源图像传感器214(例如,214.1和214.2),所述传感器首先使用图像信号处理(ISP)流水线215进行处理以产生输出225,所述输出可以由深度流水线216转换为深度图像226。除其他示例之外,有源或无源图像传感器214(214.1和214.2)可以包括有源或无源立体传感器、结构光传感器、飞行时间传感器。例如,深度流水线216可以处理来自结构光或飞行时间传感器214.1、或可替代地无源立体传感器214.2的深度数据。在一种示例实施方式中,除其他示例实施方式之外,立体传感器214.2可以包括无源立体传感器对。
由深度流水线215生成的深度图像可以由密集SLAM流水线217使用SLAM算法(例如,Kinect融合)来处理,以产生所测得几何结构体素227的体素化模型。可以提供光线跟踪加速器206,所述光线跟踪加速器可以将所测得几何结构体素227(例如,真实体素几何结构)与合成体素几何结构202组合以产生场景的2D渲染,以便经由显示处理器210输出到显示设备(例如,在VR或AR应用中的头戴式显示器211)。在这种实施方式中,可以由所测得几何结构体素227的真实体素和合成几何结构202来构造完整的场景模型。因此,不需要对2D渲染几何结构进行扭曲(例如,如图1所示)。这种实施方式可以与头部姿态跟踪传感器及相应逻辑组合,以将真实几何结构与所测得几何结构正确对齐。例如,示例头部姿态流水线221可以处理来自安装在头戴式显示器212中的IMU 212的头部姿态测量结果232,并且在渲染期间可以经由显示处理器210将头部姿态测量流水线的输出231考虑在内。
在一些示例中,统一渲染流水线还可以使用所测得几何结构体素227(例如,真实体素模型)和合成几何结构202(例如,合成体素模型),以便渲染音频混响模型并对真实世界场景、虚拟现实场景或混合现实场景的物理现象进行建模。作为示例,物理流水线218可以采用所测得几何结构体素227和合成几何结构202体素几何结构,并使用光线投射加速器206来计算头戴式显示器(HMD)211中的左耳机和右耳机的输出音频样本,以便使用内置于体素数据结构中的声反射系数来计算输出样本230。类似地,由202和227组成的统一体素模型还可以用于确定复合AR/MR场景中的合成对象的物理更新。物理流水线218将复合场景几何作为输入,并且使用光线投射加速器206来计算碰撞,然后计算对合成几何结构202的更新228以供渲染并作为物理模型的未来迭代的基础。
在一些实施方式中,除其他示例之外,诸如图2所示的系统等系统可以另外设置有一个或多个硬件加速器以实施和/或利用卷积神经网络(CNN),所述卷积神经网络可以处理来自ISP流水线215的输出的RGB视频/图像输入、来自SLAM流水线217的输出的体积场景数据。神经网络分类器可以专门使用硬件(HW)卷积神经网络(CNN)加速器207来运行或在处理器与HW CNN加速器207的组合中运行,以产生输出分类237。除其他示例用途之外,用于对体积表示进行推断的HW CNN加速器207的可用性可以允许将所测得几何结构体素227中的体素组标记为属于特定对象类。
标记体素(例如,使用CNN和支持硬件加速)可以允许那些体素所属的那些对象被系统辨识为与已知对象相对应,并且源体素可以从所测得几何结构体素227中移除并由与对象和/或关于对象的原点、对象的姿态、对象描述符的信息以及其他示例信息相对应的边界框所替换。除其他示例用途之外,这可以导致对场景的语义上更有意义的描述,所述描述可以例如用作机器人、无人机或其他计算系统的输入以与场景中的对象进行交互,或者用作音频系统的输入以查找场景中对象的吸声系数并将其反映在场景的声学模型中。
可以提供一个或多个处理器设备和硬件加速器以实施图2中示出和描述的示例系统的流水线。在一些实施方式中,除其他示例实施方式之外,组合渲染流水线的所有硬件元件和软件元件可以共享对DRAM控制器209的访问,所述控制器进而允许将数据存储在共享DDR存储器设备208中。
图3被呈现用于说明根据一些实施例的在密集体积表示与稀疏体积表示之间的差异。如图3的示例所示,可以以如302所示的密集方式或如304所示的稀疏方式在体素方面描述真实世界或合成对象300(例如,兔子的雕像)。诸如302等密集表示的优点是对体积中所有体素的访问速度均匀,但缺点是可能需要的存储量。例如,对于密集表示,诸如512^3元素体积(例如,对于使用Kinect传感器扫描的体积,1cm分辨率对应于5m),512M字节用于存储相对较小的体积,其中,每个体素4字节舍位带符号距离函数(TSDF)。另一方面,体现稀疏表示的八叉树表示304可以仅存储在真实世界场景中存在实际几何结构的那些体素,从而减少存储同一体积所需的数据量。
转到图4,展示了根据一些实施例的示例场景的复合视图。具体地,图4示出了场景404的复合视图可以如何使用并行数据结构来维持、显示或经受进一步处理,以分别表示在合成体素数据和真实世界体素数据的等效边界框400和402内的合成体素401和真实世界所测得体素403。图5展示了根据一些实施例的均匀4^3元素树结构(或体积数据结构)中的细节层次。在一些实施方式中,可以利用少至1位来描述使用八叉树表示的体积中的每个体素,诸如在图5的示例中所表示的。然而,基于八叉树的技术的缺点可能是用于访问八叉树中的特定体素的间接存储器访问次数。在稀疏体素八叉树的情况下,可以以有利地允许诸如光线投射、游戏物理、CNN和其他技术等操作的多个细节层次隐含地表示同一个几何结构,以便允许从进一步计算中剔除场景的空白部分,从而导致不仅所需存储减少,而且在功耗和计算负荷方面总体上减少,以及其他示例优点。
在一种实施方式中,可以提供改进的体素描述符(在本文中也称为“体积数据结构”)以将体积信息组织为4^3(或64位)无符号整数,诸如501中所示,其中,每体素的存储器要求为1位。在本示例中,每体素1位不足以存储舍位带符号距离函数值(与利用64位的SLAM平台/K融合中的TSDF相比)。在本示例中,体素描述符中可以包括附加(例如,64位)字段500。可以进一步增强这个示例,使得尽管64位字段500中的TSDF是16位的,但可以在体素描述符501中隐含地提供x、y和z中的附加2位的分数分辨率,以使得64位字段500中的体素TSDF与体素位置501的组合等效于诸如在SLAM平台/K融合或其他示例中所使用的更高分辨率的TSDF。例如,除其他示例之外,64位字段500(体素描述符)中的附加数据可以用于存储二次采样的RGB颜色信息(例如,经由无源RGB传感器来自场景),其中,每个信息具有一个字节、并且具有8位透明度值α以及两个1字节保留字段R1和R2,所述保留字段可以是应用特定的并且可以用于存储例如音频应用的声反射率、物理应用的刚性、对象材料类型等。
如图5所示,体素描述符501可以在逻辑上分组成四个2D平面,每个平面包含16个体素502。这些2D平面(或体素平面)可以基于4的升幂的连续分解来描述八叉树样式结构的每个级别,如图5中所表示的。在本示例实施方式中,选择64位体素描述符,因为其与相应的系统实施方式中使用的64位总线基础设施良好匹配(但在其他系统实施方式中可以提供其他体素描述符大小和格式并且根据系统的总线或其他基础设施来调整其大小)。在一些实施方式中,可以将体素描述符的大小调整以减少获得体素所使用的存储器访问次数。例如,除其他示例考虑和实施方式之外,与对2^3个元素操作的传统八叉树相比,可以使用64位体素描述符将访问八叉树中处于任意级别的体素所需的存储器访问次数减少2倍。
在一个示例中,可以从4^3根体积503、以及每个非零条目开始描述八叉树,在所述非零条目中,在示例256^3体积中描绘了针对在底层504、505和506中存在几何结构的代码。在这个特定示例中,可以使用四次存储器访问以便访问八叉树中的最低级别。在这种开销太高的情况下,可以采用替代方法将八叉树的最高级别编码为诸如64^3的更大体积,如507中所示。在这种情况下,507中的每个非零条目可以指示底层256^3体积508中存在底层4^3八叉树。这种替代组织的结果是,与503、504和505中所示的替代公式相比,仅需要两次存储器访问来访问256^3体积508中的任何体素。后一种方法在以下情况下是有利的:托管八叉树结构的设备具有较大量的嵌入式存储器,从而仅允许体素八叉树508的较低且较不频繁访问的部分处于外部存储器中。这种方法在存储方面可能成本更高(例如,其中将完整的、更大的(例如,64^3)体积存储在片上存储器中),但是折衷可以允许更快的存储器访问(例如,2倍)和更低的功耗、以及其他示例优点。
转到图6,示出了框图,其展示了根据一些实施例的可以利用本申请的数据结构和体素数据的示例应用。在一个示例中,诸如图5所示的示例,可以通过示例体素描述符500提供附加信息。虽然体素描述符可以将所利用的总存储器增加到每体素2位,但是体素描述符可以实现可以利用体素数据的广泛应用,诸如图6中所表示的。例如,诸如使用密集SLAM系统601(例如,SLAM平台)生成的共享体积表示602可以用于使用图形光线投射或光线跟踪603来渲染场景、用于音频光线投射604、以及其他实施方式。在仍其他示例中,体积表示602还可以用于卷积神经网络(CNN)推断605,并且可以由云基础设施607来备份。在一些实例中,云基础设施607可以包含诸如可以经由推断进行访问的树、家具或其他对象(例如,606)等对象的详细体积描述符。基于推断或以其他方式识别对象,可以将相应的详细描述符返回到设备,从而允许由具有姿态信息以及包含对象属性和其他示例特征的描述符的边界框表示来替换体积表示602的体素。
在仍其他实施例中,可以在一些系统中另外地或可替代地利用上面讨论的体素模型,以使用来自体积表示602的3D到2D投影来构造示例环境608的2D地图。这些2D地图可以再次经由通信机器、经由云基础设施和/或其他基于网络的资源607共享并且被聚合(例如,使用相同的云基础设施)以使用众包技术来构建更高质量的地图。这些地图可以由云基础设施607共享到所连接的机器和设备。在仍进一步的示例中,针对超低带宽应用,可以使用投影然后分段简化609(例如,假设运载工具或机器人的固定宽度和高度)来精化2D地图。然后,简化路径可以对于路径的每分段线性段仅具有单个X、Y坐标对,从而减少将运载工具609的路径传达到云基础设施607所需的带宽量,并且所述简化路径在这同一个云基础设施607中被聚合以使用众包技术来构建更高质量的地图。这些地图可以由云基础设施607共享到连接的机器和设备。
为了实现这些不同的应用,在一些实施方式中,可以诸如通过共享软件库来提供共同的功能,在一些实施例中,可以使用硬件加速器或处理器指令集架构(ISA)扩展以及其他示例来加速所述共享软件库。例如,这类功能可以包括将体素插入描述符中、删除体素或查找体素610。在一些实施方式中,还可以支持碰撞检测功能620、以及从体积630中删除点/体素、以及其他示例。如上文所介绍的,系统可以设置有根据相应的体积表示602(3D体积)(例如,其可以用作路径或碰撞确定的基础)来快速生成X、Y和Z方向上的2D投影640的功能。在一些情况下,能够使用直方图金字塔650由体积表示602生成三角形列表也可以是有利的。进一步地,系统可以设置有用于快速确定体积空间602的2D和3D表示中的自由路径660的功能。这种功能在各种应用中可能是有用的。可以提供进一步的功能,诸如详细说明体积中体素的数量、使用群体计数器对体积表示602的掩码区域中的1位的数量进行计数来确定对象的表面、以及其他示例。
转到图7的简化框图,展示了示例网络,其包括根据至少一些实施例的配备有辨识3D数字的功能的系统。例如,图6所示的应用之一是体积CNN应用605,其在图7中更详细地描述,其中,示例网络用于辨识根据数据集(诸如,混合国家标准与技术研究院(MNIST)数据集)生成的3D数字700。通过在训练之前在X、Y和Z上对这种数据集内的数字施加适当的旋转和平移,可以使用所述数字来训练基于CNN的卷积网络分类器710。当用于嵌入式设备中的推断时,除其他示例之外,经训练网络710可以用于以高准确度对场景中的3D数字进行分类,即使在数字经受X、Y和Z上的旋转和平移的情况下也是如此720。在一些实施方式中,CNN分类器的操作可以由图2所示的HW CNN加速器207来加速。当神经网络的第一层使用体积表示602中的体素执行乘法时,可以跳过这些算术运算,因为乘以零始终为零并且数据值A与一(体素)的相乘等于A。
图8展示了使用隐含的细节层次对同一数据结构执行的多种分类。使用体积表示602进一步精化CNN分类可以是:因为在如图5所示的八叉树结构中八叉树表示隐含地包含多个细节层次,所以可以使用单个分类器830或多个并行分类器使用隐含细节层次800、810和820来并行的对同一数据结构执行多种分类,诸如图8所示。在传统系统中,由于图像需要在分类通道之间重新调整大小,因此相当的并行分类可能很慢。在应用本文所讨论的体素结构的实施方式中可以放弃这种重新调整大小,因为同一八叉树可以以多个细节层次包含相同的信息。实际上,基于体积模型的单个训练数据集可以覆盖所有细节层次而不是诸如将在常规CNN网络中需要的重新调整训练数据集的大小。
转到图9的示例,根据一些实施例通过2D CNN展示了示例操作消除。可以在3D体积CNN上以及在2D CNN上使用操作消除,如图9所示。例如,在图9中,在第一层中,位图掩码900可以用于描述输入910的预期“形状”,并且可以应用于传入视频流920。在一个示例中,不仅可以在3D体积CNN上而且还可以在2D体积CNN上使用操作消除。例如,在图9的示例的2D CNN中,位图掩码900可以应用于CNN的第一层以描述输入910的预期“形状”,并且可以应用于CNN的输入数据(诸如,传入视频流820)。作为示例,图9中示出了将位图掩码应用于行人的图像以用于CNN网络中的训练或推断的效果,其中,901表示行人901的原始图像,903表示应用了位图掩码的相应版本。类似地,902中示出了不包含行人的图像,并且904中示出了相应的位图掩码版本。相同的方法可以应用于任何类型的2D或3D对象,以便通过了解检测器所期望的预期2D或3D几何结构来减少CNN训练或推断所需的操作数量。911中示出了3D体积位图的示例。920中示出了使用2D位图用于真实场景中的推断。
在图9的示例实施方式中,示出了概念位图(在900处),而真实位图是通过对特定分类的对象910的一系列训练图像求平均来生成的。所示出的示例是二维的,但是也可以为采用所提出的每体素具有一位的体积数据格式的3D对象生成类似的位图掩码。实际上,除其他示例实施方式之外,所述方法还可以潜在地扩展为每体素/像素使用附加位来指定2D或3D对象的预期颜色范围或其他特性。
图10是表格,展示了根据一些实施例的涉及对10,000个CIFAR-10测试图像的分析的示例实验的结果。在一些实施方式中,由于在诸如LeNet 1000等CNN网络中频繁进行的修正线性单元(ReLU)操作,可以使用操作消除来消除1D、2D和3D CNN中的中间计算,如图10所示。如图10所示,在使用10,000个CIFAR-10测试图像的实验中,由ReLU单元生成的数据相关的零的百分比可以达到85%,这意味着在零的情况下,可以提供辨识零并且作为响应不取出相应数据和执行相应乘法运算的系统。在本示例中,85%表示根据修改的国家标准与技术研究院数据库(MNIST)测试数据集生成的ReLU动态零的百分比。与这些零相对应的相应操作消除可以用于降低功耗和存储器带宽要求、以及其他示例益处。
可以基于位图来剔除琐碎操作。例如,这种位图的使用可以根据在名称为“Circuit for compressioning data and a processors using the same(用于压缩数据的电路以及使用所述电路的处理器)”的美国专利号8,713,080中讨论和说明的原理和实施例,所述美国专利通过引用以其全文结合在此。一些实施方式可以提供能够使用这样的位图的硬件,诸如系统、电路系统以及在名称为“Hardware for performing arithmeticoperations(用于执行算术运算的硬件)”的美国专利号9,104,633中讨论和说明的其他实施方式,所述美国专利通过引用以其全文结合在此。
图11展示了根据一些实施例的可以结合到系统中以提供用于基于位图来剔除琐碎操作的功能的硬件。在本示例中,提供了包括重复的卷积层的多层神经网络。所述硬件可以包括一个或多个处理器、一个或多个微处理器、一个或多个电路、一个或多个计算机等。在这个特定示例中,神经网络包括初始卷积处理层1100、然后是池化处理1110、并且最后是激活函数处理(诸如,修正线性单元(ReLU)函数1120)。提供ReLU输出向量1131的ReLU单元1120的输出可以连接到随后的卷积处理层1180(例如,可能经由延迟1132),所述卷积处理层接收ReLU输出向量1131。在一种示例实施方式中,还可以与ReLU单元1120到随后的卷积单元1180的连接并行地生成ReLU位图1130,ReLU位图1130表示ReLU输出向量1131中的哪些元素为零并且哪些为非零。
在一种实施方式中,可以生成或以其他方式提供位图(例如,1130),以向启用的硬件通知消除在神经网络的计算中涉及的操作的机会。例如,ReLU位图1130中的位可以由位图调度器1160解释,考虑到乘以零将始终产生零作为输出,所述位图调度器指示随后的卷积单元1180中的乘法器跳过ReLU输出向量1131中的在ReLU位图1130中存在相应的二进制零的零条目。并行地,还可以跳过从地址生成器1140对与ReLU位图1130中的零相对应的数据/权重的存储器取出,因为在取出将由随后的卷积单元1180跳过的权重时几乎没有值。如果要经由DDR控制器1150从附接的DDR DRAM存储设备1170取出权重,则等待时间可能很高,以至于只能节省一些片上带宽和有关功耗。另一方面,如果从片上RAM 1180存储装置取出权重,则可以绕过/跳过整个权重取出操作,特别是如果在输入处将与RAM/DDR取出延迟1132相对应的延迟添加到随后的卷积单元1180的话。
转到图12,提供了简化框图以说明根据一些实施例的对配备有用于剔除琐碎操作(或执行操作消除)的电路系统和其他逻辑的示例硬件的精化。如图12的示例所示,可以提供附加硬件逻辑以预测从在前的最大池化单元1210或卷积单元1200提前输入的ReLU单元1220的符号。将符号预测和ReLU位图生成添加到最大池化单元1210可以允许从定时的角度更早地预测ReLU位图信息以覆盖可能通过地址生成器1240、通过外部DDR控制器1250和DDR存储装置1270或内部RAM存储装置1271发生的延迟。如果延迟足够低,则可以在地址生成器1240中解释ReLU位图,并且可以完全跳过与ReLU位图零相关联的存储器取出,因为可以确定从不使用来自存储器的取出的结果。除其他示例特征和功能之外,对图11的方案的这种修改可以节省附加的功率,并且如果通过DDR访问路径(例如,1240到1250到1270)或RAM访问路径(例如,1240到1271)的延迟足够低以便不能保证延迟级1232,则还可以允许在到随后的卷积单元1280的输入处移除延迟级(例如,1132、1232)。
图13是另一简化框图,展示了根据一些实施例的示例硬件。例如,CNN ReLU层可以产生与负输入相对应的大量输出零。实际上,可以通过查看到先前层(例如,图13的示例中的池化层)的(多个)符号输入来预测性地确定负ReLU输入。浮点和整数运算可以根据最高有效位(MSB)显式地带有符号,因此在卷积层中跨要相乘的输入向量进行简单的逐位异或(XOR)运算可以预测哪些乘法将产生输出零,诸如图13所示。所得的符号预测的ReLU位图向量可以用作用于确定乘法的子集和从存储器进行读取的相关联系数的基础,以便诸如以上文其他示例中描述的方式进行消除。
将ReLU位图的生成提供回到先前的池化级或卷积级(即,在相应的ReLU级之前的级)可能产生附加的功率。例如,可以提供符号预测逻辑以在乘法器将产生负输出时禁用所述乘法器,所述负输出将由ReLU激活逻辑最终设置为零。例如,这示出了乘法器1314的输入1301和1302的这两个符号位1310和1315在逻辑上由异或门进行组合以形成PreReLU位图位1303的情况。除其他示例之外,此同一信号可以用于禁用乘法器1314的操作,所述操作否则将不必要地消耗生成负输出的能量,所述负输出将在被输入用于下一卷积级1390中的乘法之前由ReLU逻辑设置为零。
应注意的是,1300、1301、1302和1303(标注A)的表示示出了图13中标为B的表示中所示的更高级视图。在本示例中,到框1302的输入可以包括两个浮点操作数。输入1301可以包括:显式符号位1310、包括多个位的尾数1311、以及再次包括多个位1312的指数。类似地,输入1302同样可以包括符号1315、尾数1317和指数1316。在一些实施方式中,尾数和指数可以具有不同的精度,因为结果1303的符号分别仅取决于1301和1302、或者1310和1315的符号。事实上,1301和1302都不需要是浮点数,而是只要其是有符号数并且最高有效位(MSB)实际上是显式或隐式的符号位(例如,如果数字是一或二的补码等),就可以是任何整数或定点格式。
继续图13的示例,这两个符号输入1310和1315可以使用异或(XOR,有时在本文中可替代地表示为ExOR或EXOR)门进行组合以生成位图位1303,然后可以使用硬件来处理所述位图位以识别可能在下一卷积框(例如,1390)中省略的下游乘法。在这两个输入数字1313(例如,对应于1301)和1318(例如,对应于1302)具有相反符号并且将产生负输出1304的情况下,还可以使用相同的异或输出1303来禁用乘法器1314,所述负输出将由ReLU框1319设置为零,从而导致RELU输出向量13191中的零值,所述零值将被输入到随后的卷积级1390。因此,在一些实施方式中,PreReLU位图1320可以并行地传输到位图调度器1360,所述位图调度器可以调度乘法以在卷积单元1390上运行(和/或省略)。例如,对于位图1320中的每个零,可以在卷积单元1390中跳过相应的卷积运算。并行地,位图1320可以被示例地址生成器1330消耗,所述示例地址生成器控制对在卷积单元1390中使用的权重的取出。位图1320中对应于1的地址列表可以在地址生成器1330中被编译,并且控制经由DDR控制器1350到DDR存储装置1370的路径,或者控制到片上RAM 1380的路径。除其他示例之外,在任一种情况下,可以取出与PreReLU位图1320中的一相对应的权重并且将其呈现(例如,在关于权重输入1371的时钟周期的一定等待时间之后)给卷积框1390,而可以省略对与零相对应的权重的取出。
如上所述,在一些实施方式中,可以在位图调度器1360与卷积单元1390之间插入延迟(例如,1361),以平衡通过地址生成器1330、DDR控制器1350和DDR 1350的延迟,或者平衡通过地址生成器1330和内部RAM 1380的路径。所述延迟可以使得由位图调度器驱动的卷积能够在时间上与卷积单元1390中的卷积计算的相应权重正确对齐。实际上,从定时的角度来看,比在ReLU框1319的输出处更早生成ReLU位图可以允许得到附加的时间,所述附加时间可以用于在由地址生成器1330生成对存储器的读取之前拦截所述读取(例如,RAM1380或DDR 1370),使得可以放弃一些读取(例如,对应于零)。除其他示例优点之外,由于存储器读取可能比片上逻辑操作高得多,因此排除这种存储器取出可以导致非常显著的节能。
在一些实施方式中,如果在时钟周期方面仍然没有足够的节省来覆盖DRAM访问时间,则可以使用面向块的技术来提前从DDR中读取符号位(例如,1301)组。这些符号位组可以与来自输入图像或中间卷积层1302的符号块一起使用,以便使用一组(多个)异或门1300来生成PreReLU位图块(例如,以计算2D或3D阵列/矩阵之间的2D或3D卷积中的符号位之间的差异,以及其他示例)。在这种实施方式中,可以提供DDR或片上RAM中的附加1位存储来存储每个权重的符号,但是这可以允许以使得永远避免从DDR或RAM中读取将从ReLU级乘以零的权重的方式来覆盖许多等待时间周期。在一些实施方式中,除其他示例考虑和实施方式之外,可以避免DDR或片上RAM中的每权重的附加1位存储,因为符号以这样的方式被存储:它们可从指数和尾数中独立地寻址。
在一个示例中,可以进一步增强系统以利用DDR访问,所述访问可以进行自然脉冲串访问以实现最大数据传送速率。通过跳过各个DDR权重访问来节省能量在此内容中可能是不可行的,因为所述权重访问可能比脉冲串短。因此,在一些实例中,在与特定脉冲串事务相对应的所有位图位为零的情况下,可以跳过脉冲串。然而,这可能不频繁地发生,并且因此所得的功率节省和带宽节省可能是有限的。在仍其他实施方式中,可以针对脉冲串中的位图位的数量来设置寄存器可编程阈值,使得如果位图脉冲串中多于N个位为零,则将完全跳过脉冲串。这可能具有略微降低整体CNN分类准确度的效果,但是为了节省能量可以是可接受的。
图14展示了根据一些实施例的可以如何使用体积数据(例如,根据如上所述的格式)来合成音频流。一些增强现实(AR)和混合现实(MR)系统中存在的挑战是解决AR/MR呈现中的不一致性,以使得体验更加真实且更具沉浸感。这可以包括组合图像(例如,虚拟与虚拟、虚拟与真实等),如上所述。体积数据还可以用于增强AR和MR应用中的音频呈现。例如,图14所示的简图展示了(例如,如上所讨论的经格式化的)体积数据的示例使用,其用于通过以下方式来合成用于扩音器1460、头戴式耳机1470或其他扬声器的音频流:使用音频光线投射器1450根据体积模型创建混响模型,并且通过音频光线投射器生成的模型传递实时或预先录制的音频1440以生成与体积模型相对应的输出波形。在图14的特定示例中,可以提供连接到(诸如先前描述的)ISP流水线1420的多个图像传感器1410,所述流水线的输出被馈送到SLAM流水线1430(诸如先前描述的)。图像传感器1410可以包括无源立体对、结构光或飞行时间有源IR相机、以及其他示例。
可以根据基于八叉树的体积模型1431以如以上升的细节层次和位的1441、1442、1443和1444所示的不同的细节层次(针对渲染速度)生成多个音频模型。实际上,可以使用相同的体积模型来生成用于不同扩音器位置的模型,以便可以支持包括立体声和环绕声在内的多个扩音器(包括立体对和头戴式耳机)。这些模型可以作为完整的模型实时生成或者实际上可以使用可重复使用的几何结构幻灯片来构建,所述幻灯片可以使用最终求和级来适当地且动态地组合,所述最终求和级考虑了可以基于收听者在由体积模型建模的场景中的当前位置而对声场作出贡献的光线。
图15示出了根据一些实施例的基于几何结构的这种可重复使用的混响滤波器元件的示例。在图15的特定示例中,考虑了图14的示例金字塔结构1400的截面视图。所述金字塔可以通过基于八叉树的体积数据结构来建模,并且所述体积数据结构可以用于生成与金字塔结构1400的尺寸和特性一致的音频混响模型。在本示例中,音频混响模型的生成可以主要基于阶梯1504的高度1503和深度、以及观察者相对于金字塔的第一阶梯1502的距离和取向。可以为此第一阶梯以及金字塔中的所有其他阶梯对混响进行建模。可以回到收听者的耳朵处(例如,经由连接到混响建模电路系统或其他逻辑的扬声器1505)对这些建模的混响进行求和。混响模型的输入可以是特定噪声(例如,拍手、语音或其他音频),包括来自现场环境的经由麦克风捕获的音频流、预先录制的音频流或其他声音1500。虽然本示例展示了金字塔几何结构的建模,但是根据本文所讨论的原理,可以通过相应的体积数据结构对可能的任何3D几何结构进行建模。因此,除其他示例之外,可以使用这种体积数据结构来开发和增强各种VR、AR和MR环境,并且可以开发与此类环境的混响和音频特性一致的相应混响模型。
图16展示了根据一些实施例的基于4×4体积立方体1600以及所确定的观察者位置1601由示例体积模型对有限脉冲响应(FIR)混响滤波器的示例生成。从其中一条光线的角度来看,声波的传播可以通过考虑其传播通过每个体素体积1619至1612来建模,其中,系统通过与声音穿过空气相对应的传播系数来对声波的衰减进行建模。继续本示例,可以将建模的声音建模为从体积模型的第一部分1610(例如,图14至图15的示例中的金字塔模型的第一阶梯1611)反射,其中,反射系数与由体素1610建模的对象的材料相对应。例如,在前一示例中,体素1610可以表示石灰石金字塔(或具有其他几何结构的其他结构)的表面,其中,体积模型或相关联数据指定用于确定声音将如何从金字塔反射的石灰石(例如,金字塔表面的材料)反射系数。继续本示例,可以进一步对建模的且衰减的反射波的传播进行建模以将体素(例如,1612至1618)重新遍历回观察者位置1619,其中,可以基于由体素(例如,1612至1618)建模的介质(例如,空气、墙壁、水、玻璃等)的反射和衰减来进一步对信号进行建模,以创建与在实际存在的所建模的几何结构中预期的一致的虚拟延迟和混响特性,以及其他示例。
在一个实施例中,图16所展示的结构可以直接转录为FIR滤波器,其中,输入音频样本进入1620,乘以通过第一体素c1(1620)的传播,并且穿过延迟级(1体素)1621,然后由一个体素1622的传播系数衰减,依此类推,直到在1630处最终输出样本退出FIR滤波器。所有体素系数相等允许构建FIR滤波器的集总版本,其中,使用一半数量的延迟和乘法器,其中,除了来自石头金字塔的反射系数1642保持不变之外,每个延迟元件1641为两倍长并且每个乘法器系数1640两倍大。换言之,在这种实例中,可以对N个反射系数进行求和,并且执行集总乘法而不是单独执行每个乘法。可以针对每次反射(例如,通过对由体积数据结构建模的几何结构的光线投射来确定)静态地进行这种求和。例如,所有延迟1661和所有传播系数1660可以集总到具有14D延迟元件和14×C1传播系数的完全优化的FIR滤波器中,然而,这种方法可能是不可向量化的,这可能在向量处理器或向量化硬件上呈现低效率。对于FIR混响滤波器的向量化实施方式,可以在四个向量运算1700至1703中的每个四元素宽的水平条带中对同一个4×4体积进行光线跟踪,然后在1704中对这四个向量化输出求和并将输出样本输出到扩音器或头戴式耳机1705,诸如图17的示例简图所示。因此,图17示出了根据一些实施例的FIR混响滤波器的向量化实施方式。
转到图18,示出了简图,其展示了根据一些实施例的通过断言执行使用向量化处理进行的光线投射,其中,处理器具有至少四个功能单元;断言执行(PEU)1805,其可以对三种可能的运算精度(fp32、fp16或uint8)之一的向量运算单元(VAU)1807、以及标量运算单元(SAU)1808执行每通道断言操作,所有这些运算单元都在分支重复单元(BRU)的控制下,所述分支重复单元一次一个向量地逐步通过体积中的多个体素(深度)。在一些实施方式中,就向量运算而言,16位浮点操作数对于MP3音频可以是足够的(其中32位浮点(fp32)是可选的),从而允许通过VAU 1807将吞吐量加倍。事实上,原则上,除其他可能的示例实施方式之外,在许多情况下还可以利用具有无符号整数(例如,u8)乘以被除数的倒数的分数表示,从而允许VAU吞吐量相对于fp32模式为几乎四倍。
可以通过从存储器读取的体积数据结构中选择位向量来构造断言单元1803的输入,如前所述,所述位向量可以由4^3个体素子体积构成,每个体素子体积由64位整数表示。在fp32运算的情况下,可以从1800中的4^3体积信息中逐行选择4位宽的向量。在16位运算的情况下,可以由级联单元18031级联来自1801的两个子体积(即18011和18012)的两个4位向量,以形成8位断言向量1803。最后,在8位运算的情况下,可以由级联单元18031通过级联来自1802的子体积的四个4位向量(即18021、18022、18023和18024)来构造16位断言向量1802,以此类推。不管运算表示如何,每通道断言都允许跨具有要跨单个循环中的向量并行地评估的4、8或16个体素的体素几何结构使用向量化。
在一种示例实施方式中,PEU 1805对VAU 1807的断言对1803上的4、8或16个体素宽的块中的体积数据进行如下操作:
·位图0-沿着用于音频信号通过空气传播的光线而求和的FIR混响;
·位图1-停止准则和反射系数乘法;
·退出-当跨通过对每个位图1位与寄存器的先前内容进行或运算来维持的向量遇到所有一时循环并停止传播,并且当寄存器包含所有一时停止循环。
光线投射过程中的进一步优化可以通过分解以从原点跨体素的角度进行光线跟踪所需的2D插值来实施。跨体素体积在X和Y维度上的2D插值可以被分解为跨向量共同的单独的共同y分量以及取决于距体素中心的距离的第二x分量。
诸如本文所讨论的体素表示可以用于增强不仅用于音频而且还用于其他应用的光线投射操作。在一些实例中,物理或光传播中使用的光线投射可能与针对音频的光线投射不同,其中,通过空气介质可能没有信号衰减,但对于流体而言,与先前针对空气概述的相同的光线投射机制可以用于物理或光传播。因此,用于利用空气作为介质的光/物理光线投射的断言机制可以例如如下实施:
·位图0-什么都不做,因为通过介质的衰减可忽略(在音频情况下,FIR输出被更新);
·位图1-乘以光反射率(对象刚性)系数并将颜色(力)复制到输出缓冲器;
·退出-当跨通过对每个位图1位与寄存器的先前内容进行或运算来维持的向量遇到所有一时循环并停止传播,并且当寄存器包含所有一时停止循环。
图19是简化框图,表示根据一些实施例的示例多时隙向量处理器(例如,超长指令字(VLIW)向量处理器)。在本示例中,向量处理器可以包括多个(例如,9个)功能单元(例如,1903至1911),所述多个功能单元可以由多端口存储器系统1900馈送、由向量寄存器堆(VRF)1901和通用寄存器堆(GRF)1902支持。所述处理器包含指令解码器(IDEC)1912,所述解码器对指令进行解码并生成控制功能单元1903至1911的控制信号。功能单元1903至1911是断言执行单元(PEU)1903、分支重复单元(BRU)1904、加载存储端口单元(例如,LSU0 1905和LSU1 1906)、向量运算单元(VAU)1907、标量运算单元(SAU)1910、比较移动单元(CMU)1908、整数运算单元(IAU)1911以及体积加速单元(VXU)1909。在此特定实施方式中,VXU1909可以加速对体积数据的操作,包括存储/检索操作、逻辑操作和运算操作。虽然在图19的示例中将VXU电路系统1909示出为单一组件,但是应当理解,VXU(以及任何其他功能单元1903至1911)的功能可以分布在多个电路系统中。进一步地,在一些实施方式中,除其他示例实施方式之外,VXU 1909的功能在某些实施方式中可以分布在处理器的其他功能单元(例如,1903至1908、1910、1911)中的一个或多个功能单元内。
图20是简化框图,展示了根据一些实施例的VXU 2000的示例实施方式。例如,VXU2000可以提供至少一个64位输入端口2001以接受来自向量寄存器堆1901或通用寄存器堆1902的输入。此输入可以连接到多个功能单元,所述多个功能单元包括:寄存器堆2003、地址生成器2004、点寻址逻辑2005、点插入逻辑2006、点删除逻辑2007、X维度中的3D到2D投影逻辑2008、Y维度中的3D到2D投影逻辑2009、X维度中的3D到2D投影逻辑2010、2D直方图金字塔发生器2011、3D直方图金字塔发生器2012、群体计数器2013、2D路径查找逻辑2014、3D路径查找逻辑2015以及用于对64位无符号整数体积位图进行操作可能的附加功能单元。来自框2002的输出可以被写回向量寄存器堆VRF 1901或通用寄存器堆GRF 1902寄存器堆。
转到图21的示例,表示了4^3体素立方体2100的组织表示。还表示了第二体素立方体2101。在本示例中,体素立方体可以在数据中被定义为64位整数2102,其中,立方体内的每个单个体素由64位整数中的单个相应位表示。例如,地址{x,y,z}={3,0,3}处的体素2012可以被设置为“1”以指示在由体素立方体2101表示的体积空间内的这个坐标处存在几何结构。进一步地,在本示例中,除其他示例之外,(体素2102旁边的)所有其他体素可以与“空白”空间相对应,并且可以被设置为“0”以指示在那些坐标处不存在物理几何结构。转到图22,展示了根据一些实施例的示例两级稀疏体素树2200。在本示例中,体积内(例如,在位置{15,0,15}中)仅包括单个“被占据”体素。在这种情况下,树的上级0 2201包含单个体素条目{3,0,3}。这个体素进而指向树的下一级2202,所述下一级包含元素{3,0,3}中的单个体素。数据结构中与稀疏体素树的级别0相对应的条目是其中一个体素被设置为被占据的64位整数2203。所设置体素意味着然后在与2203中设置的体素体积相对应的树级别1中分配64位整数的阵列。在级别1子阵列2204中,仅将这些体素之一设置为被占据,而所有其他体素设置为未被占据。在本示例中,由于树是两级树,因此级别1表示树的底部,使得层级结构在此处终止。
图23展示了根据一些实施例的两级稀疏体素树2300,其包含特定体积的位置{15,0,3}和{15,0,15}中的被占据体素。在这种情况下(其将特定体积细分为64个上级0体素),树的上级0 2301包含两个体素条目{3,0,0}和{3,0,3},其中,相应的数据2304示出两个体素被设置(或占据)。稀疏体素树(SVT)的下一级作为64位整数的阵列被提供,所述阵列包含两个子立方体2302和2303,在级别0中设置的每个体素对应一个。在级别1子阵列2305中,两个体素被设置为被占据(v15和v63),并且所有其他体素被设置为未被占据和树。这种格式是灵活的,因为树的下一级中的64个条目总是与树的上层中的每个所设置体素相对应地分配。这种灵活性可以允许以灵活的方式(即,不是以固定的顺序,诸如随机地)将动态变化的场景几何结构插入到现有的体积数据结构中,只要已经设置了上层中的相应体素即可。如果不是,则将维护指针表,导致更高的存储器要求,否则将需要至少部分地重建树以便插入无法预料的几何结构。
图24展示了根据一些实施例的用于存储来自图23的体素的替代技术。在本示例中,总体积2400包含存储在如图23中的全局坐标{15,0,3}和{15,0,15}处的两个体素。在这种方法中,并非分配64条目的阵列来表示在级别0下面的级别1中的所有子立方体,而是仅分配级别1中实际包含几何结构(例如,如由相应的级别0体素是否为占据者所指示的)的那些元素作为相应的64位级别1记录,使得在本示例中,级别1仅具有两个64位条目而不是六十四个条目(即,对应这64个级别1体素中的每一个,无论是被占据还是空白)。因此,在本示例中,第一级0 2404等效于图23中的2304,而下一级2405在存储器要求方面比图23中的相应2305小62倍。在一些实施方式中,如果要将新几何结构插入级别0中,而级别1中尚未分配空间,则必须复制并重新排列树。
在图24的示例中,可以通过对在当前层上方的层中的被占据体素进行计数来导出子体积。以这种方式,系统可以确定在体素数据中一个较高层结束并且下一个较低层开始的位置。例如,如果三个层0体素被占据,则系统可以预期在体素数据中三个相应的层1条目将跟随,并且(在这三个之后的)下一条目与层2中的第一条目相对应,以此类推。在场景的某些部分不随时间变化或者在应用中需要比如从扫描冥王星表面的空间探测器远程传输体积数据(其中每个位的传输都昂贵且耗时)的情况下,这种最佳紧缩可以非常有用。
图25展示了根据一些实施例的可以将体素插入到表示为64位整数体积数据结构条目的4^3立方体中以反映相应体积内的几何结构的变化的方式。在一个示例中,每个体素立方体可以被组织为如2500中所示的64位整数内的四个逻辑16位平面。除其他示例组织之外,每个平面对应于Z值0到3,并且在每个平面内,每个y值代码4个逻辑4位位移0到3,并且最后在每个4位y平面内,每个位代码4个可能的x值0到3。因此,在本示例中,为了将体素插入到4^3体积中,首先可以将1位的x值移位0到3,然后可以将这个值移位0/4/8/12位以对y值进行编码,并且最后可以通过移位0/16/32/48位来表示z值,如2501中的C代码表达式所示。最后,由于每个64位整数可以是多达64个体素的组合,其中每个体素是单独写入的,因此新位图必须通过对旧位图值与新位图值进行或运算而在逻辑上与从稀疏体素树读取的旧64位值组合,如2502中所示。
图26展示了根据一些实施例的用于将体素插入到由64位整数表示的4^3立方体中的逻辑。所述逻辑由3层多路复用器组成。第一多路复用器2603可以根据2位x输入2600来对x中的体素的位置进行编码,从而产生到第一多路复用器2604的4位输出上的在x上0、1、2或3位的有效移位。第二多路复用器2605根据y输入2601来将第一多路复用器2604的4位输出根据y输入移位0、4、8、或12位,从而产生16位多路复用器输出值2606。最后一个多路复用器2607根据z输入2602来将第二多路复用器2606的输出移位0、16、32或48位,从而在第三多路复用器2608的64位输出上对x、y和z上的体素的位置进行编码。除其他示例实施方式之外,第三多路复用器2608的输出可以通过2610与由64位整数2609表示的4^3体积的位图的先前值进行逻辑或运算,并且因此对体素位图2608的1位更新将出现在更新的64位位图中的正确位置,以便准备好将体积2611写回寄存器堆。
图27展示了根据一些实施例的用于生成6位地址三元组以控制多路复用器的逻辑,所述多路复用器执行体素插入、删除和检索(关于存在的检测)。在本示例中,要在稀疏体素树中插入、检索、测试等的体素的16位x、y和z地址被呈现给地址格式化逻辑2705作为紧缩的64位输入值2700,所述输入值由对应x、y和z中的每一个的三个16位地址后跟用于填充到64位的16个零的未使用字段组成。地址格式化逻辑1605由3个完全相同的选择框2706、2707和2708组成,所述选择框根据移位输入2704来从16位X、Y和Z地址中选择2位。然后将这三个两位地址xm(2712)、ym(2713)和zm(2714)地址应用于如图27和前一段落中的附随描述中所述的x、y和z多路复用器级别2715、2717和2719。
图28展示了根据一些实施例的地址选择逻辑,其用于从16位输入地址2802针对sel[3:0]输入2801指定的SVT级别来生成2位地址输出地址2824。可以根据真值表2825在二进制独热解码器2803中执行对4位sel[3:0]输入2801的解码。在独热解码器中,仅输出线l0至l6(2804至2810)之一可以在任何时间都为高而所有其他输出都为零。如果来自独热解码器2803的电平为高,则选择到当前多路复用器级别的输入地址对,否则选择来自前一多路复用器级别的输出。在多路复用器树中,第一级由解码器输出l6 2806控制,所述解码器输出如果为高,则控制多路复用器对2811以选择地址位对a1:a0如果为高,并且如果为低则选择a3:a2,其中,所选择的多路复用器输入对出现在输出对2812上,所述输出对进而连接到l5多路复用器对2813。多路复用器2813的第二级由选择线l5(2805)控制,所述选择线如果为高,则选择前一多路复用器对2812的输出,否则如果2805为低,则选择a5:a4地址对。解码以类似的方式继续,直到产生2位输出地址对[1:0]2824的最终多路复用器级2823。
转到图29,示出了表示,用于展示根据一些实施例的可以如何通过逻辑或运算来在X方向上对存储在64位整数2900中的3D体积对象进行投影以产生2D图案2901、在Y方向上进行投影以产生2D输出2902、并且最终在Z方向上进行投影以产生2903中所示的图案。图30展示了根据一些实施例的如何对来自输入64位整数的位进行逻辑或运算以在X、Y和Z上产生输出投影。在本示例中,表格3001逐列示出了来自输入向量3000的哪些元素索引被进行或运算以产生x投影输出向量3002。表格3003逐列示出了来自输入向量3000的哪些元素索引被进行或运算以产生y投影输出向量3004。最后,3005逐列示出了来自输入向量3000的哪些元素索引被进行或运算以产生z投影输出向量3006。
X投影对来自输入数据3000的位0、1、2、3进行逻辑或运算以产生X投影3001的位0。例如,3001中的位1可以通过对来自3000的位4、5、6和7进行或运算来产生,以此类推。类似地,Y投影3004中的位0可以通过对3000的位0、4、8和12一起进行或运算来产生。并且通过对3000的位1、5、9和13等一起进行或运算来产生3004的位1。最后,通过对3000的位0、16、32和48一起进行或运算来产生Z投影3006中的位0。并且可以通过对3000的位1、17、33和49一起进行或运算来产生3006的位1,以此类推。
图31示出了根据一些实施例的Z方向上的3D到2D投影的硬件组织。在这个特定示例中,所述硬件可以包括输入64位寄存器3100,其输出连接到十六个4输入或门3101、3102等的阵列,其中3101的输出连接到输出Z投影3104中的位0,3102的输出连接到3104中的位1,以此类推。通过使用投影硬件来组合跨X、Y或Z上的多个体素立方体的投影,可以针对完整的体积生成在X、Y或Z上的投影。另外,除其他示例之外,如果需要,则添加掩码逻辑以允许从逻辑或中屏蔽掉来自4^3立方体的1至4个级别将是简单的,因此在X/Y/Z投影中存在单个体素粒度。
图32示出了根据一些实施例的可以如何使用投影来生成简化地图的示例。在这种场景下,目标可以是从体素体积3202产生高度h 3201且宽度w 3201的运载工具3200沿着向下的路径的紧凑2D地图。这里,Y投影逻辑可以用于从体素体积3202生成初始粗略2D地图3203。在一些实施方式中,可以对地图进行处理以检查特定尺寸的特定运载工具(例如,汽车(或自主汽车)、无人机等)是否可以通过路径的宽度3201和高度约束3201。为了确保路径是可通过的,这可以通过以下方式来执行:通过在Z上执行投影以检查宽度约束3201,并且可以屏蔽Y上的投影以将计算限制到运载工具的高度3201。通过附加的后处理(例如,在软件中),可以看出,对于可通过并且满足宽度和高度约束的路径,仅沿着路径的点A 3204、B3205、C 3206、D 3207、E 3208和F 3209的X和Z坐标可以被存储或通过网络进行传输,以便完全重建运载工具可以沿着行驶的合法路径。假设路径可以被解析为这样的逐段分段,则可以以路径的每分段线性部分仅一个字节或两个字节来完全描述所述路径。除其他示例之外,这可以有助于这种路径数据的快速传输和处理(例如,通过自主车辆)。
作为使用LIDAR或其他昂贵手段进行精确测量的替代方案,图33展示了根据一些实施例的可以如何通过数学手段来聚合来自嵌入式设备的体积3D测量结果或简单2D测量结果以便生成高质量的众包地图。在所提出的系统中,多个嵌入式设备3300、3301等可以配备有能够进行测量的各种传感器,这些测量可以被传输到中央服务器3310。在服务器上运行的软件对所有测量结果3302执行聚合,并通过非线性求解器3303对所得矩阵执行数值求解,以产生高度准确的地图,所述地图然后可以被重新分配回嵌入式设备。实际上,数据聚合还可以包括来自卫星3320、空中LIDAR调查3321和陆地LIDAR测量3322的高准确度调查数据,以在这些高保真度数据集可用的情况下提高所得地图的准确度。在一些实施方式中,除其他示例实施方式之外,可以使用具有诸如本文所描述的格式的稀疏体素数据结构来生成、转换为或以其他方式表达所述地图和/或所记录的测量结果。
可以复制图31中的投影逻辑以产生X、Y和Z上的同步投影,或者可替代地当不需要同步投影时,图34中的简图示出了:在一些实施例中,可以如何在输入多路复用器级的控制下扩展图31中的逻辑以产生X、Y或Z上的投影,以便选择4个输入位的适当四边形以路由到图31中的这16个或门中的每一个。另外,在应用需要X、Y和Z投影的体素级准确度的情况下,可以使用一组64个与门来屏蔽掉位平面。出于相同保真度的原因,可以在图31的逻辑中复制这个掩码逻辑。3401是诸如掩码0、1、2或3等掩码,并且3400是与门。
图35是简图,示出了根据一些实施例的可以如何加速由2D位图生成直方图金字塔。可以通过对表示为示例体积数据结构的64位整数3500条目的2D二进制阵列的输入8×8位表示中的一的数量进行连续求和来计算直方图金字塔。直方图金字塔的第一级是通过对3500中的每个2×2位分组中的一的数量进行求和以产生3501中所示的十六个3位数字{0,1,2,3,4}来导出的。例如,64位值3504的位0、1、2和3(对应于350)可以由4×3位加法器3505来求和,以在I0_x寄存器3506中产生部分和。下一个4×3位加法器计算位4、5、6和7等的总和。十六个4×3位加法器的第一层的输出被紧缩到48位寄存器I0_x(也表示为3507)中。通过以下方式来计算直方图金字塔的下一级:使用8位加法器将寄存器I0_x(3505)中的部分乘积求和至3508,以对这四个3位部分和I0_0、I0_1、I0_2和I0_3进行求和,从而计算级别1的值I1_x(例如,3509),I1_x的元素被级联到也对应于3507的3517x中。最后级经由4×5位加法器树3510来将I1_x元素(例如,3509)求和到7位结果中。然后将3510的输出存储在与3503和3507相对应的寄存器3512中作为I2_0。除其他示例特征和实施方式之外,从易于使用的角度来看,从存储器映射的角度而言,这三个元素3514、3516和3507可以被紧缩成3518中所示的128位格式。
图36示出了根据一些实施例的可以如何加速由3D位图生成直方图金字塔。类似于图35的示例,示例体积数据结构(例如,3600、3601、3602、3603)的64位整数条目此次针对4^3 3D体积而不是8×8 2D体积进行编码。可以将3D体积缩小为由2个级别3604和3605、然后是3606组成的直方图金字塔。在图36的情况下,体积在3个维度上缩小2倍,而不是如图35的情况那样仅在2个维度上缩小。64位整数条目中的位可以如3610中所示地布置,并且由一行16个四位加法器3650至3655进行求和。第一个4位加法器3650对位0、1、4和5进行求和一直到第十六个加法器3655,所述第十六个加法器对3610的位58、59、62和63进行求和。然后,第二行的八个2×3位加法器3660至3665对4位加法器3650至3655的输出进行求和。例如,加法器3660对3650和3652的输出进行求和,并将结果存储在I1_0(3670)等中。最后,8×4位加法器树3614对I1_x元素3670至3675进行求和,并将结果存储在I2_0(3615)中。
图37是简图,示出了根据一些实施例的可以如何加速在2D 2×2位地图上的2D路径查找。操作原理是:对于完全相同的网格单元格的地图上的点之间存在的连接性,x或y或者x和y上的连续运行的单元格的值必须全部设置为一。因此,可以对从这些单元格中绘制的位的逻辑与进行实例化以测试网格中的位图是否存在有效路径,并且可以针对通过N×N网格的每个有效路径对不同的与门进行实例化。在一些实例中,这种方法可能引入组合复杂性,因为即使8×8 2D网格也可能包含264-1个有效路径。因此,在一些改进的实施方式中,可以将网格减少到可以被分层测试连接性的2×2或4×4个图块。2×2位图3700包含标记为b0、b1、b2和b3的4个位。这4个位可以采用具有相应的标记3701至3717的值0000至1111。这些位图案中的每一个表示标记为3721至3730的2×2网格的面之间的不同级别的连接性。例如,当2×2网格3700包含位图1010(3712)、1011(3713)、1110(3716)或1111(3717)时,存在表示3700中的x0与y0之间的竖直连接性的3721或v0。如表格3718的行1所示,3700中的2输入逻辑与或者b0和b3在连接性图中生成v0,所述v0可以在更高级别的硬件或软件中用于通过已经被细分为2×2子网格的全局网格来决定全局连接性。如果全局图在x轴或y轴上包含奇数个网格点,则顶级网格将需要填充到下一最高偶数个网格点(例如,使得将需要1个额外的零行添加到全局网格上的x轴和/或y轴)。图37进一步示出了示例性7×7网格3750,其示出了如何通过添加用零填充的附加行3732和列3734来将所述网格填充到8×8。为了与其他技术(例如,深度优先搜索、广度优先搜索或迪杰斯特拉算法或其他基于图形的方法)相比加速路径查找,本示例可以将N×N地图3750逐步二次下采样为2×2地图。例如,在本示例中,通过对3750中的单元格A、B、C和D的内容进行或运算来填充3740中的单元格W,以此类推。进而,对3740中的2×2单元格中的位进行或运算以填充3742中的单元格。在路径查找方面,算法从网格3742的最小2×2表示开始并对每个位进行测试。仅需要测试3740的4×4网格(由四个2×2网格组成)中的与2×2网格3742中的一位相对应的部分的连接性,因为我们知道零位意味着在3740中不存在相应的2×2网格单元格。这种方法还可以用于搜索3720中的8×8网格,例如,如果3740中的单元格W包含零,那么我们就知道在3720中的ABCD中不存在路径等。这种方法从所使用的图形搜索算法中修剪分支,所述图形搜索算法无论是A*、迪杰斯特拉、DFS、BFS还是其变体。除此之外,可以使用具有2×2组织3718的硬件基本路径查找器来进一步限制相关联的计算。实际上,可以使用具有与3740和3742相同的安排的五个2×2硬件块来组成4×4基本硬件元件,以进一步约束需要执行的图形搜索量。此外,针对潜在的任何N×N拓扑,可以利用具有与3742、3740、3700等相同的安排的二十一个2×2HW块(3718)来构造8×8基于硬件的搜索引擎。
图38示出了根据一些实施例的可以如何加速在3D 2×2×2位图上的3D路径查找。类似于图37的示例,N×N×N网格可以被填充为2的倍数(N必须为偶数),如3800中所示。可以将这个网格逐步二次采样为如3801中所示的4×4×4网格,并且最后成为3802中的2×2×2网格。与图37类似,每个2×2×2网格单元格(3802)中的单元格中存在或不存在一可以用于判定是否应该搜索4×4×4网格的任何区域,4×4×4网格中的单元格可以用于修剪8×8网格中的计算,以此类推,直到得到独立于用于搜索整个N×N×N网格的图形算法的完整N×N网格。在2×2×2网格级别处,2×2×2位图中的8个位被标记为v0至v7,如3803中所示。在3804中使用相同的颜色编码示出了与立方体的面的连接性。如通过3805中所示的2×2×2体积的路径查找器的连接性矩阵所示,连接性是对称的,因此只需要表示下三角形,因为从A到B的连接性与从B到A的连接性相同。此外,不必考虑沿对角线的元素,因为它们是隐含的。3806至3813中示出了3维中的连接性的等式,其中,各个部分示出了为了在2×2×2体积3803中的体素之间存在连接性而需要全部为一的位的等式。例如,为了存在v0与v1之间存在的连接性,位v0与v1必须都为“1”,为了存在v0与v2之间存在的连接性,v0与v2两者必须都为“1”,并且为了v0与v3之间存在的连接性,则v0、v1或v2、与v3必须都为“1”,以此类推,如真值表的部分3086中所示。根据这个组织,所示的等式可以在与-或逻辑电路系统中实施,以在8位位图3803上实施2×2×2路径查找,并在单个并行步骤中输出体素v0至v7之间的路径。进一步地,以类似于图37所示的方式,可以按照以3802与3801之间示出的方式互连的3805使用五个2×2×2HW路径查找器来构造4×4×4原始HW路径查找器。实际上,可以按照3802、3801和3800的连接性来实施连接一百三十七个2×2×2HW路径查找器的8×8×8HW路径查找器,以及其他示例。
图39是简化框图,示出了根据一些实施例的可以如何使用所提出的体积数据结构来加速碰撞检测。可以将几何结构的3D N×N×N图二次采样成如先前图38所示的由最低细节层次(LoD)2×2×2体积3802(3902)、下一个最高4×4×4体积3801(3901)、8×8×8体积3800(3900)、以此类推一直到N×N×N组成的金字塔。如果无人机、运载工具或机器人的位置3905在3D空间中经由诸如GPS等定位装置或经由根据3D地图的重新定位而已知,则其可以快速地用于通过适当地缩放(将它们除以2的相关倍数)无人机/机器人的x、y和z位置并且查询3902是否存在几何结构(例如,检查相应的位图位是否为指示可能的碰撞的一)来测试相关的2×2×2子体积的象限中的几何结构的存在或不存在。如果存在可能的碰撞(例如,得到“1”),则可以在体积3901、3900等中执行进一步检查以确立无人机/机器人是否可以移动。然而,如果3902中的体素是自由的(例如,“0”),则机器人/无人机可以将其解释为自由空间并且操纵方向控制以在地图的大部分中自由移动。
如以上所讨论的,可以利用体积数据结构来增强包括各种几何结构的体积内的光线投射性能。虽然上面介绍了音频光线投射的概念(例如,结合图14至图19),但是应当理解,可以利用类似的原理来执行结合图形渲染、路径规划、碰撞避免的光线投射以及涉及3D几何结构的其他光线投射应用。例如,如图40的简化框图4000所示,示出了用于说明可以如何结合示例路径查找应用来使用体积数据结构的系统。作为示例,无人机4002(或其他设备,诸如机器人、遥控车辆等)可以负责导航3D体积4004。无人机4002(或相关联的控制器设备(例如,4006))可以配置有用于获取描述体积的体积数据结构4008的基于硬件和/或软件的逻辑,(多个)设备(例如,4002、4006)可以使用所述体积数据结构来识别体积4004内的几何结构以影响或指引无人机4002的行驶模式(例如,要避开的障碍物、无人机要作为目标的对象(例如,要拾取和运输的包裹)、表示潜在着陆和停机坪的区域等)。在一些实例中,可以将体积数据结构4008预先加载到无人机4002的本地存储器上,以准备在与建模的体积4004相对应的环境中使用无人机。在其他示例中,无人机4002可以从网络4010中的资源(例如,与不同体积和环境的范围相对应的体积数据结构的储存库4012)获取体积数据结构4008的至少一部分。例如,无人机4002(或控制器系统4006)可以向网络4010传输无线通信,以指示对特定环境的体积模型的请求。在一个示例中,所述请求可以包括全球定位数据或其他位置信息,储存库系统4012可以利用所述信息来识别相应的体积数据结构。因此,响应于无人机4002(或其控制器4006)的使用,可以(通过网络)返回相应的体积数据结构(例如,4008)。作为示例,可以在无人机处(或由其控制器)测量无人机4002的行驶方向(例如,4014),并且可以根据体积数据结构来识别体积4004中的体素(例如,4016、4018等)的路径,如果无人机继续沿着其当前航线,则无人机将进入所述路径。类似地,除其他示例之外,行驶路径(例如,4014)可以识别出一个体积的边界(由第一体积数据结构表示)正在接近并且应当访问和使用与相邻体积相对应的第二体积数据结构。
在一些情况下,可以在行驶开始之前结合特定设备的行驶(例如,基于设备的起始位置)来选择体积数据结构。在其他情况下,当设备行驶通过体积时可以选择并提供体积数据结构(例如,当检测到设备或其控制器正要接近空间中的相应点时,将新的或附加的体积数据结构加载到所述设备或其控制器上)。在一些实例中,还可以提供对体积数据结构的更新例如以反映几何结构的临时或新的变化(例如,以示出新建造的起重机、屏障、沟渠等的存在,或者甚至先前存在的几何结构的移除等),这些变化可能不会反映在与特定空间相关联的(多个)体积数据结构中。除其他示例之外,在一些实例中,当检测到行驶设备接近相应区域时,可以将这种体积信息推送或广播到所述行驶设备,这可以使设备利用新信息来替换或更新其正在使用的体积数据结构(例如,通过从相应的条目插入或移除位)。
随着设备在环境中前进,设备的逻辑可以用于识别如在体积数据结构中所描述的一个或多个体素(例如,4018)内识别的即将到来的几何结构。可以由无人机系统来处理几何结构的存在,以改变或微调其在体积内的导航。例如,体积数据结构可以以多个细节层次定义几何结构,并且识别低细节层次体素中的几何结构可以使无人机系统逐步处理体积数据结构以识别相应的更高细节层次的体素。在一些实施方式中,这可以涉及无人机从基于云的储存库(例如,4012)请求体积数据结构的其余部分,所述其余部分包括对更高细节层次的体素的表示。在其他情况下,体积数据结构的紧凑性质可以允许无人机系统4002(其本身可以具有受约束的存储器和处理资源)来表示且方便地存储和处理所有细节层次。在一些情况下,除其他示例实施方式之外,可以对所识别的几何结构执行推断(例如,使用诸如本文所述的CNN)以确定正在接近的几何结构的身份或特性,并且设备对几何结构的响应可以基于这些特性(例如,以在行驶期间忽略或避开所述几何结构)。
在仍其他示例中,诸如图40所示,使用体积数据结构来导航体积(例如,4004)的无人机、机器人或其他设备(例如,4002)本身可以拥有传感器(例如,立体相机、深度扫描仪、光探测和测距(LIDAR)扫描仪或其他图像传感器),所述传感器可以允许设备向储存库系统(例如,4012)提供反馈以更新环境4004的主体积数据结构(例如,4020)。实际上,在一些实施方式中,系统(例如,4002和/或4006)可以拥有处理由图像传感器收集的图像数据以根据定义的结构生成体积数据结构的功能。例如,除其他示例实施方式之外,当导航体积时(例如,使用由云储存库4012提供的体积数据结构),设备(例如,4002)可以生成观察到的图像数据4022(例如,被更新以反映由无人机4002观察到的差异的观察到的体积数据结构),所述观察到的图像数据可以与检索到的体积数据结构4008(其可以用作体积4004的预期参考描述)进行比较,以生成体积数据结构的Δ表示4024(例如,通过对观察到的数据结构4022与参考数据结构4008进行异或运算)。设备(例如,4002)可以将在体积4004中观察到的差异传达4026至储存库系统4012。在一些实施方式中,储存库系统4012(或另一系统,诸如无人机系统4002)可以处理这种反馈以导出4028体积数据结构的更新版本4030,所述更新版本可以替换4032体积数据结构的主版本。以这种方式,可以使用来自潜在的多个不同传感器和系统的反馈来插入或删除(例如,使用本文所公开的机制)体素以连续地精化和更新所维持的体积数据结构,以便描述在由体积数据结构建模的各种环境(例如,4004)中的潜在变化的几何结构。
转到图41的示例,示出了示例系统的简化框图4100,所述系统开发并维护用于各种应用的体积数据结构4205。例如,可以提供储存库系统4012,其可以通过一个或多个数据网络4010(例如,使用Wi-Fi、蓝牙、以太网和其他无线和/或有线通信技术)连接到配备有硬件和/或软件的各种客户端系统(例如,4002、4110、4115等)以便使用体积数据结构(例如,4105)。例如,空中无人机4002可以获得、本地存储和利用特定的体积数据结构4105a,以辅助相应3D环境内的碰撞检测和导航。在另一示例中,体积数据4105b可以服务于诸如智能电话、AR/MR/VR系统、游戏控制台等用户计算设备(例如,4010),以用于在设备4110的显示器上渲染与由体积数据结构4105b建模的3D环境相对应的图形。在另一示例中,除其他示例用例之外,诸如配备有车载计算机的汽车4015等运载工具可以获得并使用体积数据结构4105c,以辅助自主驾驶应用、(在仪表板或头戴式显示器上)呈现图形全球定位引导。
可以根据特定的体积数据结构格式(诸如在一些先前示例中所讨论的)来定义跨潜在的多个不同系统和应用而使用的体积数据结构(例如,4105a至4105c),以紧凑地表示相应体积的多个细节层次4120中的每个细节层次。例如,体积数据结构可以包括整数条目(例如,64位整数条目),所述整数条目的各个二进制值指示几何结构是否存在于表示由体积数据结构描述的总体积的子体积的相应体素中。体积数据结构中的条目可以根据使用体积数据结构定义的多个细节层次4120中的任何一个细节层次。在一个示例中,最低细节层次的体素(例如,由4125表示)可以提供最低粒度信息,其中,这些体素中的每一个表示由体积数据结构表示的总体积的子体积。处于这个第一(L0)且最低细节层次的体素是最大定义的子体积。处于下一细节层次4130(L1)的体素可以表示由L0体素表示的每个子体积的各个子体积。在一个示例中,可以在体积数据结构中提供单个L0条目以描述L0体素中的每个体素。体积数据结构中的每个L1条目同样可以描述细分L0体素中的相应体素的各个L1体素。如以上所讨论的,为了提供体积的稀疏数据表示,可以仅为被指示(例如,由二进制“1”)为包括几何结构的那些L0体素提供L1条目,因为空白的L0体素(例如,在L0条目的相应位中由二进制“0”指示的)表明所述体素(以及此体素的所有子体积)是空白的。因此,并非提供全零的L1条目,而是可以简单地省略这些条目,其中,在紧接的较低级条目(例如,L0)中的一指示下一较高级(例如,L1)中的哪些(以及多少)条目在体积数据结构中被提供。同样,下一细节层次4135(L2)可以表示L1体素的细分,以此类推,直到达到体积中定义的最高细节层次4140(Ln),其中,Ln体素表示体积和体积内的几何结构的地理上最小且最高粒度的表示。
转到图42的示例,示出了体积数据结构4200的示例表示。在本示例中,可以针对相应体积定义的多个细节层次中的每个细节层次提供条目(例如,4205、4210、4215、4220)。由于一些体积可以是以比其他体积更高且更多细节层次定义的,因此一些体积数据结构可以具有更多或更少的细节层次(以及相应的条目)。如在前述示例中的一个或多个示例中那样,本示例中的体积数据结构4200可以包括与处于最低细节层次的体素相对应的单个L0条目4205。所述条目可以包括与L0体素中的每一个相对应的二进制值。紧接着与L0条目4205邻接的可以是表示各个L0体素中的每一个的子体积的下一(更高)细节层次(L1)体素的一个或多个条目。对于在L0条目4205中标识为空白的任何L0条目,不提供L1条目。进一步地,如上文所介绍的,对于被识别(例如,通过“1”)为至少部分地包括几何结构的每个L0体素,可以提供相应的L1条目4210。因此,每个L1条目同样可以包括表示相应L0体素内的每个L1体素的二进制值。如在L0条目中那样,L1体素可以被识别为完全空白(例如,通过“0”)或至少部分地被几何结构占据(例如,通过“1”)。进一步地,对于被识别为被占据的每个L1体素,可以在体积数据结构4200中提供相应的L2条目,以识别相应的L2体素(表示L1体素中的对应体素的子体积)是否被任何几何结构占据,以此类推,直到将体积细分为针对体积和几何结构测量的最高粒度体素(如在一个或多个Ln条目4220中所定义的)。
在一些实施方式中,头部4225可以另外与体积数据结构4200一起提供以指示特定体积数据结构4200的各种潜在可变特性。作为示例,头部4225可以包括头部大小字段,以标识头部4225何时结束并且L0条目4205何时开始(因为L0条目可以与头部位4225邻接)。头部4225可以包括版本字段和模式字段,其可以向消耗逻辑标识出在体积数据结构中采用什么格式(例如,以支持体积数据结构格式的增强和演进)。深度字段可以指示在由体积数据结构建模的体积内定义的细节层次的数量,其中,所测得的一些体积具有比其他体积更多且更高粒度的细节层次(例如,基于用于测量体积的技术的精度、所测得体积的大小、体素的比例等)。在体积数据结构头部4225的一些实施方式中可以提供坐标参考系(CRS)字段,例如,以标识如何将体积数据结构中表示的体积映射到更大的体积(例如,在视频游戏或虚拟世界、世界地图、国家、太阳系等内定义的虚拟体积)。由于体积数据结构描述的体积可以是真实的或虚拟的并且位于潜在任何更大的地理区域中,因此可以定义各种不同的坐标参考系并将其用于以不同的精度标识体积在更大的地理区域中适合的位置。进一步地,可以提供坐标字段(例如,坐标X和坐标Y)以指示与由体积数据结构建模(根据CRS字段中标识的CRS)的体积的位置相对应的坐标值。例如,可以提供纬度和经度或其他坐标值。这些值可以用于标识体积数据结构应该响应于识别到设备处于与这些坐标相对应的环境内或进入所述环境而服务于消耗设备。进一步地,坐标字段的数量和类型可以取决于CRS字段中标识的特定CRS。可以提供附加字段(例如,最小X、最小Y、最小Z、最大X、最大Y、最大Z),以定义体积数据结构的边界框(例如,如根据坐标X和坐标Y字段等中提供的CRS坐标所测量的),并且更敏锐地标识由体积数据结构建模的体积。
头部可以包括除了在图42的示例中示出的明确展示的信息之外的附加信息。例如,基于模式字段(和/或版本字段)的值,可以定义附加(甚至自定义)字段。模式字段还可以标识在体积数据结构的条目中是采用1位每体素表示、还是采用2+位每体素表示。除其他示例之外,在多位每体素表示的情况下,模式值还可以标识为每个体素提供的附加信息的(多种)类型(例如,体素的颜色、体素内的几何结构的材料、体素内的几何结构的反射系数、几何结构的类别或标识等等)。在一些实例中,包括在体积数据结构的头部4225中的信息可以被确定为对于要使用体积数据结构4200的应用是多余的,使得头部可以被消耗系统丢弃。例如,除其他示例实施方式之外,在受特定体积约束的应用中,定义特定体积在更大的真实或虚拟中适合的位置的信息可能是不相关的,并且头部(或这些字段)可以在被存储在本地存储器中或使用消耗系统来处理之前从体积数据结构中剥离。
转到图43的示例,示出了表示4300,其展示了特定体积4305(例如,立方体或矩形棱柱体积)到与较大环境(例如,由数字地图4315表示)相对应的空间4310的映射。在一些实施方式中,可以结合体积数据结构4305本身的生成来开发将所述体积数据结构映射到地图4315的信息。例如,可以对某个区域进行扫描以生成深度图、立体图像数据或其他信息,根据这些信息可以生成体积数据结构(例如,使用SLAM流水线)。在扫描期间,生成相应的位置信息并将其与图像数据和所得的体积数据结构相关联。除其他示例实施方式之外,在一个示例中,可以对地理区域的一部分(例如,城市的一部分)执行LIDAR扫描,并且可以由所得的LIDAR数据生成体积数据结构。将体积数据结构中的几何描述映射到物理环境可以实现许多特定于位置的应用。例如,混合和增强现实应用可能涉及将虚拟几何结构遮挡在物理几何结构之上或代替物理几何结构,这可以使用将虚拟几何结构表示为映射到物理几何结构(这可以由单独的体积数据结构来表示)的体积数据结构来实现或增强。全局位置、碰撞避免和路径查找应用也可以利用体积数据结构(或者甚至是由体积数据结构表示的体积内的各个体素)到位置信息的映射,诸如图43的示例所示。
在一个示例中,通过将地理信息系统(GIS)表示的坐标映射到由体积数据结构表示的体积的坐标(例如,如在体积数据结构的头部中所指定的),可以将地理位置信息映射到体积数据结构信息或与体积数据结构信息相关联。在一些情况下,可以缩放GIS表示或体积数据结构表示中的任一个或两者以将体积“拟合”到(潜在2D)GIS表示。当GIS信息和体积对齐时,可以利用与包括在GIS表示中的信息相对应的元数据来增强相应的体积数据结构。这可以通过沿y轴进行投影以产生3D VOLA体积的2D平面布局地图来完成,所述平面布局地图可以与类似的2D GIS地图对齐。产生2D VOLA投影可以涉及确定地平面处于3D地图中的何处,并且然后对3D体积进行适当分切,使得建筑物等的轮廓清晰可见。一旦VOLA和GIS 2D地图已经对齐(例如,通过配准),就可以将GIS数据传播到3D VOLA体积中的叠加体素以对其进行标记。例如,GIS表示可以标识未在体积数据结构中标识的街道、建筑物、树木、公园、水体、人行道、山和其他特征。实际上,在一些实施方式中,体积数据结构可以以纯二进制方式表示环境内的几何结构——其在那里,或者不在。通过将体积映射到更鲁棒的相应地理信息,体积数据结构中描述的体素可以与相应地理信息相关联,使得可以根据地理信息来定义表示特定几何结构的体素。例如,与GIS表示中标识街道的一部分对齐的体素可以被系统确定为街道几何结构,同样地,与建筑物、树木、水等的GIS表示对齐的体素同样可以与这些特征相关联。通过将体积数据结构与这种GIS信息(或其他信息)结合或补充,可以针对各个体素定义元特性,诸如与由体素表示的特定材料或对象相关联的颜色(例如,对于与水对齐的体素为蓝色、对于与树木对齐的体素为绿色等)、与材料相关联的反射系数(例如,与建筑物对齐的体素可以被自动分配与混凝土、玻璃、金属和/或建筑物构造中使用的其他材料相关联的反射系数),等等。以这种方式,来自其他来源的信息(例如,GIS信息)可以快速地与体积数据结构中描述的几何结构相关联,以丰富由体积数据结构提供的信息(并且无需手动定义单个体素几何结构的特性以建立更丰富的3D环境表示)。
如上文所介绍的,可以使用以多个上升细节层次定义体素的体积数据结构来辅助更高效地处理体积信息,以适当地渲染或以其他方式使用体积数据结构中描述的体积。例如,在体积内用于识别几何结构和反射点、潜在碰撞等的光线投射可以有效地利用示例体积数据结构以任何一个所需细节层次更高效地执行光线投射。图44包括3D空间在二维中的视图的表示4400(例如,3D空间的顶视图或侧视图)。在本示例中,将体积4405细分为处于第一最低细节层次的64个单独体素(例如,4415)的4×4×4矩阵。可以提供相应的体积数据结构来描述如被细分为多个细节层次体素的体积。在图44所示的表示(例如,4405、4415、4420)中,阴影框(例如,4415)指示相应的体素至少部分地被几何结构占据,而空白框指示相应的体素完全没有几何结构。
图44的示例中展示了光线4410穿过由体积数据结构表示的体积的投射。在本示例中,可以首先以最低细节层次处理光线投射。可以识别光线4410所穿过的处于第一细节层次的体素的子集。通过识别这个体素子集,可以忽略所有其他体素。然后可以评估由光线4410遍历的体素集合(例如,通过识别体积数据结构的L0条目内的相应二进制值)以识别这些较低级别体素中的任何体素是否至少部分地被几何结构占据。如果所有体素子集都是空白的(例如,如由体积数据结构中的相应零所表示的),则可以在无需任何进一步处理的情况下立即得出结论:光线4410在体积4405内未遇到任何几何结构。然而,在本示例中,体素子集4415中的至少一个被识别为拥有几何结构(处于某个细节层次)。为了判定光线4410是否与这个几何结构碰撞或相交,系统可以进一步处理体积数据结构以提升在这个基于树的数据结构中定义的细节层次。
例如,如图44中进一步展示的,通过识别出L0体素4415既与光线4410相交又包含某个几何结构,系统可以识别出体积数据结构内表示体素4415的64(43)个子体积的L1条目。L1条目可以针对每个L1体素(例如,4420)指示L1体素是否包括几何结构。因此,系统可以判定L1体素的哪个子集(细分L0体素4415)与光线4415相交,并进一步判定这个子集中的L1体素中的任何一个体素是否被某个几何结构占据。在本示例中,仅L1体素4420被识别为具有某个几何结构并且与光线4410相交。因此,系统可以识别出与L1体素4420的细分相对应的L2条目,并再次确定与光线4410相交的L2体素的子集。在本示例中,与光线4410相交的所有L2体素都未被识别为被几何结构占据。因此,对于体素4415的相交,可以得出结论:光线4410实际上不与几何结构相交,并且系统可以省略对任何更高细节层次体素4415的分析。对于与光线4410相交的任何其他体素,系统同样可以逐步地提升在体积数据结构的条目中定义的细节层次,以判定光线是否与处于特定(高)细节层次的几何结构相交,同时省略对不与光线相交、或不包括几何结构的任何更高级别体素的分析。以这种方式,可以高效地评估体现在示例体积数据结构中的体积的基于树的表示,以判定光线是否与处于期望细节层次(例如,由操作的深度级别指定)的几何结构相遇/相交,从而大大减少了用于做出这样的判定的处理资源、时间、上下文切换以及功率。
图45是简化框图4500,展示了根据本文所讨论的至少一些实施方式的用于消耗体积数据结构并执行光线投射分析和其他处理的示例计算系统。在本示例中,处理器设备4505可以设置有n个处理器核(例如,4506至4511),这些处理器核能够在各种应用中利用体积数据结构来执行操作的并行处理。核4510a至4510f可以与车载多端口共享存储器4515接口连接并共享所述车载多端口共享存储器。例如,每个核4510a至4510f可以具有到车载存储器4515的对应的读写端口。另外,可以另外提供读取存取存储器(例如,DDR存储器4520)来存储数据以供核4510a至4510f中的任何一个进行访问和处理。
在一些实施方式中,与渲染、光线投射、碰撞避免、路径查找或涉及由相应的体积数据结构建模的体积的其他应用有关的工作可以在各个核4510a至4510f之间进行划分,以促进并行计算效率。例如,对于要从特定点投射到特定体积中的多条光线,可以由对应的核4510a至4510f使用相应体积的体积数据结构来处置每个光线投射操作。进一步地,如本示例所示,因为将要最频繁地使用较低级别的体积数据结构条目(例如,因为在到达较高级别之前要遍历树的较低级别,并且某个应用可能不需要较高细节层次的分析等),可以有利的是,将体积数据结构(或VOLA)4525a的一部分加载到共享车载存储器4505中以便由核4510a至4510f快速访问,并将体积数据结构(例如,4525b)中与较高细节层次相对应的条目存储在DDR 4520中,以及其他示例实施方式。在本示例中,由处理器设备4505从特定体积数据结构渲染(例如,使用光线投射)图像(例如,4530)。除其他示例输出和实施方式之外,当图像的部分或图块由并行核4510a至4510f导出时,经渲染图像4530可以被组装(例如,在车载存储器4515中)并且被加载到缓冲器中以递送到输入/输出接口4535(采用可能是各种不同技术(例如,照明、高清多媒体接口(HDMI)、通用串行总线(USB)等)中的任何一种),以供在一个或多个显示设备上呈现。
转到图46,示出了简化框图4600,其展示了使用处理器设备(诸如在图45的示例中示出和讨论的)利用多个向量处理核4610来将示例(例如,基于SST的)体积数据结构4605中描述的几何结构的视图渲染成2D帧4640的示例。例如,可以通过基于相对于在一个或多个体积数据结构中表示的(多个)体积内表示的几何结构定位的参考点(哪种方式移动、转动或以其他方式随场景进展变化)渲染帧而由一个或多个体积数据结构生成帧流(例如,4640)。在一些实施方式中,对体积数据结构4605的渲染(例如,通过在由体积数据结构4605描述的体积内进行光线投射)可以被划分为工作块或图块(例如,4615),所述工作块或图块可以被定义并且置于队列4620中,用于分配给设备中提供的各种处理核(例如,4610)或由其拉出。例如,可以逐行渲染所得的帧(例如,4640),其中,由对应的核来处置对各个行或部分行的渲染。除其他示例实施方式之外,作为另一示例,对将要投射到所描述体积中的一组光线中的各条光线的投射可以与队列4620中的要由多个并行处理核4610并行处置的定义作业(例如,4615)相对应。
在一些实施方式中,可以以有序的方式将图块4615分配给核。在其他情况下,核可以一旦完成前一作业就立即拉出队列中的下一图块(例如,结合前一图块进行渲染)。以这种方式,除其他示例优点之外,可以避免这样的瓶颈:其中为一个或多个核分配具有比由其他核处置的其他图块更重的处理要求的图块。还可以在处理硬件中实施附加优化,以利用紧凑的多级别格式的示例体积数据结构。例如,可以基于体积数据结构中的信息利用一个或多个核来剔除操作。例如,在光线投射应用中,体积数据结构的子集或这些结构内的条目可以被识别为与一条或多条光线相交,从而允许将与来自工作的其余体积和细节层次有关的操作分配给核(例如,4610)。例如,可以读取体积数据结构4605的L0条目,以基于L0体素内不存在与给定帧相对应的几何结构来识别可以被跳过或快速跟踪的操作。可替代地,除其他操作之外,体素中存在几何结构还可以允许基于识别出(例如,在渲染应用中)表示帧的前景的体素的几何结构阻挡此几何结构后面的其他几何结构来剔除作业,可以执行这样的操作以准备要在队列4620中提供以用于由处理核执行的操作的一组优化的作业或图块(例如,4615)。
继续图46的示例,当在帧4640的渲染中完成作业时,可以将这些段(例如,4625)写入存储器4630以组装所渲染帧。在一些实施方式中,除其他示例特征、步骤和实施方式之外,在处理帧时,可以在将所渲染帧4640递送到I/O端口以在设备上显示之前执行附加处理,诸如放大(例如,4635)。
如上文所介绍的,可以提供硬件和/或软件逻辑以利用体积数据的结构来快速缩小操作(诸如,在由示例体积数据结构表示的体积中的光线投射)的范围。例如,转到图47的示例,示出了简化框图4700,其展示了用于识别光线4710与示例体积数据结构4705中描述的几何结构的相交的硬件逻辑的示例实施方式。例如,在体积数据结构(或VOLA)4705被实施为一组64位整数(包括用于识别相应体素内是否存在几何结构的二进制值)的示例中,可以开发相应的一组64位整数条目用于识别光线4710在被投射到由VOLA 4705表示的体积中时所穿过的体素。在图47的示例中,提供了可以从中识别体积数据结构的查找表4715,当在体积内投射时,所述查找表将光线描述为占据沿着光线轨迹的一组体素的几何结构。例如,给定光线进入体积的坐标(由最小x、y、z坐标4720指定)和光线从体积离开的坐标(由最大x、y、z坐标4725指定),可以从查找表4715识别相应的体积数据结构。因此,可以在体积4730内以最低细节层次生成表示光线4710的几何结构布置的64位整数作为来自查找表4715的输出并且将其提供为到与逻辑4735的输入。还可以在与逻辑4735处提供来自体积数据结构4705的相应的64位整数条目(以最低细节层次描述体积4730内的几何结构),以判定体积4730内的哪些最低细节层次(L0)体素被光线4710以及体积4715的几何结构两者占据。在由与门4735返回的值为“1”的L0体素中,L0体素可以被识别为确定光线“命中(hit)”体积内的几何结构或与其相交的体素。可以由与门逻辑4735生成位图以作为选择器值馈送到多路复用器电路系统4740,以从体积数据结构4750中选择与被指示为“命中”的L0体素的子体积相对应的L1条目。然后对这下一细节层次(4745)重复分析,但仅限于这些L1体素(表示识别到命中(在4735处)的L0子体积)。例如,下一细节层次可以涉及确定光线与这些所选L0体素中的相应体素相交的坐标,以确定光线相交的底层L1体素的子集(使用同一或另一查找表4715)。可以将这个体素子集与从体积数据结构4705中选择的相应L1条目(使用同一个或并行的与逻辑(例如,4735))进行比较,以判定光线是否与体积数据结构4705中为这个L1体素子集指定的任何L1几何结构相交。可以重复这个过程,直到达到最高(或目标)细节层次并且识别到光线4710与体素几何结构之间的任何“命中”。针对目标或最高细节层次的比较而识别到的命中(或“1”)可以被解释为识别光线4710与体积4730的几何结构的相交或碰撞的坐标。通过对评估不包括光线或几何结构的体素(例如,处于更高细节层次)的这种层级提前终止,如在本示例中讨论的,使用体积数据结构可以比使用传统光线投射过程明显更快地完成光线投射。
转到图48,示出了简化框图4800,其展示了用于在光线投射应用中检测光线与几何结构的相交的硬件逻辑的另一实施方式的一部分。在图47的示例中,提供了查找表以产生多个细节层次的体积数据条目,以对应于可能与体积相交的任何一条可能的光线(例如,基于光线进入和离开体积的对应进入点和离开点)。这种方法的一个缺点是查找表的大小,其可能约束处理速度。因此,在替代实施方式中,不是为体积中的所有体素提供单个查找表,而是可以将总体积4805在逻辑上细分(例如,4810)为更小的子体积(例如,4815),并且可以为每个子体积定义单独的、相应更小的查找表(例如,4820、4825、4830),以加速总体积4805内的光线投射命中的有关查找和计算。例如,可以将体积4805划分为八个子体积4815。由于光线可以遍历这些八叉树子体积中的至多三个,所以可以首先识别这些八叉树子体积,并且可以识别光线到这些子体积中的对应进入点(例如,4835a至4835c)和离开点(例如,4840a至4840c)并且将其提供作为这些子体积的对应查找表(例如,4820、4825、4830)的输入。每个查找表(例如,4820、4825、4830)可以生成将被提供作为对示例电路4850中的与门4845、4850、4855的输入的64位整数,以判定穿过这些子体积的对应光线段是否与在体积数据结构4860中描述的L0体素中识别的几何结构相交。逻辑门(例如,4865、4870、4875)的网络导出指示哪些L0体素具有潜在的几何结构-光线相交的结果4880。基于这些结果,如图47的示例中那样,可以对逐步更高的细节层次进行类似的评估,直到达到目标细节层次以识别接触并投射穿过体积数据结构4860中表示的地理区域的光线的相交或“命中”。
图49是简化框图4900,展示了光线穿过诸如使用根据上述一些示例中描述的原理定义的体积数据结构来描述的被细分为体素的体积投射的原理。可以利用这些原理来提供替代硬件实施方式,其被配置成根据体积数据结构来检测投射到体积中的任何给定光线是否以及在何处与体积4905内的几何结构相交或碰撞。例如,可以提供电路系统来计算处于每个细节层次的哪些体素与特定光线相交。例如,根据光线在{x,y,z}中进入和离开体积的坐标(例如,使用AABB光线盒相交来确定),可以在其对应的x、y和z分量中确定光线的斜率。使用斜率,并且已知处于每个细节层次的体积内所应用的比例,可以识别每个相交的体素(例如,通过它们在体积内的对应坐标)。然后可以测试这些体素中的每一个以查看是否存在相应的体素几何结构,从而表示光线与几何结构的相交(例如,对在示例体积数据结构中的条目的无符号整数位中找到的位使用逻辑与,如本文所讨论的)。
例如,如图49所展示的,实施方式可以将体积细分为4×4×4L0体素,其中,每个上升的细节层次(例如,4910、4915、4920)将下一较低级别的体素细分为4×4×4子体积。这些子体积可以以单个64位整数条目表示,其中,(例如,L0)条目中的一表示在层级结构4910的下一细节层次(例如,L1)中存在几何结构(编码为64位无符号整数)的位置。进一步地,L14910中的任何64位整数中的“1”位可以指示在下一细节层次(L2)4915处存在几何结构,以此类推,使得结果是仅描述包含表面几何结构的那些体素元素立方体的整个可跟踪体积。因此,使用体积数据结构实施的所得体积图高度稀疏且具有层级结构,以允许仅对可能产生相交的那些子体积进行快速地光线跟踪(例如,其中,不对空白空间进行光线跟踪)。虽然在本公开中讨论的这个和其他示例中提供了这种细分方式,但是应当理解,在不脱离本文所公开的原理的情况下,潜在的任何其他子体积划分(例如,2×2×2、16×16×16、4×4×8、4×5×2等)可以是可允许的并且可以采用非立方体体素。
在采用4×4×4划分的实施方式中,诸如图49的示例中所展示的,可以通过累加x、y和z上的比例斜率(例如,4930、4935、4940、4945)跨x、y和z方向中的每一个上的所有四个体素来对投影到体积(例如,4905)中的光线4925进行插值。判定光线是否与体积内的几何结构相交可以通过首先评估最低细节层次并且对识别到几何结构的那些体素上连续“放大”来开始。这可以允许在不存在与体积中的几何结构的相互作用(或相交、或命中)的情况下,在较低细节层次(即,比目标细节层次)上终止对至少一些光线的跟踪,从而节省时间、功率和存储器带宽。同样被认为是分为多达四个光线段,每个段与光线在体积中穿过的体素相对应。
使用在体积的三个维度(即,x、y和z斜率)中的每个维度上计算的光线斜率(例如,4950),可以执行插值以确定光线向下到目标深度或细节层次的相交。所述深度可以是针对(例如,相应的体积数据结构中的)体积定义的最高细节层次,或者可以简单地是足以针对给定应用确定的细节层次中的指定的一个细节层次。在图49的特定示例中,定义深度为四,意味着定义了四个细节层次(例如,L0至L3(4905、4910、4915、4920))并且光线跟踪应该在第四细节层次L3 4920处结束。在L3处,在本示例中,总体积被细分成总共2563个子体积。这些L3子体积可以表示体积内的体积几何结构的基本单位。因此,如4955处所示,可以根据比例4960来调整除L3之外的每个细节层次的体素(以及根据这些体素定义的斜率)。
在一个示例中,可以根据下式计算给定光线(例如,4925)的斜率:
斜率=(最大(x,y,z)-最小t(x,y,z))/DIM
其中,最大(x,y,z)是光线的离开点,最小(x,y,z)是光线的进入点,并且DIM是体积的3D尺寸(例如,在深度为L3的情况下为256)。斜率可以可替代地以分量化形式表示为:
斜率_x=((最大_x-最小_x)/4)*比例;
斜率_y=((最大_y-最小_y)/4)*比例;
斜率_z=((最大_z-最小_z)/4)*比例;
其中,比例是与要评估的光线相交所处的细节层次相对应的因子(其中,比例在每个连续更高的细节层次上呈指数减小(如4955处所展示的))。由于在本示例中通过除以每个方向上的体素数量(例如,x方向、y方向和z方向中的每个方向上4个体素)来确定斜率,因此应当理解,将相应地计算(例如,通过除以2或16而不是4)采用不同体素细分(例如,2×2×2或16×16×16等)的其他实施方式。根据所计算的斜率,可以利用以下逻辑来确定光线穿过的每个体素的x、y、z坐标(就从体积的参考角测量的体素而言),诸如下面的伪代码中所展示的:
其中,“acc.(累加.)”是累加函数,“int(整数)”是整数舍入函数,“vola_lookup(vola_查找)”是查找表的(例如,64位整数)输出,所述输出用于与体积数据结构的条目(例如,64位)进行比较,并且“i”是与任何细节层次的光线的潜在四个段相对应的增量变量,并且“lookup(查找)”是查找函数,用于返回将(x,y,z)处的体素映射到采用定义的体积数据结构格式(如在描述特定体积内的几何结构的体积数据结构中所采用的)的位的位掩码。
转到图50,示出了简化框图5000,其展示了与渲染来自一个或多个体积数据结构的图形图像相关联的光线投射。例如,可以渲染图形图像以在特定显示器5005上呈现,所述显示器由像素阵列组成。在一种实施方式中,为了渲染由所述一个或多个体积数据结构表示的3D空间,可以将光线从显示器上的每个像素投射到3D空间的(多个)体积中,以识别将从显示屏5005的有利位置呈现的各种几何结构。例如,可以将多条光线(例如,5010)从各种像素(例如,5015)(或显示屏的5005表面区域的其他细分)投射到包含几何结构的体积(例如,5020)中。诸如以上所讨论的,可以使用相应的体积数据结构来描述体积5020。可以确定光线5010进入和离开体积5020的进入点和离开点,并且可以根据此信息来处理体积数据结构以判定光线5010是否(并且在何处)与体积5020中的几何结构相交。在此上下文中,可以使用光线的相交(与从像素5015投射到体积5020中的其他光线的结果一起)来确定在屏幕中的像素处显示的内容。可以对显示器中的全部像素执行类似的光线投射操作,以确定对要在显示器5005上呈现的图像的渲染。
在一些实施方式中,用于{x,y,z}中的光线斜率的硬件插值逻辑(诸如图51A的示例中的简化框图5100a所展示的)可以将光线到由特定体积数据结构描述的体积中的x、y和z进入坐标(5105a至5105c)和离开(5110a至5110c)坐标作为输入。图51A中表示的电路系统可以在硬件中实施上面结合图49讨论的伪代码。例如,可以通过确定(例如,使用加法器5115a至5115c)最小与最大x、y和z坐标之间的差并将结果除以(例如,使用移位器电路5125a至5125c)与正在评估的当前细节层次相对应的比例值5120来确定光线的x、y和z斜率(例如,5130a至5130c)。然后,可以通过施加计数器值i并使用计数器5135来递增所述计数器值、并将计数器值i与每个分量斜率值5130a至5130c相乘(例如,使用乘法器电路系统5140a至5140c)来评估每个光线段(例如,如由体积/子体积中最多达四个体素的边界所划分的)。可以将这些乘积提供给累加器电路(例如,5145a至5145c)以根据斜率来向上移动段(例如,在每个时钟周期(5150)处)并生成要提供给多路复用器电路5155a至5155c的8位代码。基于对应的代码,多路复用器5155a至5155c可以各自基于循环(例如,其使00→01→10→11按顺序迭代)中的当前迭代i生成相应的体素地址值5160a至5160c。
在不脱离本公开的原理的情况下,一些系统实施方式可以结合替代电路系统和算法以针对体积数据结构执行光线投射。例如,尽管图51A的示例示出了当光线穿过体积或子体积时使用计数器(例如,5135)和循环以通过所述光线的这四个段进行插值,但是在其他实施方式中,可以再现(例如,四次)类似于图51A的示例中所展示的电路系统,以允许并行地而不是顺序地执行这些循环的插值(例如,其中,每个并联电路具有各自的使x、y、z斜率与0、1、2或3(而不是依赖于计数器值i)相乘的乘法器(例如,与乘法器5140a至5140c相对应))。这可以允许在单个周期(而不是四个)中执行四个并行插值,其中,对应的输出被提供给查找表以识别潜在的命中(类似于图52所示的电路系统和示例)。在这种实施方式中,可以执行插值,诸如以下伪代码所表示的:
//i=0,与这四个并联电路系统块中的第一个相对应;
acc0.x=min_x;(累加0.x=最小_x;)//+斜率_x*0;
acc0.y=min_y;(累加0.y=最小_y;)//+斜率_y*0;
acc0.x=min_z;(累加0.x=最小_z;)//+斜率_z*0;
x0=((int)acc0.x)>>scale;(x0=((整数)累加0.x)>>比例;)
y0=((int)acc0.y)>>scale;(y0=((整数)累加0.y)>>比例;)
z0=((int)acc0.z)>>scale;(z0=((整数)累加0.z)>>比例;)
vola_comp0=lookup(x0,y0,z0);(vola_计算0=查找(x0,y0,z0);)
//i=1,与这四个并联电路系统块中的第二个相对应;
acc1.x=min_x+slope_x;(累加1.x=最小_x+斜率_x;)//+斜率_x*1;
acc1.y=min_y+slope_y;(累加1.y=最小_y+斜率_y;)//+斜率_y*1;
acc1.x=min_z+slope_z;(累加1.x=最小_z+斜率_z;)//+斜率_z*1;
x1=((int)acc1.x)>>scale;(x1=((整数)累加1.x)>>比例;)
y1=((int)acc1.y)>>scale;(y1=((整数)累加1.y)>>比例;)
z1=((int)acc1.z)>>scale;(z1=((整数)累加1.z)>>比例;)
vola_comp1=lookup(x1,y1,z1);(vola_计算1=查找(x1,y1,z1);)
//i=2,与这四个并联电路系统块中的第三个相对应;
acc2.x=min_x+slope_x*2;(累加2.x=最小_x+斜率_x*2;)
acc2.y=min_y+slope_y*2;(累加2.y=最小_y+斜率_y*2;)
acc2.x=min_z+slope_z*2;(累加2.x=最小_z+斜率_z*2;)
x2=((int)acc2.x)>>scale;(x2=((整数)累加2.x)>>比例;)
y2=((int)acc2.y)>>scale;(y2=((整数)累加2.y)>>比例;)
z2=((int)acc2.z)>>scale;(z2=((整数)累加2.z)>>比例;)
vola_comp2=lookup(x2,y2,z2);(vola_计算2=查找(x2,y2,z2);)
//i=3,与这四个并联电路系统块中的第四个相对应;
acc3.x=min_x+slope_x*3;(累加3.x=最小_x+斜率_x*3;)
acc3.y=min_y+slope_y*3;(累加3.y=最小_y+斜率_y*3;)
acc3.x=min_z+slope_z*3;(累加3.x=最小_z+斜率_z*3;)
x3=((int)acc3.x)>>scale;(x3=((整数)累加3.x)>>比例;)
y3=((int)acc3.y)>>scale;(y3=((整数)累加3.y)>>比例;)
z3=((int)acc3.z)>>scale;(z3=((整数)累加3.z)>>比例;)
vola_comp3=lookup(x3,y3,z3);(vola_计算3=查找(x3,y3,z3);)
在另一实施方式中,如图51B至图51C的框图5100b至5100c中所展示的,可以使用类似于图51A的示例中所展示的电路系统通过应用逐次逼近技术来执行(并加速)插值。例如,可以执行逐次逼近以将周期减半(例如,与图51A的示例相比)。例如,可以对四元素体积的中点执行第一插值,以判定相交发生在这个中点之上还是之下。基于这个比较的结果,可以在第二周期中对上部或下部线段执行第二插值,以便确定确切的相交点,从而导致将要执行最大两个周期和两个插值,并提供潜在的早期退出机会(例如,在第一循环中不存在命中的情况下),从而导致在完成相应的光线投射过程速度方面的附加效率和增益。
转到图52的简化框图5200,可以提供附加电路系统,其可以接受由图51A的示例的电路系统生成的与特定光线相对应的这三个输出(例如,5160a至5160c)。值5160a至5160b可以被级联以形成6位地址5215,所述地址可以被提供给查找表电路5205。如表5210所示,每个可能的6位组合(由值5160a至5160c建立的)可以与特定细节层次的64个体素(以及相应的条目位)之一相对应。这个相对较小的查找表5205可以用于快速返回64位位掩码5220,所述位掩码与被识别(例如,使用图51的示例电路系统)为与特定光线相交(或包含其一段)的体素相对应。可以将所得的位掩码提供给与逻辑5230,以便与体积数据结构5225中描述同光线相交的体积的条目进行比较。如果与门5230的结果是除了64个零之外的任何值,则或逻辑5235将生成“1”(在5240处)以指示体素包含几何结构和光线段。否则返回“0”以指示未命中。在未命中的情况下,可以撤销针对与体素相对应的任何其余细节层次的所有其他操作。以这种方式,对于每次未命中,可以快速缩小体积内要评估的体素的范围。
如在上面讨论的其他示例中,当利用图51A至图52所示的示例电路系统时,可以执行迭代过程以从最低细节层次开始并且在树上向上(当识到别命中时)向更高细节层次评估体素,直到发现未命中或在叶节点(即,最高细节层次体素)处确立命中为止。例如,在电路的第一次迭代中,进入坐标和离开坐标可以是总体积的坐标,并且体积数据结构条目(被提供给与门5230)可以是体积数据结构的L0条目。如在其他示例中,响应于识别出L0体素中的一个或多个包含光线段和几何结构,操作可以循环回到评估L1的进入坐标和离开坐标,其中体积数据结构5225的相应L1条目(表示L0体素中找到“命中”的子体积)被提供作为(例如,在用于评估L0体素的电路系统(例如,图51A至52)的同一或另一个等效块中的)与逻辑5230的输入,以此类推,直到在最高(或另一目标)细节层次上检查了几何结构与光线相交。这种逻辑可以一次性或在设备内的多个块中实施。例如,除其他示例之外,可以提供多个并行块(例如,类似于图51A至52的示例),例如以便于对多个不同光线(例如,与同体积数据结构(或多个不同的体积数据结构)中描述的几何结构相关联的音频或视频渲染相关联)的并行评估。
如以上所介绍的,可以基于描述环境的体积数据结构来执行光线投射、渲染和其他操作。这些操作还可以用于涉及路径规划、导航、碰撞检测和避免的自动化以及自主或半自主车辆的其他特征的应用中。例如,诸如上面讨论的体积数据结构和功能可以允许无人机或自主车辆在环境内安全地导航。例如,可以提供体积数据结构的描述以备份或用作用于控制运载工具在环境内行驶的其他系统(诸如运载工具的计算机视觉子系统)的地面实况数据。例如,在体积数据结构内提供的多个细节层次可以允许以逐步更高的分辨率(例如,利用示例体积数据结构的稀疏六四元树(SST)格式)快速避开对象。
转到图53的简化框图5300,作为示例,无人机(例如,5315)在从某个位置起飞时可以请求与在当前电池更换时其可以到达的周围半球相对应的SST体积图(体现为体积数据结构库之一)。无人机可能在其中行驶的半球(例如,5360)的体积。例如,体积可以被定义为V=(2/3)πr3,其中,r是在当前电池电量时无人机的范围、或用于与无人机进行通信的信号的范围,以及其他示例。在识别时,这个体积V可以逐步细分为从最初的64位数字开始的43个体素的子体积,所述子体积描述将体积最粗细分为64个体素(43),每个体素由单个位条目表示,其中,“1”意味着相应的子体积在此{x,y,z}位置处包含几何结构,并且“0”意味着体积在此位置处不包含几何结构。使用逐步更高级别的几何结构意味着可以检测到碰撞避免并且更快地避开障碍物,从而允许无人机、运载工具、机器人、机械臂或其他可移动设备比以其他方式可能的更快地移动通过环境。
继续图53的讨论,无人机5315(或其他设备)可以请求(在5310处)描述其在当前电池电量时可以到达的特定体积半球5360内的几何结构的体积数据结构,其中,范围(和相应的体积)由当前无人机电池电量、历史能源使用率、设备重量、有效负载重量和其他因素来确定。在本示例中,所请求体积半球5360可以以无人机起飞时的GPS位置为中心,所述起飞位置可以使用无人机上装载的位于相关联控制器(例如,相关联的智能电话(例如,5325)控制器)中的GPS接收器、或经由数据网络5335(例如,蜂窝数据网络)来确定。在一些实施方式中,体积数据结构的全部或一部分可以存储在无人机5315上,或者可替代地经由网络5335来请求以访问存储在云或其他在线系统5340中的体积数据结构的储存库。例如,包含无人机起飞时的位置的请求5350可以(例如,直接由无人机5315或通过相关联的计算机(例如,5325))传输到储存库系统5345,所述储存库系统可以确定或建立与请求5350中所包括的参数(例如,GPS位置、范围、几何结构等)相对应的体积数据结构。然后,储存库系统5345可以使用类似的网络通信信道返回5355所请求的体积数据结构。
虽然本文讨论的一些示例已经将体积展示为立方体或矩形棱柱,如图53的示例中所展示的,但是由体积数据结构描述的总体积或基础体积可以潜在地是任何几何结构(例如,半球体、立方体、矩形棱柱等)。实际上,在一些实例中,由体积数据结构表示的体积可以是椭圆形并且不连续的。可以确定体积以考虑行驶过程中的可能由于重新选择路线、增加的路线、规避机动、环境力或其他因素而导致的潜在偏差,所述潜在偏差可能增加设备可以在其中行驶的空间的大小和形状(或潜在的行驶范围)的变化。然后可以将任何这种体积细分为与由体积数据结构提供的稀疏树表示内的最低细节层次相对应的多个体素。然后可以将这些最低级别的体素映射到包括在体积数据结构的L0条目中的各个位。在一些情况下,诸如在由体积数据结构描述的具有不规则形状的体积的情况下,可以利用体积数据结构头部或甚至单独的数据结构来绘制第一细节层次的物理子体积到识别这些不同的子体积是否被占据的L0条目(例如,64位)整数中的位的映射。例如,基于管理行驶的法规和法律(例如,与汽车的道路和停车场、空中无人机的管制空域海拔等相对应)或其他考虑因素,可以确定其中要发生行驶的体积以考虑起始位置与结束(目标)位置之间的一般化路径(例如,其中与这个直接路径偏离的体积被认为不太可能用于行驶)、优选路径。这种考虑可能导致不规则的体积,尽管如此其仍然可以使用基于稀疏树的体积数据结构表示来描述。
图54A至54B是简化框图5400a至5400b,展示了能够在环境内自主移动的设备的示例实施方式和特征。虽然这里呈现了无人机(例如,基于空中、水或陆地)的示例,但是应当理解,这些相同的原理和类似功能可以集成在配备有自主或半自主(例如,在可以由人类用户周期性地控制或超控移动的意义上的半自主性)移动或行驶功能的设备中。例如,在图54A的示例中,可以提供自主设备5405,所述自主设备包括一个或多个数据处理设备(例如,5406)和计算机可读存储器设备(例如,5408),所述计算机可读存储器设备可以存储要使用处理器5406来处理的指令和数据。可以提供通信模块5409以允许自主设备5405使用一种或多种网络技术(例如,Wi-Fi、蜂窝宽带、蓝牙等)与外部系统通信。例如,通信模块5409可以实现设备5405与外部控制器或补充设备5405的功能的其他设备之间的通信。例如,外部控制器可以包括本示例中展示的如包括在设备5405本身内的至少一些逻辑。
在一些情况下,除其他示例实施方式之外,外部控制器或系统可以提供用户界面以对设备5405的自动化和其他参数进行编程或配置。通信模块5409可以另外促进设备5405与可通过一个或多个数据网络5435访问的储存库系统(例如,5440)之间的通信,使得自主设备5405可以访问并使用体积数据结构(例如,5445)。除其他示例之外,如在图53的讨论中所指出的,在一些情况下,体积数据结构5445可以另外地或可替代地由与设备5405分开的支持控制器系统访问,并且甚至可以用于将由体积数据结构生成的选定部分或其他数据提供给设备5405。
示例自主设备5405可以另外包括控制器5410,以向液压装置、喷嘴、发动机、电动机或被提供用于驱动设备的移动的其他驱动机构(例如,5412)、以及用于控制设备移动的方向的转向机构(例如,5414)提供信号和/或指令。控制器5410可以与以硬件和/或软件实施的导航或路径规划/执行逻辑5415接口连接,以确定设备5405将使用其驱动机构5412和转向机构5414执行的移动路径指示。在一些实施方式中,还可以提供基于硬件和/或软件的碰撞检测逻辑5420,以检测(基于来自各种传感器(例如,图像传感器5430、接近度传感器、红外、射频、触摸或其他传感器)的输入)由导航逻辑5415提供的路径规划指定的当前移动路线可能导致与影响设备5405的行驶的外部对象(例如,人、运载工具、建筑物、动物、烟雾、云等)或设备5405的路径中的对象的碰撞。例如,由碰撞检测逻辑5420检测到的潜在碰撞可能导致与当前路径的偏差或调整,其中,碰撞检测逻辑5420向导航逻辑5415提供信号或指令以使导航逻辑作为响应而生成对路径规划的修改。
在一些实施方式中,设备5405可以包括计算机视觉5425或其他子系统,用于处理各种传感器(例如,图像传感器5430)的输入以生成可由设备5405的其他子系统使用的数据。例如,计算机视觉子系统5425可以利用由(多个)图像传感器5430生成的图像数据(例如,立体图像数据)来生成设备5405的路径和周围几何结构的实时视图的2D或3D表示。在一些情况下,计算机视觉逻辑5425可以检测取向(例如,空间中的坐标、设备的角度、姿态等)以生成设备周围的3D空间的2D投影和/或生成3D表示(例如,根据本文所描述的基于稀疏树的体积数据结构),以供导航(例如,5415)和/或碰撞检测逻辑5420使用。例如,从储存库5440获得的体积数据结构(例如,5445)可以用作地面实况,以与由计算机视觉子系统5425生成的直接几何结构的2D或3D表示进行比较,并判定(例如,在导航系统5415处)设备是否保持在路线上、或意外障碍物是否呈现潜在的碰撞(例如,使用碰撞检测逻辑5420),以及其他示例用途和功能。
例如,转到图54B,示出了被实施为空中无人机的自主设备5405。无人机5405可以包括多个相机5430a至5430b,以用作立体图像传感器,诸如具有基线b的安装在无人机上并在当前行驶方向定向的立体对。所述基线可以表示立体相机对5430a至5430b的各个中心之间的距离。然后可以将相机5430a至5430b的输出传递到计算机视觉子系统,所述计算机视觉子系统包括立体匹配块5450,所述立体匹配块可以用于计算这两个图像之间的像素差异并产生输出深度图(在5455处)。进一步地,可以提供同步定位和建图(SLAM)块5460以使用由相机5430a至5430b逐步捕获的图像来集成由立体匹配块5450生成的一系列深度图像5455,以建立环境的体积图(在5465处)。所述体积图可以转换为SST体积数据结构表示,或者可以本身用作深度图。比较器逻辑(例如,5475)可以用于对观察到的几何结构的体积表示(由设备的5405计算机视觉子系统(例如,包括元件5430a至5430b、5450、5460等)生成)与在相应的体积数据结构中描述的参考几何结构(在体积5470中)的表示进行比较。在一些情况下,这可能涉及将体积数据结构(例如,通过渲染或其他2D到3D投影操作)转换为由计算机视觉系统生成的深度图或2D图像。在一些情况下,由比较器逻辑5475执行的比较可能涉及逐个体素的比较,以产生由比较器5475检测到(在5480处)的体素对应关系(和非对应关系)的输出图。
作为示例,参考体积图可以从储存库系统下载或者从存储在无人机上的较大比例图中分离,以用作无人机上产生观察到的体积图5465的计算机视觉子系统的地面实况。对观察到的几何结构与参考几何结构的这种比较(例如,在无人机或支持计算系统处)允许无人机5405快速辨识与地面实况的偏差以忽略所述偏差(例如,如果地面实况比计算机视觉系统的即时结果更可信)或修改路径规划以避开在观察者几何结构中识别出的新几何结构。在将体积数据结构对参考几何结构的描述作为最终地面实况受到信任的情况下,可以在计算机视觉子系统出现技术故障、错误、或以其他方式无法产生“正确的”体积图的情况下(诸如,在烟雾、雾、雪、雨、鸟、闪电等中断使用成像传感器5430a至5430b准确生成体积图的情况下)依赖于相应的体积图来安全且自主地飞行,以及其他示例用途和优点。
转到图55的示例,示出了简化框图5500,其展示了使用与示例自主设备5510的视觉流水线相关联的逻辑来比较体积图表示。例如,在图55的示例中,视觉流水线对从存储器获得5515的场景5525的体积表示进行比较,所述场景诸如来自基于云的存储装置5505、运载工具5510的本地车载存储装置、或者支持运载工具5510的操作的另一系统,以及其他示例。运载工具5510可以利用运载工具5510上存在的功能、例如使用车载计算机视觉子系统、LIDAR、雷达、超声波或其他技术来创建(在5520处)其自己的场景体积表示5530。然后可以利用比较逻辑来对由运载工具逻辑开发的表示5530与从数据存储装置获得的参考表示5525(例如,根据体积数据结构生成)进行比较。例如,可以直接(例如,逐个体素地)比较这两个体积表示,其中,运载工具逻辑根据体积数据结构格式生成相应的表示。
可替代地,在一些实施方式中,可以将参考体积数据结构转换(例如,通过渲染操作(诸如本文所述))为参考场景5535的2D表示5560,以便与针对感知场景5530(由运载工具逻辑)生成的类似2D表示5565进行比较。例如,可以利用在生成观察到的体积图时运载工具5510在场景/体积中的位置知识、以及(在观察到所述场景时)运载工具姿态的知识来重建参考体积图的2D表示。例如,为了由体积数据结构准确地生成与由运载工具的图像传感器生成的2D图像相当的2D图像,将执行对所述体积数据结构的准确投影以正确地表示由图像传感器(例如,(多个)相机)生成的视图。作为示例,可以识别相机姿态并执行3D矩阵乘法以重建如从相机的位置和姿态看到的3D体积数据结构描述应该是什么样的。
作为说明性示例,可以在观察到的体积图5530中捕获场景几何结构的特定部分(例如,5535、5540)。可以识别这个部分5535、5540(例如,根据运载工具位置和姿态信息(例如,在观察到的体积数据中标记的))以驱动2D投影的生成或对参考体积图的渲染,从而反映如由运载工具的视觉系统观察到的同一部分(和观察角度)。在这种情况下,可以直接(例如,使用机器学习或启发式分析或其他技术逐个像素地)比较参考5525与感知场景5530的2D表示5560、5565两者,以识别并标记所比较场景5570中任何不对应的几何结构(例如,5575)。作为示例,如果在感知场景309中出现一些意外的图像或几何结构(例如,5545)(即,与根据由场景5525建模的地面实况所预期的不同),诸如一团烟雾或遮挡对象或鸟,这将在场景5570中被检测并标记(在5575处)为非对应关系。可替代地,如果2D图像(例如,5560、5565)是来自运载工具5510的计算机视觉流水线的深度图或常规输入图像,则可以将这个图像与根据体积数据结构生成的参考图像5525进行比较,并且用于以前述方式计算与参考2D图像5560的差异。在一些情况下,此后一种技术可以具有产生较低等待时间的益处,并且允许运载工具5510以更高的速度前进而不与场景中的任何事物碰撞,以及其他示例性特征和优点。
转到图56,示出了简化框图5600,其展示了示例SST体积数据结构格式的表示。例如,框图5600展示了可以如何在存储器中组织这种体积数据结构。如在本文讨论的其他示例中,体积数据结构可以由条目组成,其中,每个条目包括64位基本整数以表示对相应体积进行细分的元素或体素。例如,可以提供一位每体素表示以表示体积内(和体素子体积)的几何结构,其中,将“1”插入相应的位中以指示在相应的体素内存在几何结构。可以进一步组织体积数据结构以便以多个细节层次表示体积。例如,可以首先以最低分辨率水平或细节层次(L0)将体积细分为(例如,64个)体素的集合(如5605处所示),其中,相应的条目5620提供64位以针对每个L0体素指示是否存在几何结构。可以将L0体素细分为43个子体积,以便以下一(更高)细节层次表示L1体素(例如,5610)。还可以提供一个或多个条目(例如,5625)以指示(以相应的“1”或“0”)L1体素是否被几何结构占据。在一些实施方式中,体积数据结构可以稀疏地表示几何结构,但是省略与较低级别(Ln-1)体素中被指示(在其相应条目中)为空白的细分相对应的较高级别(Ln)条目。因此,对于下一细节层次,可以将存在几何结构的L1体素(例如,5610)细分为下一细节层次的具有相应条目5630的体素子体积(例如,如5615处所展示的),直到达到基于树的体积数据结构内的最大或目标细节层次(或分辨率水平)。
在一些实施方式中,整个基于树的体积模型可以作为单个数据结构5635被连续地存储在存储器中,其中,子部分5640、5645、5650等填充有处于每个所支持细节层次的体积数据结构条目(例如,相应的5605、5610、5615等)。在其他实施方式中,将体积数据结构的不同体积部分(例如,5640、5645、5650)中的一个或多个单独地存储在存储器中而不是作为单个连续数据结构存储在存储器中可能是合适的。例如,5640、5645、5650的基地址可以被配置成允许非连续存储,这在一些实例中可能是有利的。例如,在具有很少车载存储器的存储器受限系统中,描述场景的最低分辨率视图的条目(例如,5640、5645)可以存储在车载存储器中(例如,运载工具的处理器或片上系统(SoC)中)),而较高分辨率的条目(例如,5650)(其可能更少被使用和访问(例如,用于在路径的某些段中的细粒度导航(例如,在无人机着陆或在沿着路径的狭窄空间之间导航期间)))可以片外地存储在DRAM中,以及其他示例。除了在非常高分辨率水平有用(例如,用于导航非常混乱的场景)的零星路径段中之外,这种实施方式可以将体积数据结构的最频繁使用的部分(例如,较低分辨率描述)有利地保持在片上,使得它们可以被高速缓存以便快速访问并因此进行快速碰撞检测,从而消除对片外存储器的访问,以及其他示例。
如上所述,在一些实施方式中,使用运载工具上的逻辑导出的体积图可以根据基于SST的体积映射格式,所述体积映射格式与用于参考体积图的格式(例如,可从储存库检索并表示场景的地面实况)相当。例如,如图57的简化框图5700所示,如前所述,可以提供这两个体积数据结构5705、5710,一个(5705)与参考体积几何结构相对应,而另一个(5710)表示如使用运载工具的图像传感器观察到的体积几何结构。可以直接通过针对位到位对应关系(其映射到体积图的逐体素比较)直接比较64位整数来比较这两个体积数据结构5705、5710。对于高速碰撞避免,可以针对最低分辨率几何结构首先通过比较低级别条目(例如,L0条目5715、5720)来执行这个过程,其中,在条目5715、5720的位之间的任何所检测差异(例如,通过对条目5715、5720的64位整数进行异或运算)都被标记。如果不存在差异,则比较可以终止,或者可替代地前进以比较下一细节层次(例如,L1)的条目块(例如,5725、5730)中的64位整数,以将参考几何结构与观察到的处于更高分辨率水平的几何结构进行比较。同样,基于比较的结果,可以判定是终止比较还是可替代地前进到通过比较下一级别(例如,L2)条目(例如,5735、5740)来进行下一最高分辨率水平的分析,以此类推,直到达到最大或目标细节层次。通过在较低分辨率水平下提前终止,可以更快地执行碰撞避免,从而允许无人机/运载工具在场景不是非常混乱的情况下更快地前进通过场景(即,并非减慢或停止运载工具以允许对更高细节层次条目(例如,5725与5730或5735与5740)进行比较的时间)得以执行
图58是简化框图5800,示出了配备有执行参考几何结构5805与观察到的几何结构5810之间的在多个分辨率水平上的比较的功能的系统的示例实施方式,在本示例中,这两个几何结构保持在共享存储器5815中。在这个示例系统中,64位条目整数之间的所有比较可以在基于树的体积数据结构5805和5810中的特定分辨率水平上彼此独立,这些比较可以跨多个处理器(例如,5820、5825、5830等)并行化,所述多个处理器可以经由总线、网络或用于促进共享对存储器5815的访问的其他连接(例如,5835)而各自连接到共享存储器5815。如上所述,工作负荷可以在参考体积图数据5805和观察到的体积图数据5810中的特定分辨率水平上跨多个处理器(例如,5820、5825、5830)均匀地分布。可替代地,第一处理器5820可以与第二处理器(例如,5825)在下一最高级别的几何结构的比较处理并行地、进一步与由另一处理器(例如,5830)在第三细节层次的比较处理并行地、等等来处理最低级别的几何结构的比较,以及其他示例方案和实施方式(其中一些可能受到系统的特定能力(例如,总线技术、处理器核的数量等)的约束)。
图59是展示了处理器(例如,图58的5820、5825、5830)的示例实施方式的简化框图5900,所述处理器可以用于结合为运载工具提供的路径规划和碰撞避免功能来执行渲染操作和比较操作(以及其他操作)。例如,这种处理器(例如,5905)可以被实施为向量处理器,将从指令存储器5910向所述向量处理器馈送指令流。从指令存储器5910读取的指令流可以由指令解码器5915进行解码,并且经解码的信号可以分配给多个功能单元。在一个示例中,向量处理器5905可以包含多个功能单元,诸如能够对至少64位且优选地更宽的数据字进行操作的宽向量单元5920、具有能够对与向量单元5920相同宽度的数据字进行操作的算术和逻辑缩减功能的标量单元5925、能够对与5920相同宽度的向量进行操作的比较移动单元(CMU)5930、以及至少一个加载存储单元(LSU)5935a至5935b。在这个特定示例中,两个加载存储单元5935a至5935b被提供并与共享数据存储器通信以允许在单个时钟周期内加载其宽度最高达由功能单元(例如,5920、5925、5930等)所使用的向量字长的两个数据字。共享存储器5960可以经由多个向量处理器各自的加载存储单元被所述多个向量处理器访问,并且共享存储器可以用于包含分别描述特定体积的参考几何结构和观察到的几何结构的基于稀疏体素树(SVT)的体积数据结构(例如,5940、5945)。在本示例中,这两个加载存储端口(例如,5935a至5935b)可以用于将参考体积数据结构5940和观察到的体积数据结构5945读取到向量寄存器堆5950中,所述向量寄存器堆经由多个读写端口(例如,5955)来馈送向量处理器的功能(例如,5920、5925、5930等),所述多个读写端口足以允许所有功能单元在单个周期内对从寄存器堆5950读取的数据进行并行执行,并进一步允许每个时钟周期以处理器时钟速率将数据写回到同一寄存器堆中。在一些实例中,CMU 5930可以在单个时钟周期内对与功能单元(例如,5920、5925、5930等)相同向量长度的多个字进行比较,并基于所述比较生成被馈送到断言执行单元5965的状态码,所述断言执行单元控制受CMU5960比较结果影响的后续指令的执行。除其他示例组件和功能之外,处理器5905还可以包含分支重复单元(BRU)5970和整数单元5975,以支持其他功能单元(例如,5920、5925、5930等)的功能。
可以采用其他处理器架构和设计来提供功能并执行诸如本文所讨论的那些操作。例如,可以根据在名称为“Apparatus,Systems,and Methods for ProvidingComputational Imaging Pipeline(用于提供计算成像流水线的装置、系统和方法)”的美国专利申请14/082,396以及名称为“Apparatus,Systems,and Methods for ProvidingConfigurable Computational Imaging Pipeline(用于提供可配置计算成像流水线的装置、系统和方法)”的美国专利申请14/082,645中讨论的至少一些示例和原理来提供处理器,这两个美国专利申请都通过引用以其全文结合在此。
图60展示了根据对以多个上升细节层次描述与城市景观相对应的体积的示例体积数据结构的渲染而生成的示例图像。例如,图像6005以最低细节(并且因此,图像分辨率)层次展示了如在体积数据结构中所描述的城市景观的视图。图像6005中所示的阴影几何结构可以与被体积数据结构指示为至少部分地被几何结构占据的体素相对应。这些被占据的体素中的每一个可以在体积数据结构中被进一步细分和描述,以便以这下一更高细节层次描述体素体积,如由根据以这第二细节层次描述几何结构的体积数据结构条目而生成的图像6010所反映的。进一步地,如图像6015所示,进行到下一更高细节层次可以指数地增加所得图像6015的分辨率(与图像6005、6010相比),因为几何结构使用643个体素来表示,而不是分别用于生成图像6005和6010的43和163个体素。
图61A至图61B是流程图6100a至6100b,展示了涉及如本文所讨论的体积数据结构的示例技术。例如,在图61A中,可以生成6105与特定环境的目前观察到的视图相对应的图像数据。所述视图可以捕获由特定环境内的坐标限定的体积内的几何结构。可以获得6110描述体积(例如,基于之前对所述体积的扫描或测量(例如,使用立体图像传感器、LIDAR、雷达等))的体积数据结构。所述体积数据结构可以是基于稀疏表的结构,具有与上面讨论的示例类似的特征和格式。所述体积数据结构可以以多个细节层次对体积进行建模。所述体积数据结构内的条目可以识别几何结构是包括在体积的特定子体积还是体素中。可以识别出6115这些条目中与几何结构的视图相对应的特定条目。在一些情况下,这个特定条目可以是以最低细节层次或分辨率水平描述体素的条目,以对体积内的几何结构进行快速且粗略的评估。可以在图像数据与体积数据结构之间进行6120比较。在一些情况下,图像数据可以实施为或者转换为体积数据结构格式,以允许这个体积数据结构的条目直接与所获得的体积数据结构进行比较。除其他示例实施方式之外,在其他实例中,可以将所获得的体积数据结构转换为2D表示以允许与2D图像数据进行比较。将图像数据中描述的几何结构的视图与所获得的体积数据结构中描述的几何结构的视图进行比较可以用于识别与环境内的预期几何结构的偏差。在一些情况下,图像数据可以用于生成行驶路径并且管理设备(例如,无人机、汽车、机器人等)沿着这个路径的移动(例如,结合负责生成并处理图像数据的计算机视觉系统)。除其他示例用途之外,在这样的实例中,视觉系统看到的内容与(例如,如体积数据结构中所描述的)预期内容之间的偏差可能影响设备沿路径的驱动方式。
转到图61B,体积数据可以用作用于确定设备的初始行驶路径的基础。例如,可以针对期望的行驶路径确定起始位置(在6125处)和结束位置(在6130处)。可以确定6135体积,其与这个行驶路径相对应并且表示设备当从起始位置移动到结束位置时(这可能涉及围绕已知和意外的障碍物和其他偏差进行导航)可能潜在地在其中行驶的体积的大小和形状。可以选择6140体积数据结构(例如,通过请求与体积相对应的体积数据结构、或者基于与行驶路径相关联的测量结果和特性(例如,功率约束(例如,电池续航里程)、规章约束等)来建立体积数据结构)。体积数据结构可以以多个细节层次(例如,根据SST数据格式)描述体积。体积数据结构可以用于确定行驶路径的至少一部分(例如,基于识别到相应设备(例如,机器人、无人机等)可以穿过的几何结构中的路径)。
虽然本文所描述和展示的一些系统和解决方案已经被描述为包含多个元件或与多个元件相关联,但是并非所有明确展示或描述的元件都可以用于本公开的每个替代实施方式中。另外,本文所描述的一个或多个元件可以位于系统外部,而在其他实例中,某些元件可以包括在其他描述的元件以及未在所展示实施方式中描述的其他元件的一个或多个内或作为其一部分。进一步地,某些元件可以与其他组件组合以及用于除本文所描述的那些目的之外的替代或附加目的。
进一步地,应当理解,以上呈现的示例是仅出于说明某些原理和特征的目的而提供的非限制性示例,并且不一定限制或约束本文所描述的概念的潜在实施例。例如,可以利用本文所描述的特征和组件的各种组合、包括通过本文所描述的组件的各种实施方式实现的组合来实现各种不同的实施例。根据本说明书的内容应该理解其他实施方式、特征和细节。
图62至图67是根据本文公开的实施例可以使用的示例性计算机架构的框图。实际上,本文所描述的系统的计算设备、处理器、以及其他逻辑和电路系统可以并入功能以及用于实施这种功能的支持软件和/或硬件电路系统的全部或一部分。进一步地,除了这里示出的示例之外,还可以使用本领域中已知的用于处理器和计算系统的其他计算机架构设计。通常,用于本文公开的实施例的合适的计算机架构可以包括但不限于图62至图67中展示的配置。
图62展示了通过到对应网关的链路耦合的对应物联网(IoT)网络的示例域拓扑。物联网(IoT)是一种概念,在物联网中,大量的计算设备彼此互连并且互连至互联网以便在非常低的水平下提供功能和数据获取。因此,如本文所使用的,IoT设备可以包括半自主设备,其执行诸如感测或控制等功能,与其他IoT设备和更宽的网络(诸如互联网)通信。
通常,IoT设备在内存、大小或功能方面受到限制,从而允许针对与较少数量的较大型设备类似的成本来部署更大的数量。然而,IoT设备可以是智能电话、膝上型计算机、平板计算机、PC、或其他更大型设备。进一步地,IoT设备可以是虚拟设备,诸如智能电话或其他计算设备上的应用。IoT设备可以包括IoT网关,所述网关用于将IoT设备耦合至其他IoT设备和云应用,以用于数据存储、过程控制等。
IoT设备的网络可以包括商业和家庭自动化设备,诸如配水系统、配电系统、流水线控制系统、工厂控制系统、灯开关、恒温器、锁、相机、警报器、运动传感器等。可以通过远程计算机、服务器和其他系统来访问IoT设备,例如,以控制系统或访问数据。
互联网和类似网络的未来发展可能涉及到非常大量的IoT设备。因此,在本文所讨论的技术的上下文中,针对此类未来组网的大量创新将解决对以下方面的需要:所有这些层不受阻碍地增长;发现并制造可访问连接资源;以及支持隐藏和划分连接资源的能力。可以使用任何数量的网络协议和通信标准,其中,每个协议和标准被设计用于解决特定目标。进一步地,协议是支持人类可访问服务的结构的一部分,所述服务无论位置、时间或空间如何都运行。所述创新包括服务交付和相关联的基础设施,诸如如硬件和软件;安全增强;以及基于在服务级别和服务交付协议中规定的服务质量(QoS)条款提供服务。如将理解的,对IoT设备和网络(诸如在图62和图63中介绍的那些)的使用在包括有线技术和无线技术的组合的异构连接网络中提出了大量的新挑战。
图62具体提供了域拓扑的简化附图,所述域拓扑可以用于包括IoT设备6204的多个物联网(IoT)网络,其中,IoT网络6256、6258、6260、6262通过骨干链路6202耦合至对应的网关6254。例如,多个IoT设备6204可以与网关6254进行通信,并且可以通过网关6254彼此通信。为了简化附图,并非每个IoT设备6204或通信链路(例如,链路6216、6222、6228或6232)都被标记。骨干链路6202可以包括任何数量的有线或无线技术(包括光网络),并且可以是局域网(LAN)、广域网(WAN)或互联网的一部分。另外,这种通信链路促进IoT设备6204和网关6254两者之间的光学信号路径,包括使用促进各设备互连的复用/解复用组件。
网络拓扑可以包括任何数量类型的IoT网络,诸如使用蓝牙低功耗(BLE)链路6222与网络6256一起提供的网状网络。可能存在的其他类型的IoT网络包括:用于通过IEEE802.11链路6228与IoT设备6204进行通信的无线局域网(WLAN)网络6258、用于通过LTE/LTE-A(4G)或5G蜂窝网络与IoT设备6204进行通信的蜂窝网络6260、以及低功耗广域(LPWA)网络6262(例如,与由LoRa联盟颁布的LoRaWan规范兼容的LPWA网络、或与由互联网工程任务组(IETF)颁布的规范兼容的基于IPv6的低功耗广域网络(LPWAN)网络)。进一步地,对应的IoT网络可以使用任何数量的通信链路与外部网络提供商(例如,第2级或第3级提供商)进行通信,所述通信链路诸如LTE蜂窝链路、LPWA链路、或基于IEEE 802.15.4标准(比如)的链路。对应的IoT网络还可以使用各种网络和互联网应用协议来操作,诸如受限应用协议(CoAP)。对应的IoT网络还可以与协调器设备集成,所述协调器设备提供形成链接设备和网络的簇树的链路链。
这些IoT网络中的每一种都可以为新技术特征提供机会,诸如本文中所描述的那些。经改进的技术和网络可以实现设备和网络的指数增长,包括将IoT网络用作雾设备或系统。随着这种经改进技术的使用的增长,可以开发IoT网络以用于自我管理、功能演进和协作,而无需直接的人为干预。经改进的技术甚至可以使IoT网络能够在没有集中控制系统的情况下运行。因此,本文中所描述的改进技术可以用于自动化和增强远远超出当前实施方式的网络管理和操作功能。
在示例中,诸如通过骨干链路6202在IoT设备6204之间的通信可以由用于认证、授权和计费(AAA)的分散式系统保护。在分散式AAA系统中,可以跨互连的异构网络基础设施来实施分布式支付、信贷、审计、授权和认证系统。这允许系统和网络走向自主操作。在这些类型的自主操作中,机器甚至可以签订人力资源合同并与其他机器网络协商合作伙伴关系。这可以允许实现共同目标以及与概述的计划服务级别协议平衡的服务交付,并且实现提供计量、测量、可追溯性和可跟踪性的解决方案。创建新的供应链结构和方法可以实现创建大量服务、挖掘其价值并在没有任何人为参与的情况下瓦解。
通过将诸如声、光、电子交通、面部和模式识别、气味、振动等传感技术集成到IoT设备中的自主组织中,可以进一步增强这种IoT网络。感知系统的集成可以允许服务交付的系统性且自主的通信和协调,而不是基于合约性服务目标、编制和服务质量(QoS)的资源的云集和融合。基于网络的资源处理的单独示例中的一些包括以下内容。
例如,网状网络6256可以由执行内联数据到信息变换的系统来增强。例如,包括多链路网络的处理资源的自形成链可以以高效的方式分配原始数据到信息的变换、以及区分资产和资源以及每个的相关联管理的能力。此外,可以插入基础设施和基于资源的信任和服务索引的适当组件,以改善数据完整性、质量、保障并递送数据置信度度量。
例如,WLAN网络6258可以使用执行标准转换的系统来提供多标准连接,从而使得IoT设备6204能够使用不同协议进行通信。进一步的系统可以在包括可见互联网资源和隐藏互联网资源的多标准基础设施之间提供无缝互连。
例如,蜂窝网络6260中的通信可以通过卸载数据、将通信扩展到更远程的设备、或这两者的系统来增强。LPWA网络6262可以包括执行到IP的互连非互联网协议(IP)、寻址和路由的系统。进一步地,IoT设备6204中的每一个都可以包括用于与所述设备进行广域通信的适当收发机。进一步地,每个IoT设备6204可以包括用于使用附加协议和频率进行通信的其他收发机。关于图64和图65中描绘的IoT处理设备的通信环境和硬件来进一步讨论这一点。
最后,可以配备IoT设备集群以与其他IoT设备以及云网络进行通信。这可以允许IoT设备在设备之间形成自组织(ad-hoc)网络,从而允许它们用作单个设备,所述单个设备可被称为雾设备。以下关于图63来进一步讨论这种配置。
图63展示了与作为云计算网络边缘处的雾设备操作的网状网络的IoT设备(设备6302)进行通信的云计算网络。网状网络的IoT设备可以被称为雾6320,其在云6300的边缘处操作。为了简化附图,并非每个IoT设备6302都被标记。
雾6320可以被认为是大规模互连网络,在所述网络中,多个IoT设备6302例如通过无线电链路6322彼此通信。作为示例,可以使用由开放互联基金会TM(OCF)发布的互连规范来促进这种互连网络。这个标准允许设备发现彼此并建立互连通信。还可以使用其他互连协议,包括例如优化链路状态路由(OLSR)协议、移动自组织组网最佳方法(B.A.T.M.A.N.)路由协议、或OMA轻量级M2M(LWM2M)协议等。
在此示例中示出了三种类型的IoT设备6302,即网关6304、数据聚合器6326和传感器6328,但是可以使用IoT设备6302和功能的任何组合。网关6304可以是提供云6300与雾6320之间的通信的边缘设备,并且还可以为从传感器6328获得的数据(诸如运动数据、流数据、温度数据等)提供后端处理功能。数据聚合器6326可以从任何数量的传感器6328收集数据,并且执行后端处理功能以进行分析。可以通过网关6304沿着云6300传递结果、原始数据或两者。传感器6328可以是例如既能收集数据又能处理数据的全IoT设备6302。在一些情况下,传感器6328可能在例如收集数据并允许数据聚合器6326或网关6304处理所述数据的功能上更受限制。
来自任何IoT设备6302的通信可以沿着任何IoT设备6302之间的方便路径(例如,最方便的路径)被传递以到达网关6304。在这些网络中,许多互连提供了大量冗余,即使丢失了许多IoT设备6302,也允许维持通信。进一步地,网状网络的使用可以允许使用功率非常低或者位于距基础设施一定距离处的IoT设备6302,因为连接至另一IoT设备6302的范围可能远小于连接至网关6304的范围。
从这些IoT设备6302提供的雾6320可以被呈现给云6300中的设备,诸如服务器6306,作为位于云6300的边缘处的单个设备(例如雾设备)。在此示例中,来自雾设备的警报可以被发送而不会被识别为是来自雾6320内的特定IoT设备6302。以这种方式,雾6320可以被认为是分布式平台,所述分布式平台提供计算和存储资源以执行处理或数据密集型任务,诸如数据分析、数据聚合和机器学习等。
在一些示例中,可以使用命令式编程风格来配置IoT设备6302,例如,其中每个IoT设备6302具有特定功能和通信伙伴。然而,形成雾设备的IoT设备6302可以以声明性编程风格来配置,从而允许IoT设备6302重新配置其操作和通信,诸如响应于条件、查询和设备故障来确定所需的资源。作为示例,来自位于服务器6306处的用户关于由IoT设备6302监测的设备子集的操作的查询可以使得雾6320设备选择用于回答查询所需的IoT设备6302,诸如特定传感器6328。然后,在由雾6320设备将来自这些传感器6328的数据发送至服务器6306以回答查询之前,可以通过传感器6328、数据聚合器6326或网关6304的任何组合对所述数据进行聚合和分析。在此示例中,雾6320中的IoT设备6302可以基于查询来选择所使用的传感器6328,诸如添加来自流量传感器或温度传感器的数据。进一步地,如果IoT设备6302中的一些不可操作,则雾6320设备中的其他IoT设备6302可以提供类似数据(如果可用的话)。
在其他示例中,根据示例实施例,上述操作和功能可以由采用电子处理系统的示例形式的IoT设备机器来实施,在所述电子处理系统可以执行一组或一系列指令以使所述电子处理系统执行本文所讨论的方法论中的任一种方法。所述机器可以是IoT设备或IoT网关,包括由个人计算机(PC)、平板PC、个人数字助理(PDA)、移动电话或智能电话的各方面实施的机器、或者能够执行指定所述机器采取动作的指令(顺序的或以其他方式)的任何机器。进一步地,虽然在以上示例中可能仅描绘和参考了单个机器,但是这样的机器还应当被视为包括机器的任何集合,所述机器独立地或联合地执行一组(或多组)指令以便执行本文所讨论的方法中的任何一种或多种方法。进一步地,这些以及与基于处理器的系统相似的示例应当被视为包括一个或多个机器的任何集合,所述一个或多个机器被处理器(例如,计算机)控制或操作以独立地或联合地执行指令从而执行本文所讨论的方法论中的任何一种或多种方法。进一步地,这些以及与基于处理器的系统相似的示例应当被视为包括一个或多个机器的任何集合,所述一个或多个机器被处理器(例如,计算机)控制或操作以独立地或联合地执行指令从而执行本文所讨论的方法论中的任何一种或多种方法。在一些实施方式中,一个或多个多重设备可以协同操作以实施功能并执行本文所描述的任务。在一些情况下,一个或多个主机设备可以供应数据、提供指令、聚合结果、或以其他方式促进由多重设备提供的联合操作和功能。虽然当由单个设备实施时,功能可以被认为是设备本地的功能,但是在多重设备作为单个机器进行操作的实施方式中,功能可以统一被认为是设备本地的,并且这个设备集合可以提供或消耗由其他远程机器(实施为单个设备或设备集合)提供的结果,以及其他示例实施方式。
例如,图64展示了与多个物联网(IoT)设备进行通信的云计算网络或云6400的图。云6400可以表示互联网,或者可以是局域网(LAN)、或广域网(WAN),诸如公司的专有网络。IoT设备可以包括以各种组合分组的任何数量的不同类型的设备。例如,交通控制组6406可以包括沿着城市街道的IoT设备。这些IoT设备可以包括交通信号灯、交通流量监测器、相机、天气传感器等。交通控制组6406或其他子组可以通过有线或无线链路6408(诸如LPWA链路、光学链路等)与云6400通信。进一步地,有线或无线子网络6412可以允许IoT设备彼此通信,诸如通过局域网、无线局域网等。IoT设备可以使用诸如网关6410或6428等另一设备来与诸如云6400等远程位置进行通信;IoT设备还可以使用一个或多个服务器6430来促进与云6400或网关6410的通信。例如,所述一个或多个服务器6430可以作为中间网络节点进行操作,以支持局域网当中的本地边缘云或雾实施。进一步地,所描绘的网关6428可以在云到网关到多边缘设备配置中进行操作,诸如各种IoT设备6414、6420、6424被约束或动态地分配和使用云6400中的资源。
IoT设备的其他示例分组可以包括远程气象站6414、本地信息终端6416、警报系统6418、自动柜员机6420、警报面板6422、或移动车辆,诸如应急车辆6424或其他车辆6426等。这些IoT设备中的每一个都可以与其他IoT设备、与服务器6404、与另一个IoT雾设备或系统(未示出,但在图63中进行描绘)、或其中的组合进行通信。IoT设备组可以部署在各种住宅、商业和工业背景中(包括私人环境或公共环境两者中)。
如从图64中可以看出,大量IoT设备可以通过云6400进行通信。这可以允许不同的IoT设备自主地向其他设备请求或提供信息。例如,IoT设备组(例如,交通控制组6406)可以从远程气象站组6414请求当前天气预报,所述远程气象站组可以在没有人为干预的情况下提供预测。进一步地,可以由自动柜员机6420向应急车辆6424警告正在发生盗窃。当应急车辆6424朝向自动柜员机6420前进时,其可以访问交通控制组6406以请求准许到达所述位置,例如,通过使灯变为红色以在交叉路口阻止交叉车流足够的时间从而使应急车辆6424无阻碍地进入交叉路口。
诸如远程气象站6414或交通控制组6406等IoT设备集群可以被配备成与其他IoT设备以及与云6400进行通信。这可以允许IoT设备在设备之间形成自组织网络,从而允许它们用作单个设备,所述单个设备可被称为雾设备或系统(例如,如上文关于图63所描述的)。
图65是可以存在于IoT设备6550中以用于实施本文描述的技术的组件的示例的框图。IoT设备6550可以包括示例中示出的或在以上公开中引用的组件的任何组合。这些组件可以被实施为IC、其多个部分、分立电子设备、或在IoT设备6550中适配的其他模块、逻辑、硬件、软件、固件、或其组合,或者作为以其他方式并入较大系统的机箱内的组件。另外,图65的框图旨在描绘IoT设备6550的组件的高级视图。然而,可以省略所示组件中的一些组件、可以存在附加的组件、并且在其他实施方式中可以出现所示组件的不同安排。
IoT设备6550可以包括处理器6552,所述处理器可以是微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器或其他已知的处理元件。处理器6552可以是芯片上系统(SoC)的一部分,其中处理器6552和其他组件形成为单个集成电路或单个封装体,诸如来自Intel的EdisonTM或GalileoTMSoC板。作为示例,处理器6552可以包括基于架构核心TM的处理器,诸如QuarkTM、AtomTM、i3、、i5、i7或MCU级处理器,或者可从加利福尼亚州圣克拉拉市的公司获得的另一此类处理器。然而,可以使用任何数量的其他处理器,诸如可从加利福尼亚州森尼维耳市的超威半导体公司(Advanced MicroDevices,Inc.,AMD)获得的、来自加利福尼亚州森尼维耳市的MIPS科技公司的基于MIPS的设计、由ARM控股有限公司或其客户或其许可证持有人或采用者许可的基于ARM的设计。处理器可以包括诸如来自公司的A5-A10处理器,来自科技公司的SnapdragonTM处理器、或来自德州仪器公司的OMAPTM处理器之类的单元。
处理器6552可以通过互连6556(例如,总线)与系统存储器6554通信。可以使用任何数量的存储器设备来提供给定量的系统内存。作为示例,存储器可以是符合电子器件工程联合委员会(JEDEC)设计(诸如DDR或移动DDR标准(例如,LPDDR、LPDDR2、LPDDR3或LPDDR4))的随机存取存储器(RAM)。在各实施方式中,各个存储器设备可以是任何数量的不同封装体类型,诸如单管芯封装体(SDP)、双管芯封装体(DDP)或四管芯封装体(Q17P)。在一些示例中,这些设备可以直接焊接到母板上以提供较低轮廓的解决方案,而在其他示例中,这些设备被配置为一个或多个存储器模块,这些存储器模块进而通过给定的连接器耦合到母板。可以使用任何数量的其他存储器实施方式,诸如其他类型的存储器模块,例如,不同种类的双列直插式存储器模块(DIMM),包括但不限于microDIMM或MiniDIMM。
为了提供对诸如数据、应用、操作系统等信息的持久存储,存储装置6558也可以经由互连6556耦合至处理器6552。在示例中,存储装置6558可以经由固态盘驱动器(SSDD)来实施。可用于存储装置6558的其他设备包括闪存卡(诸如SD卡、微型SD卡、xD图片卡等)、以及USB闪存驱动器。在低功率实施方式中,存储装置6558可以是管芯上存储器或与处理器6552相关联的寄存器。然而,在一些示例中,存储装置6558可以使用微型硬盘驱动器(HDD)来实施。进一步地,除了所描述的技术之外或者代替所述技术,任何数量的新技术可以用于存储装置6558,诸如阻变存储器、相变存储器、全息存储器或化学存储器等。
这些组件可以通过互连6556进行通信。互连6556可以包括任何数量的技术,包括工业标准架构(ISA)、扩展ISA(EISA)、外围组件互连(PCI)、外围组件互连扩展(PCIx)、PCIExpress(PCIe)、或任何数量的其他技术。互连6556可以是例如在基于SoC的系统中使用的专有总线。可以包括其他总线系统,诸如I2C接口、SPI接口、点对点型接口、以及电源总线等。
互连6556可以将处理器6552耦合至网状收发机6562以用于与其他网状设备6564通信。网状收发机6562可以使用任何数量的频率和协议,诸如符合IEEE 802.15.4标准的2.4千兆赫(GHz)传输,使用如由特别兴趣小组定义的低功耗(BLE)标准或标准等。为特定无线通信协议配置的任何数量的无线电可以用于与网状设备6564的连接。例如,WLAN单元可以用于根据电气和电子工程师协会(IEEE)802.11标准来实施Wi-FiTM通信。此外,经由WWAN单元可以发生(例如,根据蜂窝或其他无线广域协议的)无线广域通信。
网状收发机6562可以使用多个标准或无线电进行通信以用于不同范围的通信。例如,IoT设备6550可以使用基于BLE的本地收发机或另一低功率无线电与接近设备(例如,在大约10米内)进行通信以节省功率。可以通过ZigBee或其他中间功率无线电到达更远的网状设备6564,例如,在大约50米内。这两种通信技术可以以不同的功率水平在单个无线电上发生,或者可以在单独的收发机(例如,使用BLE的本地收发机和使用ZigBee的单独网状收发机)上发生。
可以包括无线网络收发机6566以便经由局域网协议或广域网协议与云6500中的设备或服务进行通信。无线网络收发机6566可以是遵循IEEE 802.15.4或IEEE 802.15.4g标准等的LPWA收发机。IoT设备6550可以使用由Semtech和LoRa联盟开发的LoRaWANTM(长距离广域网)在广泛区域上进行通信。本文中所描述的技术不限于这些技术,而是可以与实施长距离低带宽通信的任何数量的其他云收发机一起使用,诸如Sigfox及其他技术。进一步地,可以使用IEEE 802.15.4e规范中描述的其他通信技术,诸如时隙信道跳变。
除了针对网状收发机6562和无线网络收发机6566所提到的系统之外,还可以使用任何数量的其他无线电通信和协议,如本文所述。例如,无线电收发机6562和6566可以包括使用扩频(SPA/SAS)通信以实施高速通信的LTE或其他蜂窝收发机。进一步地,可以使用任何数量的其他协议,诸如用于中速通信和提供网络通信的网络。
无线电收发机6562和6566可以包括与任何数量的3GPP(第三代合作伙伴计划)规范兼容的无线电,特别是长期演进(LTE)、长期演进-高级(LTE-A)和长期演进-高级专业版(LTE-A Pro)。可以注意到,可以选择与任何数量的其他固定、移动或卫星通信技术和标准兼容的无线电。这些可以包括例如任何蜂窝广域无线电通信技术,其可以包括例如第5代(5G)通信系统、全球移动通信系统(GSM)无线电通信技术、通用分组无线电服务(GPRS)无线电通信技术、或GSM演进增强数据速率(EDGE)无线电通信技术、UMTS(通用移动电信系统)通信技术,除了上面列出的标准之外,无线网络收发器6566可以使用任何数量的卫星上行链路技术,包括例如符合由ITU(国际电信联盟)或ETSI(欧洲电信标准协会)发布的标准的无线电等。因此,本文提供的示例被理解为适用于现有的和尚未发布的各种其他通信技术。
可以包括网络接口控制器(NIC)6568以向云6500或其他设备(诸如网状设备6564)提供有线通信。有线通信可以提供以太网连接,或者可以基于其他类型的网络,诸如控制器区域网络(CAN)、本地互连网络(LIN)、设备网(DeviceNet)、控制网(ControlNet)、数据高速通道+、过程现场总线(PROFIBUS)或过程现场网(PROFINET)等。可以包括附加NIC 6568以允许连接至第二网络,例如,通过以太网提供到云的通信的NIC 6568、以及通过另一种类型的网络提供到其他设备的通信的第二NIC 6568。
互连6556可以将处理器6552耦合至外部接口6570,所述外部接口用于连接外部设备或子系统。外部设备可以包括传感器6572,诸如加速度计、水平传感器、流量传感器、光学光传感器、相机传感器、温度传感器、全球定位系统(GPS)传感器、压力传感器、气压传感器等。外部接口6570可以进一步用于将IoT设备6550连接至致动器6574,诸如电源开关、阀致动器、可听声音发生器、可视化警告设备等。
在一些可选示例中,各种输入/输出(I/O)设备可以存在于IoT设备6550内或连接至所述IoT设备。例如,可以包括显示器或其他输出设备6584以显示诸如传感器读数或致动器位置等信息。可以包括诸如触摸屏或小键盘等输入设备6586以接受输入。输出设备6584可以包括任何数量形式的音频或可视化显示器,包括简单的可视化输出(诸如二进制状态指示器(例如,LED)和多字符可视化输出)、或者更复杂的输出(诸如显示屏(例如,LCD屏幕)),其中,字符、图形、多媒体对象等的输出是根据IoT设备6550的操作生成或产生的。
电池6576可以为IoT设备6550供电,但是在IoT设备6550安装在固定位置的示例中,所述电池可具有耦合至电网的电源。电池6576可以是锂离子电池或金属-空气电池,诸如锌-空气电池、铝-空气电池、锂-空气电池等。
电池监测器/充电器6578可以包括在IoT设备6550中以跟踪电池6576的充电状态(SoCh)。电池监测器/充电器6578可以用于监测电池6576的其他参数,以提供故障预测,诸如电池6576的健康状态(SoH)和功能状态(SoF)。电池监测器/充电器6578可以包括电池监测集成电路,诸如来自凌力尔特公司(Linear Technologies)的LTC4020或LTC2990、来自美国亚利桑那州凤凰城的安森美半导体公司(ON Semiconductor)的ADT7488A、或来自德克萨斯州达拉斯的德州仪器的UCD90xxx系列的IC。电池监测器/充电器6578可以通过互连6556将关于电池6576的信息传送至处理器6552。电池监测器/充电器6578还可以包括模数(ADC)转换器,所述模数转换器允许处理器6552直接监测电池6576的电压或来自电池6576的电流。电池参数可以用于确定IoT设备6550可执行的动作,诸如传输频率、网状网络操作、感测频率等。
电源块6580或耦合至电网的其他电源可以与电池监测器/充电器6578耦合以对电池6576进行充电。在一些示例中,电源块6580可以用无线功率接收器来代替,以例如通过IoT设备6550中的环形天线无线地获得功率。无线电池充电电路(诸如来自加利福尼亚州米尔皮塔斯的凌力尔特公司的LTC4020芯片等)可以包括在电池监测器/充电器6578中。所选择的特定充电电路取决于电池6576的尺寸,并且因此取决于所需的电流。可以使用由Airfuel联盟颁布的Airfuel标准、由无线电力联盟(Wireless Power Consortium)颁布的Qi无线充电标准、或由无线电力联盟颁布的Rezence充电标准来执行充电。
存储装置6558可以包括采用软件、固件或硬件命令形式以实施本文所述的技术的指令6582。虽然这种指令6582被示出为存储器6554和存储装置6558中所包括的代码块,但是可以理解的是,所述代码块中的任一个都可以利用例如内置在专用集成电路(ASIC)中的硬连线电路来代替。
在示例中,经由存储器6554、存储装置6558或处理器6552提供的指令6582可以被实施为非暂态机器可读介质6560,包括用于引导处理器6552在IoT设备6550中执行电子操作的代码。处理器6552可以通过互连6556访问非暂态机器可读介质6560。例如,非暂态机器可读介质6560可以由针对图65的存装置6558描述的设备来体现,或者可以包括特定的存储单元,诸如光盘、闪存驱动器或任何数量的其他硬件设备。非暂态机器可读介质6560可以包括用于引导处理器6552执行特定动作序列或动作流的指令,例如,如关于上述操作和功能的(多个)流程图和(多个)框图所描述的。
图66是根据实施例的处理器的示例图示。处理器6600是可以结合上述实施方式使用的一类硬件设备的示例。处理器6600可以是任何类型的处理器,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、多核处理器、单核处理器、或执行代码的其他设备。尽管在图66中仅展示了一个处理器6600,但是处理元件可以可替代地包括图66中展示的多于一个处理器6600。处理器6600可以是单线程核,或者针对至少一个实施例,处理器6600可以是多线程的,因为其可以包括每核多于一个硬件线程上下文(或者“逻辑处理器”)。
图66还展示了根据实施例的耦合至处理器6600的存储器6602。存储器6602可以是本领域技术人员已知或另外可用的广泛存储器(包括存储器层次结构中的各个层)中的任何一种。这种存储器元件可以包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、现场可编程门阵列(FPGA)的逻辑块、可擦除可编程只读存储器(EPROM)和电可擦除可编程ROM(EEPROM)。
处理器6600可以执行与本文详细描述的算法、过程或操作相关联的任何类型的指令。通常,处理器6600可以将元件或物件(例如,数据)从一个状态或事物变换为另一种状态或事物。
代码6604(其可以是待由处理器6600执行的一条或多条指令)可以存储在存储器6602中,或者可以存储在软件、硬件、固件、或其任何合适的组合中,或者(在合适的情况下并基于具体需要)存储在任何其他内部或外部组件、设备、元件或对象中。在一个示例中,处理器6600可以遵循代码6604所指示的程序指令序列。每条指令进入前端逻辑6606并由一个或多个解码器6608处理。所述解码器可以生成微操作作为其输出,如预定格式的固定宽度微输出,或者可以生成其他指令、微指令、或反映原始代码指令的控制信号。前端逻辑6606还包括寄存器重命名逻辑6610和调度逻辑6612,后者一般给资源和队列分配对应于用于执行的指令的操作。
处理器6600还可以包括具有一组执行单元6616a、6616b、6616n等的执行逻辑6614。一些实施例可以包括专用于特定功能或功能集合的大量执行单元。其他实施例可以包括仅一个执行单元、或可以执行特定功能的一个执行单元。执行逻辑6614执行由代码指令所指定的操作。
在完成执行由代码指令指定的操作后,后端逻辑6618可以引退代码6604的指令。在一个实施例中,处理器6600允许乱序执行但要求指令的按顺序引退。引退逻辑6620可以采取各种已知形式(例如,重排序缓存器等)。以这种方式,在代码6604执行的过程中处理器6600被变换,至少依据解码器所生成的输出、寄存器重命名逻辑6610所利用的硬件寄存器和表格、以及经执行逻辑6614修改的任何寄存器(未示出)。
尽管未在图66中示出,但是处理元件可以包括具有处理器6600的其他片上元件。例如,处理元件可以包括存储器控制逻辑以及处理器6600。处理元件可以包括I/O控制逻辑和/或可以包括与存储器控制逻辑集成的I/O控制逻辑。处理元件还可以包括一个或多个高速缓存。在一些实施例中,非易失性存储器(诸如,闪存或熔丝)也可以与处理器6600一起被包括在芯片上。
图67展示了根据实施例的被安排为点对点(PtP)配置的计算系统6700。具体地,图67示出了一种系统,在所述系统中,处理器、存储器以及输入/输出设备通过许多点对点接口互连。通常,可以采用与计算系统6700相同或类似的方式来配置本文所描述的计算系统中的一个或多个。
处理器6770和6780可以各自包括用于与存储器元件6732和6734进行通信的集成存储器控制器逻辑(MC)6772和6782。在替代实施例中,存储器控制器逻辑6772和6782可以是与处理器6770和6780分开的分立逻辑。存储器元件6732和/或6734可以存储要由处理器6770和6780用于实现本文所概述的操作和功能的各种数据。
处理器6770和6780可以是任何类型的处理器,诸如结合其他附图所讨论的那些处理器。处理器6770和6780可以分别使用点对点(PtP)接口电路6778和6788经由点对点接口6750来交换数据。处理器6770和6780中的每一个处理器可以使用点对点接口电路6776、6786、6794和6798经由单独的点对点接口6752和6754来与芯片组6790交换数据。芯片组6790还可以使用接口电路6792(这可以是PtP接口电路)经由高性能图形接口6739与高性能图形电路6738交换数据。在替代实施例中,图67所展示的任何或所有PtP链路可以被实施为多点分支总线而非有PtP链路。
芯片组6790可以经由接口电路6796与总线6720通信。总线6720可以具有一个或多个通过所述总线进行通信的设备,如总线桥接器6718和I/O设备6716。经由总线6710,总线桥接器6718可以与其他设备通信,诸如用户接口6712(诸如键盘、鼠标、触摸屏、或其他输入设备)、通信设备6726(诸如调制解调器、网络接口设备、或其他类型的可以通过计算机网络6760通信的通信设备)、音频I/O设备6714、和/或数据存储设备6728。数据存储设备6728可以存储代码6730,所述代码可以由处理器6770和/或6780执行。在替代实施例中,总线架构的任何部分用一个或多个PtP链路实施。
图67中描绘的计算机系统是可以用于实施在此讨论的各个实施例的计算系统的实施例的示意图。将理解的是,图67中所描绘的系统的各个部件可以结合在片上系统(SoC)架构中或者在能够实现本文所提供的示例和实施方式的功能和特征的任何其他合适的配置中。
在进一步的示例中,机器可读介质还包括任何有形介质,所述有形介质能够存储、编码或携带用于由机器执行并使所述机器执行本公开的方法中的任何一个或多个的指令,或者所述有形介质能够存储、编码或携带由这样的指令利用或与这样的指令相关联的数据结构。“机器可读介质”因此可以包括但不限于固态存储器、以及光学介质和磁性介质。机器可读介质的特定示例包括非易失性存储器,所述非易失性存储器通过示例的方式包括但不限于半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和闪存装置;磁盘,如内置硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM磁盘。可以利用多个传输协议(例如,HTTP)中的任一种协议、经由网络接口设备、使用传输介质、通过通信网络来进一步发射或接收由机器可读介质体现的指令。
应当理解,本说明书中所描述的功能单元或能力可以被称为或标记为部件或模块,以更加特别地强调其实施独立性。这些部件可以由任何数量的软件或硬件的形式实施。例如,部件或模块可以被实施为硬件电路,所述硬件电路包括定制超大规模集成(VLSI)电路或门阵列、现货供应的半导体,如逻辑芯片、晶体管、或其他分立部件。部件或模块还可以在如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件等可编程硬件装置中实施。部件或模块还可以在由各种类型的处理器执行的软件中实施。可执行代码的所标识部件或模块可以包括例如计算机指令的一个或多个物理块或逻辑块,所述物理块或逻辑块可以被组织为例如对象、程序或函数。然而,所标识部件或模块的可执行部分不需要物理上定位在一起,而是可以包括存储在不同位置的不同指令,这些指令当被逻辑地连接在一起时包括所述部件或模块并且实现所述部件或模块的所阐述的目的。
实际上,可执行代码的部件或模块可以是单个指令,或许多指令,并且甚至可分布在若干不同代码段中、在不同程序之间、并且跨越若干存储器装置或处理系统。具体地,所描述的过程的一些方面(如代码重写和代码分析)可以在不同的处理系统上(例如,在数据中心中的计算机中)发生,而不是在其中部署代码的处理系统上(例如,在嵌入传感器或机器人中的计算机中)。类似地,本文中操作数据可以在部件或模块内被标识和展示,并且可以以任何合适的形式体现并且组织在任何合适类型的数据结构中。操作数据可以被收集为单个数据集,或者可以分布在不同位置上,包括分布在不同的存储设备上,并且可以至少部分地仅作为电子信号存在于系统或网络上。所述部件或模块可以是被动或主动的,包括可操作以执行期望功能的代理。
目前所描述的方法、系统和设备实施例的附加示例包括以下非限制性配置。以下非限制性示例中的每个示例可以独立存在,或者可以任何枚举或组合与在下文或在整个本公开中提供的其他示例中的任何一个或多个示例进行组合。
尽管已经根据某些实施方式和总体上相关联的方法描述了本公开,但是这些实施方式和方法的替代方案和置换对于本领域技术人员而言将是显而易见的。例如,本文所描述的动作可以以与所描述的不同顺序来执行,并且仍然实现期望的结果。作为一个示例,在附图中描绘的过程不一定需要所示出的特定顺序或相继顺序来实现期望结果。在某些实施方式中,多重任务处理和并行处理可能是有利的。另外,可以支持其他用户接口布局和功能。其他变体处于以下权利要求的范围内。
尽管本说明书包含许多特定实施方式细节,但是这些细节不应被解读为是对任何发明或者可能要求保护的内容的范围的限制,而应被解读为是对具体发明的具体实施例特有的特征的描述。在单一实施例的背景下在本说明书中所描述的某些特征还可以组合地实施在单个实施例中。相反,在单一实施例的上下文中描述的各个特征也可以被单独地或以任何适合的子组合的方式实施在多个实施例中。而且,虽然特征在上文可以被描述为以某些组合起作用并且甚至如此最初被要求,但来自所要求保护的组合的一个或多个特征在某些情况下可以与组合离体,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然附图中以具体顺序描绘了操作,但这不应被理解成要求这种操作以所示出的具体顺序或以有序顺序执行,或者所有展示的操作可以被执行,以实现令人希望的结果。在某些情况下,多重任务处理和并行处理可能是有利的。而且,上述实施例中的不同系统部件的分离不应被理解成在所有实施例中都要求这种分离,并且应理解的是,所描述的程序部件和系统通常可以一起整合在单个软件产品中或封装进多个软件产品中。
以下示例涉及根据本说明书的实施例。示例1是一种运载工具,所述运载工具包括:控制器,用于指引所述运载工具在环境内行驶;以及存储器,用于存储体积数据结构的至少一部分,其中,所述体积数据结构以多个细节层次描述所述环境内的特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积。所述运载工具可以进一步包括路径规划逻辑,所述路径规划逻辑用于:使用所述体积数据结构来识别所述特定体积内的几何结构;并且基于所述几何结构来生成路径数据以描述通过所述特定体积的路径,其中,所述控制器用于使用所述路径数据来指引所述运载工具的行驶。
示例2可以包括如示例1所述的主题,进一步包括:一个或多个传感器,用于感测在所述环境内影响所述运载工具的状况,其中,所述路径规划逻辑用于响应于由所述一个或多个传感器感测到的一个或多个特定状况来评估所述路径数据。
示例3可以包括如示例2所述的主题,其中,所述一个或多个传感器包括图像传感器。
示例4可以包括如示例2至3中任一项所述的主题,其中,所述一个或多个传感器包括接近度传感器。
示例5可以包括如示例1至4中任一项所述的主题,其中,所述路径的特定部分基于对所述体积数据结构中处于所述第一细节层次的体素的描述,并且所述路径的另一部分基于对所述体积数据结构中处于高于所述第一细节层次的另一细节层次的体素的描述。
示例6可以包括如示例1至5中任一项所述的主题,其中,所述路径数据包括由所述体积数据结构生成的所述特定体积的二维(2D)投影。
示例7可以包括如示例6所述的主题,其中,所述2D投影包括所述特定体积的俯视图的地图。
示例8可以包括如示例6所述的主题,其中,所述2D投影包括在所述运载工具的当前行驶方向上定向的所述特定体积的视图。
示例9可以包括如示例8所述的主题,其中,生成所述2D投影包括使用所述体积数据结构来执行对所述特定体积的光线跟踪,其中,所述光线跟踪基于所述运载工具的与所述视图相对应的当前姿态。
示例10可以包括如示例1至9中任一项所述的主题,进一步包括:取出逻辑,用于选择所述体积数据结构以用于确定所述路径。
示例11可以包括如示例10所述的主题,其中,所述体积数据结构选自描述环境内的各种体积的多个其他体积数据结构。
示例12可以包括如示例10至11中任一项所述的主题,其中,选择所述体积数据结构包括:确定所述运载工具的当前位置;确定所述运载工具的潜在行驶范围;以及确定所述特定体积对应于与所述当前位置和所述范围相对应的体积。
示例13可以包括如示例12所述的主题,其中,基于所述运载工具的电池寿命、支配所述运载工具的允许行驶的行驶规则、所述运载工具使用的无线通信链路的物理距离限制、以及为所述运载工具提供的目的地位置之一来确定所述范围。
示例14可以包括如示例1至13中任一项所述的主题,其中,所述运载工具包括空中无人机,并且所述路径数据描述三维飞行计划。
示例15可以包括如示例1至13中任一项所述的主题,其中,所述运载工具包括自主汽车。
示例16可以包括如示例1至15中任一项所述的主题,其中,所述路径规划逻辑包括硬件电路系统。
示例17是一种机器可访问存储介质,其上存储有指令,所述指令当在机器上执行时使所述机器:识别设备行驶路径的起始位置;识别所述行驶路径的目的地位置;确定与所述行驶路径相对应的特定体积;获得表示所述特定体积的特定体积数据结构,其中,所述特定体积数据结构以多个细节层次描述所述特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积;并且基于以所述特定体积数据结构描述的所述几何结构来确定从所述起始位置到结束位置的所述行驶路径的至少一部分。
示例18可以包括如示例17所述的主题,其中,确定所述行驶路径以避免与所述几何结构碰撞。
示例19可以包括如示例17至18中任一项所述的主题,其中,所述指令当被执行时进一步使机器:识别以所述特定体积数据结构描述的所述特定体积的所述几何结构的变化;并且基于所述变化来修改所述行驶路径。
示例20可以包括如示例19所述的主题,其中,所述几何结构的所述变化由所述设备上的传感器来检测。
示例21可以包括如示例20所述的主题,其中,所述传感器包括图像传感器。
示例22可以包括如示例21所述的主题,其中,识别所述几何结构的所述变化包括:使用所述体积数据结构来渲染所述几何结构的二维(2D)投影;由所述图像传感器生成2D图像;以及对所述2D投影与所述2D图像执行比较。
示例23可以包括如示例21所述的主题,其中,识别所述几何结构的所述变化包括:基于由所述图像传感器收集的数据来生成所述特定体积数据结构的至少一部分的更新版本;以及执行所述特定体积数据结构的值与所述特定体积数据结构的所述更新版本的值之间的比较,以识别所述几何结构的所述变化。
示例24可以包括如示例17至23中任一项所述的主题,其中,确定所述路径的所述部分包括:识别用于行驶所述路径的所述部分的精度水平;基于所述精度水平来识别所述多个细节层次中高于所述第一细节层次的特定细节层次;以及使用所述体积数据结构中的以所述特定细节层次描述体素的至少一个条目,基于所述精度水平来确定所述路径的所述部分。
示例25是一种装置,所述装置包括:处理器设备;成像传感器,用于生成包括环境中几何结构的视图的图像数据;以及取出逻辑,用于获得体积数据结构的至少一部分,其中,所述体积数据结构描述包括所述几何结构的所述环境内的体积,所述体积数据结构以多个细节层次描述所述体积并且包括用于描述限定处于所述多个细节层次的所述体积的子体积的体素的条目,其中,所述体积数据结构包括用于以所述细节层次中的最低细节层次描述体素的第一条目、并且进一步包括用于以更高的第二细节层次描述体素的多个第二条目,处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积,并且所述条目中的每个条目包括用于指示所述体素中的相应体素是否至少部分地被所述几何结构占据的位。所述装置可以进一步包括比较逻辑,所述比较逻辑用于:识别所述体积数据结构中与所述几何结构的所述视图相对应的至少一个特定条目;并且确定以所述体积数据结构表示的所述几何结构的视图与以所述图像数据中表示的所述几何结构的视图之间的比较。
示例26可以包括如示例25所述的主题,其中,所述体积数据结构包括参考体积数据结构,所述装置进一步包括:转换逻辑,用于基于所述参考体积数据结构的格式将所述图像数据转换为观察到的体积数据结构,并且确定所述比较包括:识别所观察到的体积数据结构中与所述参考体积数据结构中的所述特定条目相对应的特定条目;对所观察到的体积数据结构的所述特定条目与所述参考体积数据结构的所述特定条目执行逐位比较;以及基于所述逐位比较的结果而执行动作。
示例27可以包括如示例26所述的主题,其中,所述观察到的体积数据结构和所述参考体积数据结构中的每一个的所述特定条目表示处于所述多个细节层次中的最低细节层次的体素,所述逐位比较的所述结果指示所述特定条目之间的匹配,并且所述动作包括:识别所述参考体积数据结构和所观察到的体积数据结构的每一个中表示处于高于所述最低细节层次的细节层次的体素子集的条目子集;以及对所观察到的体积数据结构与所述参考体积数据结构的所述条目子集中的每个条目子集执行逐位比较。
示例28可以包括如示例26至27中任一项所述的主题,其中,所述动作包括基于所述图像数据来确定设备的行驶可以沿着路径继续。
示例29可以包括如示例26所述的主题,其中,所述逐位比较的所述结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括改变设备的行驶路径以避开所述附加几何结构。
示例30可以包括如示例26所述的主题,其中,所述逐位比较的所述结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括基于以所述参考体积数据结构描述的所述几何结构而忽略所述附加几何结构。
示例31可以包括如示例30所述的主题,其中,所述图像数据用于引导设备的行驶,并且所述动作包括维持所述设备的行驶路径,而不管所述附加几何结构。
示例32可以包括如示例25所述的主题,进一步包括:转换逻辑,用于将所述体积数据结构转换为二维(2D)投影,其中,所述图像数据包括2D图像,并且确定所述比较包括将所述2D图像与所述2D投影进行比较。
示例33可以包括如示例32所述的主题,其中,将所述体积数据结构转换为所述2D投影包括确定所述成像传感器相对于所述体积的姿态,并且所述姿态包括在生成所述图像数据期间所述成像传感器的姿态。
示例34可以包括如示例32至33中任一项所述的主题,其中,将所述体积数据结构转换为所述2D投影包括对所述体积执行光线跟踪。
示例35可以包括如示例25至34中任一项所述的主题,其中,所述体积数据结构包括表示所述几何结构的地面实况的体积模型。
示例36可以包括如示例25至35中任一项所述的主题,其中,所述比较逻辑包括硬件电路系统。
示例37是一种方法,包括:生成包括环境中几何结构的视图的图像数据;获得体积数据结构的至少一部分,其中,所述体积数据结构描述包括所述几何结构的所述环境内的体积,所述体积数据结构以多个细节层次描述所述体积并且包括用于描述限定处于所述多个细节层次的所述体积的子体积的体素的条目,其中,所述体积数据结构包括用于以所述细节层次中的最低细节层次描述体素的第一条目、并且进一步包括用于以更高的第二细节层次描述体素的多个第二条目,处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积,并且所述条目中的每个条目包括用于指示所述体素中的相应体素是否至少部分地被所述几何结构占据的位;识别所述体积数据结构中与所述几何结构的所述视图相对应的至少一个特定条目;以及确定以所述体积数据结构表示的所述几何结构的视图与以所述图像数据表示的所述几何结构的视图之间的比较。
示例38可以包括如示例37所述的主题,其中,所述体积数据结构包括参考体积数据结构,所述方法进一步包括:转换逻辑,用于基于所述参考体积数据结构的格式将所述图像数据转换为观察到的体积数据结构,并且确定所述比较包括:识别所观察到的体积数据结构中与所述参考体积数据结构中的所述特定条目相对应的特定条目;对所观察到的体积数据结构的所述特定条目与所述参考体积数据结构的所述特定条目执行逐位比较;以及基于所述逐位比较的结果而执行动作。
示例39可以包括如示例38所述的主题,其中,所述观察到的体积数据结构和所述参考体积数据结构中的每一个的所述特定条目表示处于所述多个细节层次中的最低细节层次的体素,所述逐位比较的所述结果指示所述特定条目之间的匹配,并且所述动作包括:识别所述参考体积数据结构和所观察到的体积数据结构的每一个中表示处于高于所述最低细节层次的细节层次的体素子集的条目子集;以及对所观察到的体积数据结构与所述参考体积数据结构的所述条目子集中的每个条目子集执行逐位比较。
示例40可以包括如示例38至39中任一项所述的主题,其中,所述动作包括基于所述图像数据来确定设备的行驶可以沿着路径继续。
示例41可以包括如示例38所述的主题,其中,所述逐位比较的所述结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括改变设备的行驶路径以避开所述附加几何结构。
示例42可以包括如示例38所述的主题,其中,所述逐位比较的所述结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括基于以所述参考体积数据结构描述的所述几何结构而忽略所述附加几何结构。
示例43可以包括如示例42所述的主题,其中,所述图像数据用于引导设备的行驶,并且所述动作包括维持所述设备的行驶路径,而不管所述附加几何结构。
示例44可以包括如示例37所述的主题,进一步包括:转换逻辑,用于将所述体积数据结构转换为二维(2D)投影,其中,所述图像数据包括2D图像,并且确定所述比较包括将所述2D图像与所述2D投影进行比较。
示例45可以包括如示例44所述的主题,其中,将所述体积数据结构转换为所述2D投影包括确定所述成像传感器相对于所述体积的姿态,并且所述姿态包括在生成所述图像数据期间所述成像传感器的姿态。
示例46可以包括如示例44至45中任一项所述的主题,其中,将所述体积数据结构转换为所述2D投影包括对所述体积执行光线跟踪。
示例47可以包括如示例37至46中任一项所述的主题,其中,所述体积数据结构包括表示所述几何结构的地面实况的体积模型。
示例48是一种系统,所述系统包括用于执行如示例37至47中任一项所述的方法的装置。
示例49是一种方法,包括:识别设备行驶路径的起始位置;识别所述行驶路径的目的地位置;确定与所述行驶路径相对应的特定体积;获得表示所述特定体积的特定体积数据结构,其中,所述特定体积数据结构以多个细节层次描述所述特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积;以及基于以所述特定体积数据结构描述的所述几何结构来确定从所述起始位置到结束位置的所述行驶路径的至少一部分。
示例50可以包括如示例49所述的主题,其中,确定所述行驶路径以避免与所述几何结构碰撞。
示例51可以包括如示例49至50中任一项所述的主题,进一步包括:识别以所述特定体积数据结构描述的所述特定体积的所述几何结构的变化;以及基于所述变化来修改所述行驶路径。
示例52可以包括如示例51所述的主题,其中,所述几何结构的所述变化由所述设备上的传感器来检测。
示例53可以包括如示例52所述的主题,其中,所述传感器包括图像传感器。
示例54可以包括如示例53所述的主题,其中,识别所述几何结构的所述变化包括:使用所述体积数据结构来渲染所述几何结构的二维(2D)投影;由所述图像传感器生成2D图像;以及对所述2D投影与所述2D图像执行比较。
示例55可以包括如示例53所述的主题,其中,识别所述几何结构的所述变化包括:基于由所述图像传感器收集的数据来生成所述特定体积数据结构的至少一部分的更新版本;以及执行所述特定体积数据结构的值与所述特定体积数据结构的所述更新版本的值之间的比较,以识别所述几何结构的所述变化。
示例56可以包括如示例49至55中任一项所述的主题,其中,确定所述路径的所述部分包括:识别用于行驶所述路径的所述部分的精度水平;基于所述精度水平来识别所述多个细节层次中高于所述第一细节层次的特定细节层次;以及使用所述体积数据结构中的以所述特定细节层次描述体素的至少一个条目,基于所述精度水平来确定所述路径的所述部分。
示例57是一种系统,所述系统包括用于执行如示例49至56中任一项所述的方法的装置。
示例58是一种方法,包括:获得体积数据结构的至少一部分,其中,所述体积数据结构以多个细节层次描述所述环境内的特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的所述体素表示处于所述第一细节层次的所述体素的子体积;使用所述体积数据结构来识别所述特定体积内的几何结构;以及基于所述几何结构来生成路径数据以描述通过所述特定体积的路径,其中,控制器用于使用所述路径数据来指引设备的行驶。
示例59可以包括如示例58所述的主题,进一步包括:使用一个或多个传感器来感测在所述环境内影响所述运载工具的状况;以及响应于由所述一个或多个传感器感测到的一个或多个特定状况来评估所述路径数据中描述的所述路径。
示例60可以包括如示例59所述的主题,其中,所述一个或多个传感器包括图像传感器。
示例61可以包括如示例59至60中任一项所述的主题,其中,所述一个或多个传感器包括接近度传感器。
示例62可以包括如示例58至61中任一项所述的主题,其中,所述路径的特定部分基于对所述体积数据结构中处于所述第一细节层次的体素的描述,并且所述路径的另一部分基于对所述体积数据结构中处于高于所述第一细节层次的另一细节层次的体素的描述。
示例63可以包括如示例58至62中任一项所述的主题,其中,所述路径数据包括由所述体积数据结构生成的所述特定体积的二维(2D)投影。
示例64可以包括如示例63所述的主题,其中,所述2D投影包括所述特定体积的俯视图的地图。
示例65可以包括如示例63所述的主题,其中,所述2D投影包括在所述运载工具的当前行驶方向上定向的所述特定体积的视图。
示例66可以包括如示例65所述的主题,其中,生成所述2D投影包括使用所述体积数据结构来执行对所述特定体积的光线跟踪,其中,所述光线跟踪基于所述运载工具的与所述视图相对应的当前姿态。
示例67可以包括如示例58至66中任一项所述的主题,进一步包括选择所述体积数据结构以用于确定所述路径。
示例68可以包括如示例67所述的主题,其中,所述体积数据结构选自描述环境内的各种体积的多个其他体积数据结构。
示例69可以包括如示例67至68中任一项所述的主题,其中,选择所述体积数据结构包括:确定所述运载工具的当前位置;确定所述运载工具的潜在行驶范围;以及确定所述特定体积对应于与所述当前位置和所述范围相对应的体积。
示例70可以包括如示例69所述的主题,其中,基于所述运载工具的电池寿命、支配所述运载工具的允许行驶的行驶规则、所述运载工具使用的无线通信链路的物理距离限制、以及为所述运载工具提供的目的地位置之一来确定所述范围。
示例71可以包括如示例58至70中任一项所述的主题,其中,所述设备包括空中无人机,并且所述路径数据描述三维飞行计划。
示例72可以包括如示例58至70中任一项所述的主题,其中,所述设备包括自主汽车。
示例73可以包括如示例58至70中任一项所述的主题,其中,所述设备包括机器人的至少一部分。
示例74是一种系统,所述系统包括用于执行如示例58至73中任一项所述的方法的装置。
因此,己经描述了本主题的特定实施例。其他实施例俱在以下权利要求的范围内。在一些情况下,权利要求书中所列举的动作可以用不同顺序来执行,并且仍然获得期望结果。此外,在附图中描绘的过程不一定需要所示出的特定顺序或相继顺序来实现所希望的结果。

Claims (40)

1.一种运载工具,包括:
控制器,用于指引所述运载工具在环境内行驶;
存储器,用于存储体积数据结构的至少一部分,其中,所述体积数据结构以多个细节层次描述所述环境内的特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应的一个体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积;
路径规划逻辑,用于:
使用所述体积数据结构来识别所述特定体积内的几何结构;并且
基于所述几何结构来生成路径数据以描述通过所述特定体积的路径,其中,所述控制器用于使用所述路径数据来指引所述运载工具的行驶。
2.如权利要求1所述的运载工具,进一步包括:一个或多个传感器,用于感测在所述环境内影响所述运载工具的状况,其中,所述路径规划逻辑用于响应于由所述一个或多个传感器感测到的一个或多个特定状况来评估所述路径数据。
3.如权利要求2所述的运载工具,其中,所述一个或多个传感器包括图像传感器。
4.如权利要求2至3中任一项所述的运载工具,其中,所述一个或多个传感器包括接近度传感器。
5.如权利要求1至4中任一项所述的运载工具,其中,所述路径的特定部分基于对所述体积数据结构中处于所述第一细节层次的体素的描述,并且所述路径的另一部分基于对所述体积数据结构中处于高于所述第一细节层次的另一细节层次的体素的描述。
6.如权利要求1至5中任一项所述的运载工具,其中,所述路径数据包括从所述体积数据结构生成的所述特定体积的二维(2D)投影。
7.如权利要求6所述的运载工具,其中,所述2D投影包括所述特定体积的俯视图的地图。
8.如权利要求6所述的运载工具,其中,所述2D投影包括在所述运载工具的当前行驶方向上定向的所述特定体积的视图。
9.如权利要求8所述的运载工具,其中,生成所述2D投影包括使用所述体积数据结构来执行对所述特定体积的光线跟踪,其中,所述光线跟踪基于所述运载工具的与所述视图相对应的当前姿态。
10.如权利要求1至9中任一项所述的运载工具,进一步包括:取出逻辑,用于选择所述体积数据结构以用于确定所述路径。
11.如权利要求10所述的运载工具,其中,所述体积数据结构选自描述环境内的各种体积的多个其他体积数据结构。
12.如权利要求10至11中任一项所述的运载工具,其中,选择所述体积数据结构包括:
确定所述运载工具的当前位置;
确定所述运载工具的潜在行驶范围;以及
确定所述特定体积对应于与所述当前位置和所述范围相对应的体积。
13.如权利要求12所述的运载工具,其中,基于以下一项来确定所述范围:所述运载工具的电池寿命、支配所述运载工具的所允许的行驶的行驶规则、所述运载工具使用的无线通信链路的物理距离限制、以及为所述运载工具提供的目的地位置。
14.如权利要求1至13中任一项所述的运载工具,其中,所述运载工具包括空中无人机,并且所述路径数据描述三维飞行计划。
15.如权利要求1至13中任一项所述的运载工具,其中,所述运载工具包括自主汽车。
16.至少一种机器可访问存储介质,其上存储有指令,所述指令当在机器上执行时使所述机器:
识别设备的行驶路径的起始位置;
识别所述行驶路径的目的地位置;
确定与所述行驶路径相对应的特定体积;
获得表示所述特定体积的特定体积数据结构,其中,所述特定体积数据结构以多个细节层次描述所述特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积;并且
基于以所述特定体积数据结构描述的所述几何结构来确定从所述起始位置到结束位置的所述行驶路径的至少一部分。
17.如权利要求16所述的存储介质,其中,确定所述行驶路径以避免与所述几何结构碰撞。
18.如权利要求16至17中任一项所述的存储介质,其中,所述指令当被执行时进一步使机器:
识别具有以所述特定体积数据结构描述的所述特定体积的所述几何结构的变化;并且
基于所述变化来修改所述行驶路径。
19.如权利要求18所述的存储介质,其中,所述几何结构的所述变化由所述设备上的传感器来检测。
20.如权利要求19所述的存储介质,其中,所述传感器包括图像传感器。
21.如权利要求20所述的存储介质,其中,识别所述几何结构的所述变化包括:
使用所述体积数据结构来渲染所述几何结构的二维(2D)投影;
从所述图像传感器生成2D图像;以及
对所述2D投影与所述2D图像执行比较。
22.如权利要求20所述的存储介质,其中,识别所述几何结构的所述变化包括:
基于由所述图像传感器收集的数据来生成所述特定体积数据结构的至少一部分的更新版本;以及
执行所述特定体积数据结构的值与所述特定体积数据结构的所述更新版本的值之间的比较,以识别所述几何结构的所述变化。
23.如权利要求16至22中任一项所述的存储介质,其中,确定所述路径的所述部分包括:
识别用于行驶所述路径的所述部分的精度水平;
基于所述精度水平来识别所述多个细节层次中高于所述第一细节层次的特定的一个细节层次;
使用所述体积数据结构中的以所述特定细节层次描述体素的至少一个条目来基于所述精度水平确定所述路径的所述部分。
24.一种装置,包括:
处理器设备;
成像传感器,用于生成图像数据,所述图像数据包括环境中几何结构的视图;
取出逻辑,用于获得体积数据结构的至少一部分,其中,所述体积数据结构描述包括所述几何结构的所述环境内的体积,所述体积数据结构以多个细节层次描述所述体积并且包括用于描述限定处于所述多个细节层次的所述体积的子体积的体素的条目,其中,所述体积数据结构包括用于以所述细节层次中的最低细节层次描述体素的第一条目并且进一步包括用于以更高的第二细节层次描述体素的多个第二条目,处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积,并且所述条目中的每个条目包括用于指示所述体素中的相应的一个体素是否至少部分地被所述几何结构占据的位;以及
比较逻辑,用于:
识别所述体积数据结构中与所述几何结构的视图相对应的至少一个特定条目;并且
确定以所述体积数据结构表示的所述几何结构的视图与以所述图像数据表示的所述几何结构的视图之间的比较。
25.如权利要求24所述的装置,其中,所述体积数据结构包括参考体积数据结构,所述装置进一步包括:转换逻辑,用于基于所述参考体积数据结构的格式将所述图像数据转换为观察到的体积数据结构,并且确定所述比较包括:
识别所述观察到的体积数据结构中与所述参考体积数据结构中的特定条目相对应的特定条目;
对所述观察到的体积数据结构的特定条目与所述参考体积数据结构的特定条目执行逐位比较;以及
基于所述逐位比较的结果来执行动作。
26.如权利要求25所述的装置,其中,所述观察到的体积数据结构和所述参考体积数据结构中的每一个的特定条目表示处于所述多个细节层次中的最低细节层次的体素,所述逐位比较的结果指示特定条目之间的匹配,并且所述动作包括:
识别所述参考体积数据结构和所述观察到的体积数据结构的每一个中表示处于高于所述最低细节层次的细节层次的体素子集的条目子集;以及
对所述观察到的体积数据结构与所述参考体积数据结构的所述条目子集中的每个条目子集执行逐位比较。
27.如权利要求25至26中任一项所述的装置,其中,所述动作包括:基于所述图像数据来确定设备的行驶能够沿着路径继续。
28.如权利要求25所述的装置,其中,所述逐位比较的结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括改变设备的行驶路径以避开所述附加几何结构。
29.如权利要求25所述的装置,其中,所述逐位比较的结果指示在所述图像数据中观察到的所述几何结构中存在附加几何结构,并且所述动作包括基于以所述参考体积数据结构描述的所述几何结构而忽略所述附加几何结构。
30.如权利要求29所述的装置,其中,所述图像数据用于引导设备的行驶,并且所述动作包括维持所述设备的行驶路径,而不管所述附加几何结构。
31.如权利要求24所述的装置,进一步包括:转换逻辑,用于将所述体积数据结构转换为二维(2D)投影,其中,所述图像数据包括2D图像,并且确定所述比较包括将所述2D图像与所述2D投影进行比较。
32.如权利要求31所述的装置,其中,将所述体积数据结构转换为所述2D投影包括确定所述成像传感器相对于所述体积的姿态,并且所述姿态包括在生成所述图像数据期间所述成像传感器的姿态。
33.如权利要求31至32中任一项所述的装置,其中,将所述体积数据结构转换为所述2D投影包括对所述体积执行光线跟踪。
34.如权利要求24至33中任一项所述的装置,其中,所述体积数据结构包括表示所述几何结构的地面实况的体积模型。
35.一种方法,包括:
生成包括环境中的几何结构的视图的图像数据;
获得体积数据结构的至少一部分,其中,所述体积数据结构描述包括所述几何结构的所述环境内的体积,所述体积数据结构以多个细节层次描述所述体积并且包括用于描述限定处于所述多个细节层次的所述体积的子体积的体素的条目,其中,所述体积数据结构包括用于以所述细节层次中的最低细节层次描述体素的第一条目并且进一步包括用于以更高的第二细节层次描述体素的多个第二条目,处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积,并且所述条目中的每个条目包括用于指示所述体素中的相应的一个体素是否至少部分地被所述几何结构占据的位;以及
识别所述体积数据结构中与所述几何结构的视图相对应的至少一个特定条目;以及
确定以所述体积数据结构表示的所述几何结构的视图与以所述图像数据表示的所述几何结构的视图之间的比较。
36.一种系统,包括用于执行如权利要求35所述的方法的装置。
37.一种方法,包括:
识别设备的行驶路径的起始位置;
识别所述行驶路径的目的地位置;
确定与所述行驶路径相对应的特定体积;
获得表示所述特定体积的特定体积数据结构,其中,所述特定体积数据结构以多个细节层次描述所述特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应的一个体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积;以及
基于以所述特定体积数据结构描述的所述几何结构来确定从所述起始位置到结束位置的所述行驶路径的至少一部分。
38.一种系统,包括用于执行如权利要求37所述的方法的装置。
39.一种方法,包括:
从存储器获得体积数据结构的至少一部分,其中,所述体积数据结构以多个细节层次描述环境内的特定体积,所述体积数据结构中的第一条目包括以所述多个细节层次中的第一细节层次表示体素的第一组位,所述体素表示所述特定体积的子体积,所述第一组位的值指示处于所述第一细节层次的所述体素中的相应的一个体素是否至少部分地由对应的几何结构占据,其中,所述体积数据结构进一步包括以高于所述第一细节层次的第二细节层次表示体素的多个第二条目,并且处于所述第二细节层次的体素表示处于所述第一细节层次的体素的子体积;
使用所述体积数据结构来识别所述特定体积内的几何结构;以及
基于所述几何结构来生成路径数据以描述通过所述特定体积的路径,其中,控制器用于使用所述路径数据来指引设备的行驶。
40.一种系统,包括用于执行如权利要求39所述的方法的装置。
CN201780063370.1A 2016-08-19 2017-08-19 使用稀疏体积数据进行路径规划 Active CN110383340B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662377471P 2016-08-19 2016-08-19
US62/377,471 2016-08-19
PCT/US2017/047697 WO2018035508A1 (en) 2016-08-19 2017-08-19 Path planning using sparse volumetric data

Publications (2)

Publication Number Publication Date
CN110383340A true CN110383340A (zh) 2019-10-25
CN110383340B CN110383340B (zh) 2023-07-04

Family

ID=61197094

Family Applications (6)

Application Number Title Priority Date Filing Date
CN202410028163.4A Pending CN117764811A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780064229.3A Active CN110494895B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作
CN201780063371.6A Active CN110392902B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780064277.2A Pending CN110392903A (zh) 2016-08-19 2017-08-19 矩阵操作的动态剔除
CN202311170467.6A Pending CN117197314A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作
CN201780063370.1A Active CN110383340B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据进行路径规划

Family Applications Before (5)

Application Number Title Priority Date Filing Date
CN202410028163.4A Pending CN117764811A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780064229.3A Active CN110494895B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作
CN201780063371.6A Active CN110392902B (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的操作
CN201780064277.2A Pending CN110392903A (zh) 2016-08-19 2017-08-19 矩阵操作的动态剔除
CN202311170467.6A Pending CN117197314A (zh) 2016-08-19 2017-08-19 使用稀疏体积数据的渲染操作

Country Status (5)

Country Link
US (12) US10748326B2 (zh)
EP (4) EP3501008A4 (zh)
KR (1) KR102546996B1 (zh)
CN (6) CN117764811A (zh)
WO (4) WO2018035507A1 (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110807287A (zh) * 2019-11-05 2020-02-18 广东电网有限责任公司 基于有限元网格在应急抢修布点场景中划分业务网格构建方法
CN112068791A (zh) * 2020-09-04 2020-12-11 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112090078A (zh) * 2020-08-13 2020-12-18 深圳中清龙图网络技术有限公司 游戏角色移动控制方法、装置、设备和介质
CN112295225A (zh) * 2020-11-02 2021-02-02 不鸣科技(杭州)有限公司 一种寻路网格的多线程更新方法
CN113365370A (zh) * 2021-05-24 2021-09-07 内蒙古工业大学 一种基于LoRa技术的智能移动系统
CN113419539A (zh) * 2021-07-14 2021-09-21 燕山大学 具有复杂地形可通过性判断的移动机器人路径规划方法
CN114371998A (zh) * 2021-12-31 2022-04-19 华南理工大学 一种基于考虑约束的并行广度优先搜索的架构测试方法
US20220148204A1 (en) * 2020-11-11 2022-05-12 Toyota Research Institute, Inc. Network architecture for the joint learning of monocular depth prediction and completion
CN117312608A (zh) * 2023-08-14 2023-12-29 河海大学 一种基于深度优先搜索的河网节点简并方法
CN117312608B (zh) * 2023-08-14 2024-06-04 河海大学 一种基于深度优先搜索的河网节点简并方法

Families Citing this family (84)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11043042B2 (en) * 2016-05-16 2021-06-22 Hewlett-Packard Development Company, L.P. Generating a shape profile for a 3D object
CN116630452A (zh) * 2016-06-14 2023-08-22 松下电器(美国)知识产权公司 三维数据编码方法、解码方法、编码装置、解码装置
WO2018022011A1 (en) * 2016-07-26 2018-02-01 Hewlett-Packard Development Company, L.P. Indexing voxels for 3d printing
WO2018035507A1 (en) 2016-08-19 2018-02-22 Linear Algebra Technologies Limited Rendering operations using sparse volumetric data
KR20180034853A (ko) * 2016-09-28 2018-04-05 에스케이하이닉스 주식회사 합성곱 신경망의 연산 장치 및 방법
WO2018093796A1 (en) * 2016-11-15 2018-05-24 Magic Leap, Inc. Deep learning system for cuboid detection
US10878310B2 (en) * 2016-11-29 2020-12-29 Mellanox Technologies, Ltd. Accelerated convolution in convolutional neural networks
US10579121B2 (en) * 2017-04-01 2020-03-03 Intel Corporation Processor power management
WO2018209710A1 (zh) * 2017-05-19 2018-11-22 华为技术有限公司 一种图像处理方法及装置
KR102522350B1 (ko) * 2017-06-14 2023-04-14 가부시키가이샤 한도오따이 에네루기 켄큐쇼 촬상 장치 및 전자 기기
WO2019042703A1 (en) * 2017-08-31 2019-03-07 Fotonation Limited DEVICE FOR PERIPHERAL TREATMENT
US11472907B2 (en) 2017-09-04 2022-10-18 Bridgestone Corporation Polymerization catalyst composition, polymer manufacturing method, polymer, rubber composition, and tire
US10265138B2 (en) * 2017-09-18 2019-04-23 MediVis, Inc. Methods and systems for generating and using 3D images in surgical settings
GB2567244A (en) * 2017-10-09 2019-04-10 Nokia Technologies Oy Spatial audio signal processing
US10762620B2 (en) * 2017-11-27 2020-09-01 Nvidia Corporation Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
US11270161B2 (en) * 2017-11-27 2022-03-08 Nvidia Corporation Deep-learning method for separating reflection and transmission images visible at a semi-reflective surface in a computer image of a real-world scene
JP6932205B2 (ja) * 2017-11-30 2021-09-08 三菱電機株式会社 三次元地図生成システム、三次元地図生成方法および三次元地図生成プログラム
FR3078601B1 (fr) * 2018-03-05 2020-10-30 Ioterop Dispositif, systeme et procede de reamenagement d'un objet connecte existant
EP3762681A4 (en) * 2018-03-06 2021-12-01 State of Oregon, acting by and through its state board of higher education, on behalf of Southern Oregon university POSITIONING SYSTEMS AND METHODS USING A DISCRETE GLOBAL NETWORK SYSTEM
US11734477B2 (en) * 2018-03-08 2023-08-22 Concurrent Technologies Corporation Location-based VR topological extrusion apparatus
US11062469B2 (en) * 2018-03-09 2021-07-13 Microsoft Technology Licensing, Llc 4D tracking utilizing depth data from multiple 3D cameras
US10748306B2 (en) * 2018-03-19 2020-08-18 Fuji Xerox Co., Ltd. Encoding device, decoding device, and non-transitory computer readable medium
JP7121523B2 (ja) * 2018-04-10 2022-08-18 キヤノン株式会社 画像表示装置、画像表示方法
US10558430B2 (en) * 2018-04-17 2020-02-11 Fotonation Limited Neural network engine
US10950031B2 (en) * 2018-05-14 2021-03-16 Apple Inc. Techniques for locating virtual objects relative to real physical objects
US10521964B1 (en) * 2018-06-14 2019-12-31 Dell Products, L.P. Switching among disparate simultaneous localization and mapping (SLAM) methods in virtual, augmented, and mixed reality (xR) applications
SG11201811261SA (en) * 2018-06-14 2020-01-30 Beijing Didi Infinity Technology & Development Co Ltd Systems and methods for updating a high-resolution map based on binocular images
GB2575891A (en) * 2018-07-18 2020-01-29 Peerless Ltd Accelerator subsystem with GPU, transportation route price system, cache and method of acceleration of a permutation analysis therefor
KR101953516B1 (ko) * 2018-08-06 2019-02-28 부산대학교 산학협력단 적응적인 데이터율 조절 방법 및 적응적인 데이터율 조절 시스템
US10672178B2 (en) * 2018-08-08 2020-06-02 Alvin D. Zimmerman Ray traversal with virtual grids
US20210213973A1 (en) * 2018-08-29 2021-07-15 Movidius Ltd. Computer vision system
US11467973B1 (en) * 2018-09-28 2022-10-11 Amazon Technologies, Inc. Fine-grained access memory controller
WO2020074059A1 (en) * 2018-10-08 2020-04-16 Telefonaktiebolaget Lm Ericsson (Publ) Improved viewing device and method for providing virtual content overlapping visual objects
US10834543B2 (en) * 2018-11-26 2020-11-10 International Business Machines Corporation Creating a social group with mobile phone vibration
US11995854B2 (en) * 2018-12-19 2024-05-28 Nvidia Corporation Mesh reconstruction using data-driven priors
EP3671660A1 (en) * 2018-12-20 2020-06-24 Dassault Systèmes Designing a 3d modeled object via user-interaction
JP7256758B2 (ja) * 2019-01-30 2023-04-12 バイドゥドットコム タイムズ テクノロジー (ベイジン) カンパニー リミテッド 自動運転車両においてrnnとlstmを用いて時間平滑化を行うlidar測位
US20200250842A1 (en) * 2019-01-31 2020-08-06 Samsung Electronics Co., Ltd. Method and apparatus with convolution neural network processing
US11866167B2 (en) * 2019-04-10 2024-01-09 Rhoman Aerospace Corporation Method and algorithm for flight, movement, autonomy, in GPS, communication, degraded, denied, obstructed non optimal environment
US11188671B2 (en) 2019-04-11 2021-11-30 Bank Of America Corporation Distributed data chamber system
US10698562B1 (en) * 2019-04-30 2020-06-30 Daqri, Llc Systems and methods for providing a user interface for an environment that includes virtual objects
KR20200133863A (ko) * 2019-05-20 2020-12-01 삼성전자주식회사 첨단 운전자 지원 장치, 이의 캘리브레이션 방법 및 이의 객체를 검출하는 방법
JP7268481B2 (ja) * 2019-05-22 2023-05-08 トヨタ自動車株式会社 情報処理装置、自律走行車両、情報処理方法及びプログラム
US11277277B2 (en) * 2019-06-03 2022-03-15 International Business Machines Corporation Indoor environment personalization preferences
US10964043B2 (en) * 2019-06-05 2021-03-30 Icatch Technology, Inc. Method and measurement system for measuring dimension and/or volume of an object by eliminating redundant voxels
CN110210456A (zh) * 2019-06-19 2019-09-06 贵州理工学院 一种基于3d卷积神经网络的头部姿态估计方法
DE102019116715A1 (de) * 2019-06-20 2020-12-24 Gritworld GmbH Computerimplementiertes Verfahren und programmierbares System zum Rendern eines 2D/3D-Modells
WO2020262824A1 (ko) * 2019-06-26 2020-12-30 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
KR102292195B1 (ko) * 2019-07-04 2021-08-24 엘지전자 주식회사 포인트 클라우드 데이터 송신 장치, 포인트 클라우드 데이터 송신 방법, 포인트 클라우드 데이터 수신 장치 및 포인트 클라우드 데이터 수신 방법
CN112215880B (zh) * 2019-07-10 2022-05-06 浙江商汤科技开发有限公司 一种图像深度估计方法及装置、电子设备、存储介质
US11754715B2 (en) * 2019-07-11 2023-09-12 Baidu Usa Llc Point cloud format optimized for LiDAR data storage based on device property
CN110347163B (zh) * 2019-08-07 2022-11-18 京东方科技集团股份有限公司 一种无人驾驶设备的控制方法、设备及无人驾驶控制系统
US11120611B2 (en) * 2019-08-22 2021-09-14 Microsoft Technology Licensing, Llc Using bounding volume representations for raytracing dynamic units within a virtual space
US11958183B2 (en) 2019-09-19 2024-04-16 The Research Foundation For The State University Of New York Negotiation-based human-robot collaboration via augmented reality
US11120101B2 (en) * 2019-09-27 2021-09-14 Arm Limited Matrix multiplication system and method
GB2588229A (en) * 2019-10-18 2021-04-21 Sony Interactive Entertainment Inc Navigation system and method
US11145117B2 (en) * 2019-12-02 2021-10-12 At&T Intellectual Property I, L.P. System and method for preserving a configurable augmented reality experience
US11687778B2 (en) 2020-01-06 2023-06-27 The Research Foundation For The State University Of New York Fakecatcher: detection of synthetic portrait videos using biological signals
CN114930863B (zh) * 2020-01-09 2023-08-08 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN115398936A (zh) 2020-02-14 2022-11-25 奇跃公司 多应用音频渲染
US11568021B2 (en) 2020-02-21 2023-01-31 Alibaba Group Holding Limited Vector-vector multiplication techniques for processing systems
CN111353992B (zh) * 2020-03-10 2023-04-07 塔里木大学 一种基于纹理特征的农产品缺陷检测方法及系统
CN115398926B (zh) * 2020-04-14 2023-09-19 Lg电子株式会社 点云数据发送装置、点云数据发送方法、点云数据接收装置和点云数据接收方法
CN111680626A (zh) * 2020-06-09 2020-09-18 重庆大学 一种基于多层卷积神经网络的水环境遥感数据建模方法
US11709225B2 (en) * 2020-06-19 2023-07-25 Nxp B.V. Compression of data employing variable mantissa size
US20210407168A1 (en) * 2020-06-30 2021-12-30 Intel Corporation Apparatus and method for approximate trilinear interpolation for scene reconstruction
US20210407039A1 (en) * 2020-06-30 2021-12-30 Intel Corporation Apparatus and method for approximate trilinear interpolation for scene reconstruction
US11257281B2 (en) * 2020-07-10 2022-02-22 Cesium GS, Inc. Systems and methods for adaptive visual and temporal quality of time-dynamic (4D) volume rendering
JP7341387B2 (ja) * 2020-07-30 2023-09-11 オムロン株式会社 モデル生成方法、探索プログラム及びモデル生成装置
CN112364693B (zh) * 2020-10-12 2024-04-16 星火科技技术(深圳)有限责任公司 基于双目视觉的障碍识别方法、装置、设备及存储介质
CN112002021B (zh) * 2020-10-30 2021-01-22 成都四方伟业软件股份有限公司 一种基于unity3d的聚合打点可视化方法及装置
US11861327B2 (en) 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US11861328B2 (en) 2020-11-11 2024-01-02 Samsung Electronics Co., Ltd. Processor for fine-grain sparse integer and floating-point operations
US11527047B2 (en) 2021-03-11 2022-12-13 Quintar, Inc. Augmented reality system for viewing an event with distributed computing
US11657578B2 (en) 2021-03-11 2023-05-23 Quintar, Inc. Registration for augmented reality system for viewing an event
US11645819B2 (en) 2021-03-11 2023-05-09 Quintar, Inc. Augmented reality system for viewing an event with mode based on crowd sourced images
DE102021208822A1 (de) * 2021-08-12 2023-02-16 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zur Verlustreduzierung bei einer Kommunikationsschnittstelle
CN113506339A (zh) * 2021-09-10 2021-10-15 北京科技大学 设备的工作功率的控制方法、装置及存储介质
US11417069B1 (en) * 2021-10-05 2022-08-16 Awe Company Limited Object and camera localization system and localization method for mapping of the real world
US20230215108A1 (en) * 2021-12-31 2023-07-06 Samsung Electronics Co., Ltd. System and method for adaptive volume-based scene reconstruction for xr platform applications
US20230394762A1 (en) * 2022-06-01 2023-12-07 Rovi Guides, Inc. Systems and methods for neural-network based video encoding
US20230401789A1 (en) * 2022-06-13 2023-12-14 Verizon Patent And Licensing Inc. Methods and systems for unified rendering of light and sound content for a simulated 3d environment
US11776206B1 (en) 2022-12-23 2023-10-03 Awe Company Limited Extended reality system and extended reality method with two-way digital interactive digital twins
CN116805347B (zh) * 2023-08-22 2023-11-10 中国电子科技集团公司第十五研究所 基于体数据六边界面几何构型的体纹理镀膜插值方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050285858A1 (en) * 2004-06-25 2005-12-29 Siemens Medical Solutions Usa, Inc. System and method for fast volume rendering
US20100104199A1 (en) * 2008-04-24 2010-04-29 Gm Global Technology Operations, Inc. Method for detecting a clear path of travel for a vehicle enhanced by object detection
US20110228055A1 (en) * 2010-03-22 2011-09-22 Microsoft Corporation Space skipping for multi-dimensional image rendering
US20150269438A1 (en) * 2014-03-18 2015-09-24 Sri International Real-time system for multi-modal 3d geospatial mapping, object recognition, scene annotation and analytics
US20150294500A1 (en) * 2014-04-11 2015-10-15 Thomas Marshall Tucker Hybrid Dynamic Tree Data Structure and Accessibility Mapping for Computer Numerical Controlled Machining Path Planning
CN105378796A (zh) * 2013-06-12 2016-03-02 微软技术许可有限责任公司 可伸缩体积3d重构
CN105453139A (zh) * 2013-07-17 2016-03-30 微软技术许可有限责任公司 用于3d表面重建的稀疏gpu体素化

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301538B2 (en) * 2003-08-18 2007-11-27 Fovia, Inc. Method and system for adaptive direct volume rendering
US7692648B2 (en) 2006-01-18 2010-04-06 Siemens Medical Solutions Usa, Inc. System and method for empty space skipping in sliding texture based volume rendering by trimming slab polygons
US20080024494A1 (en) * 2006-07-25 2008-01-31 Perumal Poopathy Method and system for image based rendering large volumetric datasets
US8049752B2 (en) * 2006-07-25 2011-11-01 Siemens Medical Solutions Usa, Inc. Systems and methods of determining sampling rates for volume rendering
GB2447494A (en) 2007-03-15 2008-09-17 Linear Algebra Technologies Lt A method and circuit for compressing data using a bitmap to identify the location of data values
US20100010786A1 (en) 2008-07-08 2010-01-14 Cynthia Maxwell Sound synthesis method and software system for shape-changing geometric models
GB2476800A (en) * 2010-01-07 2011-07-13 Linear Algebra Technologies Ltd Sparse matrix vector multiplier using a bit map of non-zero elements to control scheduling of arithmetic operations
WO2012071435A1 (en) * 2010-11-24 2012-05-31 Google Inc. Rendering and navigating photographic panoramas with depth information in a geographic information system
US9116011B2 (en) 2011-10-21 2015-08-25 Here Global B.V. Three dimensional routing
GB2513699B (en) 2013-03-14 2017-01-11 Imagination Tech Ltd 3-D Graphics rendering with implicit geometry
US20150092048A1 (en) 2013-09-27 2015-04-02 Qualcomm Incorporated Off-Target Tracking Using Feature Aiding in the Context of Inertial Navigation
US9761037B2 (en) * 2013-10-17 2017-09-12 Nvidia Corporation Graphics processing subsystem and method for updating voxel representation of a scene
WO2015134662A2 (en) 2014-03-04 2015-09-11 The Trustees Of Columbia University In The City Of New York Regularization of images
US9418458B2 (en) * 2015-01-05 2016-08-16 Superfish Ltd. Graph image representation from convolutional neural networks
US11370422B2 (en) 2015-02-12 2022-06-28 Honda Research Institute Europe Gmbh Method and system in a vehicle for improving prediction results of an advantageous driver assistant system
US20160239706A1 (en) 2015-02-13 2016-08-18 Qualcomm Incorporated Convolution matrix multiply with callback for deep tiling for deep convolutional neural networks
US9754405B1 (en) 2015-08-10 2017-09-05 Ngrain (Canada) Corporation System, method and computer-readable medium for organizing and rendering 3D voxel models in a tree structure
US10643381B2 (en) * 2016-01-12 2020-05-05 Qualcomm Incorporated Systems and methods for rendering multiple levels of detail
US20190206134A1 (en) 2016-03-01 2019-07-04 ARIS MD, Inc. Systems and methods for rendering immersive environments
US9760690B1 (en) 2016-03-10 2017-09-12 Siemens Healthcare Gmbh Content-based medical image rendering based on machine learning
US10078333B1 (en) * 2016-04-17 2018-09-18 X Development Llc Efficient mapping of robot environment
WO2018035507A1 (en) 2016-08-19 2018-02-22 Linear Algebra Technologies Limited Rendering operations using sparse volumetric data
CN114806540A (zh) 2021-01-20 2022-07-29 三星显示有限公司 量子点及包含量子点的油墨组合物、光学构件和电子器件

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050285858A1 (en) * 2004-06-25 2005-12-29 Siemens Medical Solutions Usa, Inc. System and method for fast volume rendering
US20100104199A1 (en) * 2008-04-24 2010-04-29 Gm Global Technology Operations, Inc. Method for detecting a clear path of travel for a vehicle enhanced by object detection
US20110228055A1 (en) * 2010-03-22 2011-09-22 Microsoft Corporation Space skipping for multi-dimensional image rendering
CN105378796A (zh) * 2013-06-12 2016-03-02 微软技术许可有限责任公司 可伸缩体积3d重构
CN105453139A (zh) * 2013-07-17 2016-03-30 微软技术许可有限责任公司 用于3d表面重建的稀疏gpu体素化
US20150269438A1 (en) * 2014-03-18 2015-09-24 Sri International Real-time system for multi-modal 3d geospatial mapping, object recognition, scene annotation and analytics
US20150294500A1 (en) * 2014-04-11 2015-10-15 Thomas Marshall Tucker Hybrid Dynamic Tree Data Structure and Accessibility Mapping for Computer Numerical Controlled Machining Path Planning

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LI YOU ET AL: "Building variable resolution occupancy grid map from stereoscopic system A quadtree based approach", 《2013 IEEE INTELLIGENT VEHICLES SYMPOSIUM(IV)》 *

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110807287A (zh) * 2019-11-05 2020-02-18 广东电网有限责任公司 基于有限元网格在应急抢修布点场景中划分业务网格构建方法
CN112090078B (zh) * 2020-08-13 2021-10-15 深圳中清龙图网络技术有限公司 游戏角色移动控制方法、装置、设备和介质
CN112090078A (zh) * 2020-08-13 2020-12-18 深圳中清龙图网络技术有限公司 游戏角色移动控制方法、装置、设备和介质
CN112068791A (zh) * 2020-09-04 2020-12-11 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112068791B (zh) * 2020-09-04 2024-01-23 京东方科技集团股份有限公司 旋转显示设备的显示数据的存储方法、寻址方法及设备
CN112295225A (zh) * 2020-11-02 2021-02-02 不鸣科技(杭州)有限公司 一种寻路网格的多线程更新方法
US20220148204A1 (en) * 2020-11-11 2022-05-12 Toyota Research Institute, Inc. Network architecture for the joint learning of monocular depth prediction and completion
US11663729B2 (en) * 2020-11-11 2023-05-30 Toyota Research Institute, Inc. Network architecture for the joint learning of monocular depth prediction and completion
CN113365370A (zh) * 2021-05-24 2021-09-07 内蒙古工业大学 一种基于LoRa技术的智能移动系统
CN113419539A (zh) * 2021-07-14 2021-09-21 燕山大学 具有复杂地形可通过性判断的移动机器人路径规划方法
CN113419539B (zh) * 2021-07-14 2022-07-01 燕山大学 具有复杂地形可通过性判断的移动机器人路径规划方法
CN114371998A (zh) * 2021-12-31 2022-04-19 华南理工大学 一种基于考虑约束的并行广度优先搜索的架构测试方法
CN114371998B (zh) * 2021-12-31 2024-06-11 华南理工大学 一种基于考虑约束的并行广度优先搜索的架构测试方法
CN117312608A (zh) * 2023-08-14 2023-12-29 河海大学 一种基于深度优先搜索的河网节点简并方法
CN117312608B (zh) * 2023-08-14 2024-06-04 河海大学 一种基于深度优先搜索的河网节点简并方法

Also Published As

Publication number Publication date
US20210118217A1 (en) 2021-04-22
WO2018035505A1 (en) 2018-02-22
EP3501009A1 (en) 2019-06-26
WO2018035508A1 (en) 2018-02-22
US11965743B2 (en) 2024-04-23
CN117197314A (zh) 2023-12-08
US20190180499A1 (en) 2019-06-13
US11222459B2 (en) 2022-01-11
US20240011777A1 (en) 2024-01-11
EP3501010A1 (en) 2019-06-26
US20190180409A1 (en) 2019-06-13
KR20190111007A (ko) 2019-10-01
US11920934B2 (en) 2024-03-05
WO2018035507A1 (en) 2018-02-22
EP3501008A1 (en) 2019-06-26
CN117764811A (zh) 2024-03-26
EP3501010B1 (en) 2023-11-01
EP3501009A4 (en) 2020-02-12
CN110392903A (zh) 2019-10-29
US20240094003A1 (en) 2024-03-21
CN110392902A (zh) 2019-10-29
WO2018035506A1 (en) 2018-02-22
US20190188899A1 (en) 2019-06-20
US20230044729A1 (en) 2023-02-09
CN110392902B (zh) 2024-01-12
EP3501011A4 (en) 2020-09-09
EP3501011A1 (en) 2019-06-26
US20220148251A1 (en) 2022-05-12
EP3501008A4 (en) 2020-04-22
CN110494895A (zh) 2019-11-22
US10748326B2 (en) 2020-08-18
EP3501010A4 (en) 2020-02-19
US20200158514A1 (en) 2020-05-21
US11680803B2 (en) 2023-06-20
US11037361B2 (en) 2021-06-15
CN110494895B (zh) 2023-09-19
US11593987B2 (en) 2023-02-28
US10861217B2 (en) 2020-12-08
US20240118086A1 (en) 2024-04-11
KR102546996B1 (ko) 2023-06-26
CN110383340B (zh) 2023-07-04
US20210065429A1 (en) 2021-03-04
US20220237855A1 (en) 2022-07-28
US11367246B2 (en) 2022-06-21

Similar Documents

Publication Publication Date Title
CN110383340A (zh) 使用稀疏体积数据进行路径规划
US20240127068A1 (en) Deep learning system
US20210213973A1 (en) Computer vision system
US20210166464A1 (en) Density coordinate hashing for volumetric data
US20240037844A1 (en) 3d structure engine-based computation platform
Zhang et al. Virtual reality design and realization of interactive garden landscape
Kim et al. Rule-Based Modeler Component Design for 3D GIS Software

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
GR01 Patent grant
GR01 Patent grant