首页 / 专利库 / 飞机类型 / 飞行器 / 无人驾驶飞行器 / 完整的传感器扫描的部分时间段的移动自主装置的姿势估计

完整的传感器扫描的部分时间段的移动自主装置的姿势估计

阅读:519发布:2020-05-08

专利汇可以提供完整的传感器扫描的部分时间段的移动自主装置的姿势估计专利检索,专利查询,专利分析的服务。并且公开了用于确定移动自主装置的当前姿势的装置。在 实施例 中,装置可包括: 接口 电路 ,用于接收由光检测和测距(LIDAR) 传感器 输出的检测和测距数据,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子 覆盖 D度扫描的一部分。装置可进一步包括姿势估计电路,该姿势估计电路耦合至接口电路,用于独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供移动自主装置的当前姿势。在实施例中,装置可设置在移动自主装置中。,下面是完整的传感器扫描的部分时间段的移动自主装置的姿势估计专利的具体信息内容。

1.一种用于确定移动自主装置的当前姿势的装置,所述装置包括:
接口电路,用于接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,所述传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及
姿势估计电路,所述姿势估计电路耦合至所述接口电路,用于独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供所述移动自主装置的当前姿势,其中所述装置设置在所述移动自主装置上。
2.如权利要求1所述的装置,其中每个数据量子覆盖d度,并且其中D能被d整除。
3.如权利要求1所述的装置,其中D等于360度。
4.如权利要求1所述的装置,其中T能被t整除。
5.如权利要求3所述的装置,其中d为90度,而t是T的1/4。
6.如权利要求3所述的装置,其中d为1度,而t是T的1/360。
7.如权利要求1-6中任一项所述的装置,进一步包括用于保存至少一次扫描的检测和测距数据的缓冲区。
8.如权利要求7所述的装置,其中所述姿势估计电路每个时间段t访问缓冲区以得到一次扫描的检测和测距数据。
9.如权利要求8所述的装置,进一步包括驱动器,所述驱动器每个时间段t访问缓冲区并向所述姿势估计电路提供一次扫描的检测和测距数据。
10.如权利要求9所述的装置,其中LIDAR传感器发出同步信号以指示其实际何时完成扫描,并且其中所述驱动器独立于所述同步信号每个时间段t将一次扫描的检测和测距数据提供给所述姿势估计电路。
11.如权利要求1所述的装置,其中为了确定和提供当前姿势,所述姿势估计电路将所述检测和测距数据变换成点,并且通过将所述点云与参考图匹配来确定当前姿势。
12.如权利要求11所述的装置,其中所述姿势估计电路包括处理器以及由所述处理器操作的检测和测距数据变换程序,以将所述检测和测距数据变换成点云。
13.如权利要求12所述的装置,其中所述姿势估计电路包括用于通过将所述点云与参考图匹配来确定当前姿势的硬件加速器。
14.如权利要求13所述的装置,其中所述硬件加速器包括FPGA。
15.如权利要求1所述的装置,其中所述移动自主装置是机器人
16.如权利要求1所述的装置,其中所述移动自主装置是自主自动驾驶汽车
17.如权利要求1所述的装置,其中所述移动自主装置是无人驾驶飞行器(UAV)。
18.一种用于由用于确定移动自主装置的当前姿势的所述移动自主装置上的计算机设备执行的方法,所述方法包括:
通过所述计算机设备接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,所述光检测和测距传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及
通过所述计算机设备独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供所述移动自主装置的当前姿势。
19.如权利要求18所述的方法,其中每个数据量子覆盖d度,其中D能被d整除,并且其中T能被t整除。
20.如权利要求18所述的方法,其中D等于360度,并且d为90度。
21.如权利要求18-20中任一项所述的方法,进一步包括通过所述计算机设备将至少一次扫描的检测和测距数据存储在缓冲区中,以及通过所述计算机设备每个时间段t访问所述缓冲区以得到一次扫描的检测和测距数据。
22.如权利要求21所述的方法,其中确定和提供当前姿势包括通过所述计算机设备将所述检测和测距数据变换成点云,并且通过将所述点云与参考图匹配来确定当前姿势。
23.如权利要求22所述的方法,其中所述计算机设备包括硬件加速器,并且其中确定当前姿势包括通过所述硬件加速器将所述点云与参考图匹配。
24.如权利要求22所述的方法,其中所述移动自主装置是机器人、自主自动驾驶汽车或无人驾驶飞行器(UAV)中的至少一个。
25.一种或多种非瞬态计算机可读存储介质,包括多条指令,所述多条指令响应于被执行而使计算设备执行如权利要求18-24中任一项所述的方法。

说明书全文

完整的传感器扫描的部分时间段的移动自主装置的姿势估计

技术领域

[0001] 各实施例总体上涉及移动自主装置的领域,并且具体地涉及在完整的传感器扫描的部分时间段处针对此类装置的姿势估计。

背景技术

[0002] 本文中所提供的背景描述是出于总体上呈现本公开的上下文的目的。除非在本文中另有指示,否则本部分中描述的材料不是本申请中的权利要求现有技术,并且不因为包含在本部分中而被承认为现有技术。
[0003] 诸如机器人、自动驾驶汽车或无人驾驶飞行器(UAV)之类的移动自主装置需要实时地确定其当前姿势(位置和定向)。通常通过对由传感器获得的测距数据进行操作的姿势估计算法来执行此过程(通常称为定位)。
[0004] 在大多数设计中,姿势是根据经由光检测和测距(LIDAR)传感器、相机和/或其他类型的传感器获得的传感器数据估计的。对于基于LIDAR的设计,通常在LIDAR设备中存在激光扫描仪,该激光扫描仪以特定频率(通常为5~40Hz)旋转,以获取完整或接近完整的环境视图。通常,每当装置接收新的扫描数据集时,装置更新姿势估计。因此,姿势估计频率受到激光扫描仪的旋转速率的限制。当需要较高频率的姿势估计时,必须选择较高端LIDAR设备,这通常会增加成本。附图说明
[0005] 通过下列结合附图的详细描述,将容易地理解实施例。为了便于该描述,相同的附图标记指示相同的结构元件。通过示例方式而非通过限制的方式在附图的各图中示出实施例。
[0006] 图1示出根据本公开的各实施例的使用LIDAR传感器数据的分段的姿势估计输入和姿势估计周期的示例,该LIDAR传感器数据的分段是数据的完整周期的部分。
[0007] 图2示出用于保存传感器数据的示例移动缓冲区的内容以及
[0008] 图3示出根据各实施例的具有和不具有LIDAR驱动器支持的部分姿势估计确定的比较。
[0009] 图4示出根据各实施例的用于使用数据的完整周期的部分来实时地确定自主装置的所估计姿势的过程的操作流程的概览。
[0010] 图5示出根据各实施例的用于使用具有延迟的完整周期的数据的部分来确定自主装置的所估计姿势的过程的操作流程的概览。
[0011] 图6图示出根据各实施例适用于实施本公开的计算机设备的框图
[0012] 图7图示出根据各实施例的具有指令的示例计算机可读存储介质,这些指令被配置成用于实施图4和图5中所示的过程的方面。

具体实施方式

[0013] 在实施例中,可以提供用于确定移动自主装置的当前姿势的装置。装置可包括接口电路,用于接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,该传感器每时间段T地在名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分。装置可进一步包括姿势估计电路,该姿势估计电路耦合至接口电路,用于独立于LIDAR传感器何时实际完成每次扫描而每部分时间段t地确定并提供移动自主装置的当前姿势。在实施例中,该装置可设置在移动自主装置中。
[0014] 在实施例中,姿势确定装置可显著地增加移动自主装置能够执行姿势估计的频率。
[0015] 在实施例中,移动自主装置可以是机器人、自动驾驶或计算机辅助驾驶交通工具、无人驾驶飞行器(UAV)或“无人机”等。
[0016] 下列具体实施方式参考了所附附图。可在不同附图中使用相同的附图标记来标识相同的或类似的元素。在以下的描述中,为了解释而非限制的目的,阐述了诸如特定结构、架构、接口、技术等具体细节,以便提供对各实施例的各方面的全面理解。然而,对受益于本公开的本领域技术人员将显而易见的是,可在脱离这些具体细节的其他示例中实施的所要求保护的各实施例的各方面。在某些实例中,省略了对公知的设备、电路和方法的描述,以免因不必要的细节而使各实施例的描述模糊。
[0017] 可以按在理解要求保护的主题时最有帮助的方式将各操作描述为依次的多个分立动作或操作。然而,描述的次序不应当被解释为暗示这些操作必然依赖于次序。具体而言,可以不按照呈现的次序执行这些操作。能以不同于所描述的实施例的次序执行所描述的操作。在附加的实施例中,可执行各种附加操作或可省略所描述的操作。
[0018] 如本文(包括权利要求书中)所使用的,术语“电路”可指代以下各项,可以是以下各项的部分,或者可包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件固件程序的处理器(共享的、专用的、或组)和/或存储器(共享的、专用的、或组)、组合逻辑电路和/或提供所描述功能的其他合适的硬件组件。在一些实施例中,电路能以一个或多个软件或固件模实现,或者与电路相关联的功能可由一个或多个软件或固件模块实现。在一些实施例中,电路可包括在硬件中至少部分地可操作的逻辑。
[0019] 在以下描述中,参考形成本文一部分的附图,其中贯穿各附图相同的标记指示相同的部分,并且其中通过图示的方式示出了可实施的实施例。应理解,可利用其他实施例,并且可作出结构或逻辑的改变而不背离本公开的范围。因此,以下详细描述不应以限制的意义来理解,并且实施例的范围由所附权利要求及其等效方案来限定。
[0020] 按照在理解要求保护的主题时最有帮助的方式,可将各种方法的操作依次描述为多个分立的动作或操作。然而,不应将描述的次序解释为暗示这些操作必然依赖于次序。具体而言,可以不按照呈现的次序执行这些操作。能以不同于所描述的实施例的次序执行所描述的操作。在附加的实施例中,可执行各种附加操作和/或可省略、拆分或组合所描述的操作。
[0021] 出于本公开的目的,短语“A和/或B”意指(A)、(B)或(A和B)。出于本公开的目的,短语“A、B和/或C”意思是(A)、(B)、(C)、(A和B)、(A和C)、(B和C)或(A、B和C)。
[0022] 说明书可使用短语“在实施例中”或“在多个实施例中”,其可各自指代相同或不同实施例中的一个或多个。此外,如相对于本公开的实施例所使用的术语“包含”、“包括”、“具有”等是同义的。
[0023] 而且,应注意的是,实施例可被描述为被描绘成流程表、流程图、数据流图、结构图或框图的过程。虽然流程表可将操作描述为顺序过程,但可并行、并发或同时执行这些操作中的许多操作。另外,可重新布置操作的次序。过程可能会在其操作被完成时被终止,但也可能具有未包含在(多个)附图中的附加步骤。过程可对应于方法、函数、程序、子例程、子程序等等。当过程对应于函数时,该过程的终止可能对应于该函数返回到调用函数和/或主函数。此外,过程可通过硬件、软件、固件、中间件微码、硬件描述语言或其任何组合来实现。当以软件、固件、中间件或微码实现时,执行必要任务的程序代码或代码段可被存储在机器或计算机可读介质中。代码段可表示程序、函数、子程序、程序、例程、子例程、模块、程序代码、软件包、类、或指令、数据结构、程序状态等的任何组合。
[0024] 如下文(包括权利要求书)所使用的,术语“电路”可指代以下各项,可以是以下各项的部分,或者可包括以下各项:专用集成电路(ASIC)、电子电路、执行一个或多个软件或固件程序的处理器(共享的、专用的、或组,包括一个或多个数据流机器的处理元件(PE))和/或存储器(共享的、专用的、或组)、可编程组合逻辑电路(例如,现场可编程阵列(FPGA))和/或提供所描述功能的其他合适的硬件组件。在一些实施例中,电路可实现一个或多个软件或固件模块,或者与电路相关联的功能可由一个或多个软件或固件模块实现。
[0025] 如下文(包括权利要求书)所使用,术语“存储器”可表示用于存储数据的一个或多个硬件设备,包括随机存取存储器(RAM)、磁RAM、磁芯存储器、只读存储器(ROM)、磁盘存储介质、光存储介质、闪存设备和/或用于存储数据的其他机器可读介质。术语“计算机可读介质”可包括但不限于存储器、便携式或固定式存储设备、光存储设备、无线信道、以及能够存储、包含或携带(多条)指令和/或数据的各种其他介质。
[0026] 如所提及的,通常,LIDAR设备在扫描仪旋转的同时,经由某种类型的串行通信协议将数据从其激光扫描仪实时地发送到主机处理器。然后,当扫描仪旋转通过预定义的度(例如,360°)时,LIDAR设备将同步信号发送到主机处理器。然后,主机处理器知道扫描周期已经结束,并且它可以使用该周期中的所扫描数据执行姿势估计。在实施例中,主机处理器不需要等待同步信号来确定所估计的姿势。实际上,在实施例中,主机处理器可以在每次接收到代表完整扫描的部分的所扫描数据的可编程分段时执行姿势估计。例如,对于标准的360°扫描周期,在实施例中,可以在已经接收到每个90°的扫描数据的分段之后进行姿势估计,从而使姿势估计的频率增加四倍。在实施例中,为了确保估计器仍然具有环境的完整视图,如在常规解决方案中,主机处理器可以为分段保留扫描数据以进行若干估计,并将所存储的数据与新接收的分段重新组合。
[0027] 在实施例中,可以降低系统成本。对于某些用例,经常需要姿势估计。例如,如果希望快速移动机器人,假设以2m/s的速度(这是人类的快走速度),则以5-10Hz进行姿势估计,这是低端LIDAR的典型旋转速度,可能太慢而无法避开障碍物并且进行电机控制,因为机器人会在每个扫描周期内前进高达20-40cm。为了提供跟上机器人速度的姿势估计,要么需要选择(具有例如,40Hz的旋转速率的)高端LIDAR,要么要实现各实施例以用低端LIDAR设备获得高频率的姿势估计。
[0028] 另外,在实施例中,可以增强姿势估计的鲁棒性。大多数姿势估计方案是迭代式的,这意味着算法将上一周期的姿势估计作为当前周期的姿势估计的初始值。如果当前周期的基础事实姿势与该初始值相距太远,则算法可能会失败。因为在实施例中,姿势估计的周期可以大大被缩短,所以这可能导致相邻周期的连续姿势之间的差异较小,从而可以降低姿势估计失败的可能性。
[0029] 图1示出根据各实施例实现的示例LIDAR设备,其获取每个角度的扫描数据。如上所述,在实施例中,每当已经获得少量扫描数据时就可以调用姿势估计,这与在常规解决方案中等待整个周期的扫描数据不同。图1示出了可以如何重新组合扫描数据以确保姿势估计算法始终具有完整视图。
[0030] 参考图1,可以看出,姿势估计输入120包括360度的扫描数据。此外,在图1的示例中,姿势估计输入120每秒被提供给主机处理器(未示出)中的姿势估计算法,每个周期总共360个姿势估计125,姿势估计频率增加到360倍。这是通过使用新1度的扫描数据(实质上是一个扫描数据点)与紧接在前的359度的扫描数据相结合的姿势估计输入120中的每个来完成的。因此,例如,姿势估计输入#3使用紧接在前扫描的2°至359°的数据点,以及当前正在进行的扫描的0°和1°的数据点,其中后者是新获取的扫描数据点。在实施例中,通过维持移动缓冲区在滚动的基础上存储完整的360°的扫描数据来促进图1的过程,如下面结合图2所述。
[0031] 注意,在图1的示例中,假定激光扫描仪每个周期从0°至359°感测360次。注意,这是说明性示例,并且在实践中,角度的范围和间隔可以不同。因此,例如,扫描仪可以从0°至270°每0.25°扫描一次,或者甚至可以不固定。在实施例中,可以使用角度间隔和范围的数个变型。例如,发明人成功地使用RPLidar A2 LIDAR设备实现了实施例,该设备以不均匀的角度间隔每360°周期扫描400次。
[0032] 在此还要注意的是,在图1中,姿势估计被示出为针对每个单个扫描数据点被调用。这也是说明性示例,而不是必需的。实际上,在一些情况下,由于计算资源的限制或其他原因,因此这可能是不切实际的。因此,例如,在RPLidar A2设备上实现的实施例中,每当(从每周期总共400次扫描中)获得32个新扫描数据点的分段时,调用姿势估计。因此,在该示例实现中,姿势估计的速率增加到12.5倍(400/32)而不是400倍。
[0033] 图2图示出根据各实施例的缓冲区200。参考图2,示出了在三个连续的扫描周期期间的缓冲区200的内容:T0 210,T1 220和T3 230。在该示例中,缓冲区200以扫描周期的1/4的部分获得扫描数据,或者针对花费时间段T来完成完整扫描的传感器,缓冲区每部分时间段t获得数据增量,其中t为T/4。因此,以图1的每个周期360次扫描为例,每个分段包括90度的扫描数据。
[0034] 结果,缓冲区在扫描周期期间四次获得新数据分段,并且因此始终维护数据的四个分段:新分段和紧接在前的三个分段。因此,数据的四个分段被输入到姿势估计算法,该姿势估计算法可以在处理器中或者在诸如FPGA的硬件加速器中运行,如下文更充分地描述。
[0035] 继续参考图2,在缓冲区内容随时间变化的图示的右侧,存在三列,T姿势250、t姿势260以及精度270,T姿势250和t姿势260中的每个指代姿势估计,精度270表示t姿势估计260比T姿势估计更精确还是和T姿势估计一样精确。根据各实施例,T姿势250提供仅通过每个扫描周期计算一次姿势而得到姿势估计,而t姿势260提供其中在获得扫描数据的每个部分分段之后估计姿势的姿势估计。
[0036] 继续参考图2,在210处示出了第一扫描周期T0的缓冲区内容。每行示出了移动缓冲区200在其时间段开始时的内容。注意,缓冲区中的每个连续行示出了下一个t间隔的内容,并且因此缓冲区200中的任何两个连续行之间的时域距离是部分时间t。由于t=T/4,因此每个扫描周期示出缓冲区的四个配置。最初,在211处,其中t=0,没有数据存储在移动缓冲区200中。在212处,其中时间t=1,第一分段输入扫描T0,如该行的最左侧所示。在行213和214处,在时间t=2和t=3处,第二和第三数据分段分别进入缓冲区,使得在214(扫描T0的最后配置)处存储有三个数据分段。注意,由于数据分段直到获取后的一段时间才可用,因此仅在扫描T1的第一分段期间(代表扫描周期T1开始时的缓冲区内容),来自扫描T0的全部数据可用。
[0037] 因此,在时间t=4处,在扫描周期T1的开始处,如行221所示,扫描数据的全部四个分段现在可用于计算所估计的姿势。在此,T姿势250示出P0,即第一完整扫描周期姿势,而t姿势基于部分数据分段示出P11,即根据本文实施例的第一姿势。注意,为便于说明,t姿势值在“P”上有一个“帽子”。由于P0和P11使用同一数据,因此它们的精度相等,如精度270列中的“=”符号所指示。因此,姿势P0与部分姿势P11相同,因为它们使用同一输入数据集。
[0038] 继续参考图2,在行222至224处,扫描T1的接下来的三个部分数据分段进入移动缓冲区200,使得在行224处,在扫描周期T1的最后部分时间间隔的开始处,移动缓冲区200具有T1的三个数据分段和扫描T0的最后数据分段。另外,在行222-224中的每行处,虽然T姿势250不变,但t姿势改变。因此,在行222、223和224中的每行处,基于T0和T1数据分段的混合来计算t姿势P12、P13和P14,如图所示。由于这些t姿势各自使用的数据比T姿势260P0更新,因此它们每个都具有比P0更高的精度,如精度列270中所示,其中t姿势P12、P13和P14中的每个被示出为具有比P0更高的精度,通过“>”符号指示。
[0039] 因此,在时间t=8处,在扫描周期T2的开始处,如行231所示,T1扫描的全部四个数据分段现在可用于计算所估计的姿势。在此,T姿势250示出P1,即第二完整扫描周期姿势,而t姿势示出P21,即,使用T1扫描全部数据的第一姿势。如上所述,由于P1和P21使用同一数据,因此它们的精度近似相等,如精度270列中“~”符号所指示。然而,注意到,它们并不完全相等,由于姿势估计的输出还取决于前一周期的输出,因此,在实施例中,可以增强姿势估计的鲁棒性。因此,即使姿势P21和姿势P1基于同一数据,姿势P21也比姿势P1更精确,因为姿势P21还基于先前的姿势P14,而姿势P1仅基于先前的姿势P0。
[0040] 进一步继续参考图2,在代表时间t=9至t=11的行232至234处,扫描T2的接下来的三个部分数据分段进入移动缓冲区200,使得在行234处,在扫描周期T2的最后部分时间间隔的开始处,缓冲区具有T2的三个数据分段和扫描T1的最后数据分段。如上所述,在行232-234中的每行处,虽然T姿势250不变,但t姿势改变。因此,在行232、233和234中的每行处,基于T1和T2数据分段的混合来计算t姿势P22、P23和P24,如图所示。由于这些t姿势各自使用的数据比T姿势260P1更新,因此它们每个都具有比P1更高的精度,如精度列270中所示,其中t姿势P22、P23和P24中的每个被示出为具有比P0更高的精度,通过“>”符号指示。
[0041] 可以理解,扫描速率与待存储在移动缓冲区200中的部分数据分段的数量之间存在关系。假设LIDAR设备每秒旋转R转,并且每秒扫描S次,则每个扫描周期中将生成S/R个扫描数据。进一步假设数量P的数据被封装在一起以在LIDAR设备与主机之间传输,则在实施例中, 个分段可以被保持在缓冲区中。
[0042] 如上所述,在图2中所示的实施例在每个扫描周期期间的若干间隔期间获得部分数据。因此,执行姿势估计算法的主机处理器独立于LIDAR传感器可以输出的扫描周期同步信号进行操作,并且可以根据其自己定义的数据分段以部分时间t的间隔计算姿势估计。注意,在其中LIDAR设备的驱动器可被访问并且有此指示LIDAR设备向主机处理器提供部分数据分段的实施例中,这是可能的。有时可能无法更改LIDAR设备的数据输出参数。但是,在替代的实施例中,即使不访问LIDAR设备的驱动器,也可能加快姿势估计频率,如下面参考图3所述。
[0043] 图3示出三种场景下LIDAR设备提供的扫描数据的时序与基于该数据的姿势估计的相对应时序的比较。三种场景包括完整周期315,、有驱动器支持的分割330和无驱动器支持的分割350,其中如上所述,该完整周期315是数据姿势估计的标准的LIDAR完整周期。出于对在两个所示实施例330和350中的扫描数据传送和姿势估计的时序的比较目的和便于说明,提供了完整周期315的信息。
[0044] 参考图3,在完整周期315中,必须在可能发生姿势估计之前收集数据的完整扫描。在图3中,术语“SLAM”用于姿势估计,指“同时定位和映射算法”。因此,扫描周期D1的姿势估计P1 340短时间地进入扫描周期D2,如图所示。类似地,扫描周期D2的姿势估计P2 342短时间地进入扫描周期D32,也如图所示。该延迟是接收到输入到计算的数据之后执行SLAM计算所花费的有限时间的特征,并且在315、330和350中的每个场景中基本上相同。
[0045] 进一步继续参考图3,第二场景(有驱动器支持的分割)是图1和图2中所示的场景。如所预期的,每个扫描周期有四个SLAM计算。例如,如在扫描周期D2期间所示,P1.4、P2.1、P2.2和P2.3。SLAM P1.4对在扫描周期D1期间获得的四个部分数据分段(即D1.1、D1.2、D1.3和D1.4)进行操作,这四个部分数据分段类似于如图2的行221中所示的扫描周期T0的四个部分数据分段。SLAM P2.1在P1.4之后的部分时间t处,SLAM P2.1对D1和D2数据的混合集(即D1.2、D1.3、D1.4和D2)进行操作,如上所述。如图3中可见,每个SLAM计算都在获得其数据的上一分段之后的一定时间处结束。因此,在场景330中,P1.4在t1处数据分段D1.4结束之后的一定时间t2完成,而SLAM P2.1在数据分段D2.1结束之后的一定时间完成。在该示例中,SLAM计算的延迟(t2-t1)小于一个部分时间段的时间间隔t331。此外,P1.4与P1相当,但是如上所述,P1.4与P1是不一样的,因为SLAM的输出还取决于前一周期的输出,这是为何如上所述,各实施例可以增强鲁棒性。
[0046] 现在转到图3的场景350,即“无驱动器支持的分割”场景,尽管在该场景中,主机处理器通过缓冲和延迟计算而每次接收到整个周期的扫描数据,但是可以假装在主机处理器内,扫描数据顺序地出现,因此可以以部分分段对这些分段执行快速扫描(FastScan)以优化扫描数据处理。注意,为了方便起见,本文的实施例可称为“快速扫描(FastScan)”。此外,在场景350的实施例中,可以基本上任意地指定分段,仅受主机计算机在执行SLAM计算时的计算能和容量所限制。
[0047] 继续参考图3,如场景350中所示,由于快速扫描必须在其可以处理将D1数据划分成的各个分段之前等待接收所有D1数据,因此快速扫描计算P1.1、P1.2、P1.3和P1.4都在数据周期D2期间顺序进行。如图所示,这在场景330之上引入了附加的延迟360,如图所示,该场景330在t1处扫描周期D1结束后的短时间t2输出了所估计的姿势P1.4,而在场景350中,姿势P1.4在时间t3输出,其中(t3-t2)=延迟360。在实施例中,附加延迟360可以严格小于一个扫描周期的周期365,这在大多数应用中是可接受的。
[0048] 接下来描述的图4和图5分别示出了根据场景330和场景350的实施例的用于自主装置的姿势估计的过程的操作流程的概览。此类自主装置可以是机器人、自动驾驶或计算机辅助驾驶交通工具、无人驾驶飞行器(UAV)或“无人机”等。接下来描述这些图。
[0049] 图4示出根据各实施例的用于使用数据的完整周期的部分来确定自主装置的姿势的过程的操作流程的概览。图4的过程可以由如图6中所示的计算机设备600执行。如图所示,过程400可包括在框410-460处执行的操作。过程400可以在框410处开始。在框410处,可以获得部分时间段t的LIDAR传感器数据的新分段。过程400可以从框410进行至框420,在框420中,可以从缓冲区(例如,在下文中描述的图6的计算机设备600中提供的LIDAR数据缓冲区655或如上所述图2中示出的缓冲区200)清除传感器数据的最老的部分分段。
[0050] 继续参考图4,过程400可以从框420进行至框430,在框430中,可以将数据的新分段与先前所接收的LIDAR传感器数据的分段组合以供估计(部分)时间段t的姿势。过程400可以从框430进行至框440,在框440中,用于时间段t处姿势估计的LIDAR传感器数据(如所提及的,其包括最新所接收的分段和足够早以前所接收的分段以包括时间T的传感器数据)可以被变换成点。过程400可以从框440进行至框450,在框450中,通过将点云与参考图进行匹配,估计自主装置在(部分)时间段t处的当前姿势。过程400可以从框450进行至框460,在框460中,可以将在时间段t的自主装置的所估计的当前姿势提供给各种客户端(诸如运动控制器等)。在框460,过程400可以返回到框410,并接收下一部分数据分段,如果没有,则过程400可以终止。
[0051] 图5示出了根据实施例的用于使用完整周期的数据的多个部分对自主装置进行姿势估计的过程的操作流程的概览,在该实施例中,主机处理器一次接收一个完整扫描周期的数据,诸如在如上所述的图3的场景350中。图5的过程可以由如图6中所示的计算机设备600执行。如图所示,过程500可包括在框510-550处执行的操作。过程500可以在框510处开始。在框410,可获得对扫描周期T的完整扫描周期的LIDAR传感器数据。过程500可以从框
510进行至框520,在框520中,数据可以被缓冲并且分成多个部分分段,每个部分分段代表部分时间t的数据,t<t。
[0052] 继续参考图5,过程500可以从框520进行至框530,在框530中,可以将时间tk的部分数据分段与紧接在前的部分数据分段tk-1、tk-2、……、tk-n的序列组合以获得用于估计部分时间段tk处的姿势的传感器数据。过程500可以从框530进行至框540,在框540中,用于时间段tk处姿势估计的LIDAR传感器数据(如所提及的,其包括最新所接收的时间tk的分段和足够早以前接收的tk-1、tk-2、……、tk-n的分段以包括时间T的传感器数据)可以被变换成点云。过程500可以从框540进行至框550,在框550中,可以通过将点云与参考图进行匹配来确定时间段tk处自主装置的所估计的当前姿势,并且将所估计的姿势提供给各种客户端(诸如运动控制器等)。如上结合图3的场景350所述,所估计姿势的该确定相对于时间段tk的结束具有某一延迟。过程500可以从框550返回至框510,并接收下一个完整周期的数据,如果没有,则过程500可以终止。
[0053] 图6图示出根据各实施例适用于实施本公开的计算机设备的框图。在详细描述图6之前,首先提供根据各实施例的由示例SLAM程序执行的示例SLAM计算的一些细节。示例计算是上述图4的过程400的特定实现。在实施例中,在姿势估计中可以执行七个任务。(划分任务是任意的,并且仅出于说明目的)。首先,LIDAR设备可以扫描自主装置的环境,然后将数据发送到主机计算机。在实施例中,该数据表示完整扫描周期的部分分段。根据一实施例,可以选择并修改分段所包含的完整扫描周期的部分。第二,主机计算机上的LIDAR驱动器可以预处理数据并将其发布到SLAM程序。第三,SLAM程序可以使用移动缓冲区将扫描数据重新分组,并且还可以决定从缓冲区中清除多少先前所接收的数据,以便始终保持完整周期的扫描数据。第四,SLAM程序可以接收扫描数据(角度+范围)并将其变换为点云,从自主装置的角度来看,该点云包括所有扫描的点的坐标。第五,SLAM程序可以尝试找到点云与图最匹配时的姿势。第六,在可选任务中,SLAM程序可以使用点云和所估计的姿势更新图(如果存在预先构建的图,则可以跳过该任务)。最后,并且第七,SLAM程序可以将所估计的姿势和经更新的图发布给任何感兴趣的客户端。
[0054] 在上述所有任务中,第五项(扫描匹配)可能计算最密集。因此,在实施例中,它可以由FPGA执行,而其他任务(第一项除外)可以由CPU上运行的软件(例如,片上系统(SoC)中提供的ARM CPU)执行。在此类实施例中,每当软件获得包括扫描数据的新分段的数据周期时,它可以将数据变换成点云,并经由共享存储器将点云复制到FPGA。然后,该过程可以例如通过将信号写入共享存储器的预定义地址来调用FPGA中的扫描匹配逻辑。在此类实施例中,FPGA可以执行扫描匹配、写回所估计的姿势并通知软件程序。在一些实施例中,图可以是预先构建并且静态的(每个姿势估计或任何姿势估计后不更新)。在此类实施例中,图可以仅当过程开始时被复制到FPGA。
[0055] 因此,主机处理器可包括:接口电路,用于接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分。
[0056] 主机处理器装置可进一步包括姿势估计电路,该姿势估计电路耦合至接口电路,用于独立于LIDAR传感器何时实际完成每次扫描而确定并提供移动自主装置在每个部分时间段t的当前姿势。
[0057] 在实施例中,主机处理器和LIDAR传感器设备可以设置在移动自主装置上。
[0058] 这里要注意的是,在该示例实现中,实施例越是提高扫描频率(即,减少每个分段的数据点的数量),FPGA要做的工作越多,因此第五项任务在每个扫描周期重复多次(找到点云与图最匹配时的姿势)。
[0059] 给定这些任务的描述,现在参考图6,其中图示出根据各实施例适用于实施本公开的计算机设备的框图。如图所示,计算机设备600可包括SoC 610和系统存储器650。SoC 610可包括一个或多个处理器615、存储器613和硬件加速器(诸如FPGA 620)。根据各实施例,可以将包括扫描匹配逻辑的快速扫描(FastScan)核提供给FPGA 620,以执行姿势估计。
[0060] 系统存储器650可以包括任何已知的易失性或非易失性存储器,并且可包括LIDAR驱动器651。还可以将快速扫描(FastScan)模块653提供给系统存储器650,该快速扫描模块653管理除了在FPGA 620中实现的密集计算之外的上述各种任务。系统存储器650还可包括LIDAR数据缓冲区655,其可以用作如上所述、结合图2描述的缓冲区。应当注意,在替代实施例中,与所示的混合实施例不同,整个快速扫描计算可以以硬件或软件来实现。
[0061] 另外,如上所述,计算机装置600可包括输入端口630(例如,通用串行总线(USB)端口),其可以可通信地连接到LIDAR设备640以接收待缓冲和操作的用于执行姿势估计的传感器数据。在替代的实施例中,可以替代地使用其他串行或并行端口。计算机设备600的元件可经由系统总线612彼此耦合,该系统总线612可表示一个或多个总线。在多个总线的情况下,可由一个或多个总线桥(未示出)桥接它们。
[0062] 这些元件中的每个元件可执行在本领域中已知的其常规功能。具体而言,可以采用系统存储器650来存储LIDAR驱动器651和快速扫描653的编程指令的可执行代码的工作副本和永久副本,其可以被配置成用于实践可分别包括图4的过程400和图5的过程500(的方面)的快速扫描应用。在实施例中,系统存储器650还可包括实现操作系统和一个或多个其他应用的编程指令。编程指令可包括由(多个)处理器615所支持的汇编器指令或可被编译为此类指令的高级语言(诸如例如,C)。
[0063] 可通过例如诸如紧凑盘(CD)、USB存储设备等之类的分发介质(未示出)或通过输入端口630(来自分布式服务器(未示出))将编程指令的可执行代码或用于配置硬件加速器620的位流放置到工厂中或现场的系统存储器650和/或SoC存储器613中。这些元件的数量、能力和/或容量可能取决于示例计算机设备600的预期用途(即,示例计算机设备600嵌入在哪种移动自主装置中)而改变。在其他方面,这些元件的构成是已知的,并相应地将不作进一步描述。
[0064] 图7图示出根据各实施例的具有指令的示例计算机可读存储介质,这些指令被配置成用于分别实现和/或实践之前所述的图4的过程400和图5的过程500(的方面)。如所图示,计算机可读存储介质702可包括数个编程指令或位流704的可执行代码。编程指令(或位流)704的可执行代码可被配置成用于使设备(例如,计算机设备600)能够响应于可执行代码/编程指令的执行(或FPGA 620的操作)而分别执行图4的过程400和图5的过程500(的方面)。在替代实施例中,可执行代码/编程指令/位流704可替代地被设置在多个非瞬态计算机可读存储介质702上。在实施例中,计算机可读存储介质702可以是非瞬态的。在另外的其他实施例中,可执行代码/编程指令704可被编码在诸如信号之类的瞬态计算机可读介质中。
[0065] 注意,所公开的快速扫描实施例已经在具有RPLidar A2(来自思岚(Slamtec)的低端LIDAR产品)的机器人平台中实现。它将姿势估计的频率提高到12.5倍(从10Hz到125Hz),从而增强了姿势估计的鲁棒性。还应注意,机器人或其他自主设备更可能在旋转而不是向前移动时迷路(例如,无法通过SLAM算法跟踪其姿势)。为了解决该问题,对于在若干不同的场景下的两个不同的机器人平台,已经测试了机器人可以旋转而不会迷路的最大角速度。已经发现,使用快速扫描,机器人的旋转速度大约可以快两倍。
[0066] 进一步注意,在替代实施例中,可使用标准计算机(例如,不具有FPGA的台式计算机或 未来计算单元(Next Unit of Computing)(NUC))来实现快速扫描实施例。如所公开的快速扫描实施例还已经在具有RPLidar A2的机器人平台中使用具有 酷睿i7CPU的台式计算机来实现。在该示例实现中,由于更有限的计算能力,因此与FPGA的125Hz相比,姿势估计周期的频率增加到7倍,达到约70Hz。
[0067] 在实施例中,实现本公开的快速扫描的编程指令可被包括在来自LIDAR制造商的设备驱动器/SDK中。
[0068] 下面提供了本文中所公开的技术的说明性示例。这些技术的实施例可包括下文所描述的示例中的任何一个或多个以及其任何组合。
[0069] 示例
[0070] 示例1可包括用于确定移动自主装置的当前姿势的装置,包括:接口电路,用于接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及姿势估计电路,该姿势估计电路耦合至接口电路,用于独立于LIDAR传感器何时实际完成每次扫描而确定并提供每个部分时间段t的移动自主装置的当前姿势。该装置可设置在移动自主装置上。
[0071] 示例2可包括示例1和/或本文中其他示例的装置,其中每个数据量子覆盖d度,而其中D可被d整除。
[0072] 示例3可包括示例1和/或本文中其他示例的装置,其中D等于360度。
[0073] 示例4可包括示例1和/或本文中其他示例的装置,其中T可被t整除。
[0074] 示例5可包括示例3和/或本文中其他示例的装置,其中d为90度,并且t为T的1/4。
[0075] 示例6可包括示例1和/或本文中其他示例的装置,其中d为1度,并且t为T的1/360。
[0076] 示例7可包括示例1和/或本文中其他示例的装置,进一步包括用于保存至少一次扫描的检测和测距数据的缓冲区。
[0077] 示例8可包括示例1-7中任一项和/或本文中其他示例的装置,其中姿势估计电路每个时间段t访问缓冲区以得到一次扫描的检测和测距数据。
[0078] 示例9可包括示例7和/或本文中其他示例的装置,进一步包括每个时间段t访问缓冲区并向姿势估计电路提供一次扫描的检测和测距数据的驱动器。
[0079] 示例10可包括示例9和/或本文中其他示例的装置,其中LIDAR传感器发出同步信号以指示其实际何时完成扫描,并且其中驱动器独立于同步信号,每个时间段t将一次扫描的检测和测距数据提供给姿势估计电路。
[0080] 示例11可包括示例1和/或本文中其他示例的装置,其中为了确定和提供当前姿势,姿势估计电路将检测和测距数据变换成点云,并且通过将点云与参考图匹配来确定当前姿势。
[0081] 示例12可包括示例11和/或本文中其他示例的装置,其中姿势估计电路包括处理器以及由处理器操作的检测和测距数据变换程序,以将检测和测距数据变换成点云。
[0082] 示例13可包括示例12和/或本文中其他示例的装置,其中姿势估计电路包括用于通过将点云与参考图匹配来确定当前姿势的硬件加速器。
[0083] 示例14可包括示例13和/或本文中其他示例的装置,其中硬件加速器包括FPGA。
[0084] 示例15可包括示例1-6中任一项和/或本文任何其他示例的装置,其中移动自主装置是机器人。
[0085] 示例16可包括示例1-6中任一项和/或本文任何其他示例的装置,其中移动自主装置是自主自动驾驶汽车。
[0086] 示例17可包括示例1-6中任一项和/或本文任何其他示例的装置,其中移动自主装置是无人驾驶飞行器(UAV)。
[0087] 示例18可包括由移动自主装置上的计算机设备执行的用于确定移动自主装置的当前姿势的方法,该方法包括:通过计算机设备,接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及通过计算机设备,独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供移动自主装置的当前姿势。
[0088] 示例19可包括示例18和/或本文中其他示例的方法,其中每个数据量子覆盖d度,其中D可被d整除,而其中T可被t整除。
[0089] 示例20可包括示例18和/或本文中其他示例的方法,其中D等于360度,而d为90度。
[0090] 示例21可包括示例18-20中任一项和/或本文中其他示例的方法,进一步包括通过计算机设备,将至少一次扫描的检测和测距数据存储在缓冲区中。
[0091] 示例22可包括示例21和/或本文中其他示例的方法,进一步包括通过计算机设备,每个时间段t访问缓冲区以得到一次扫描的检测和测距数据。
[0092] 示例23可包括示例18和/或本文中其他示例的方法,其中确定和提供当前姿势包括通过计算机设备,将检测和测距数据变换成点云,并且通过将点云与参考图匹配来确定当前姿势。
[0093] 示例24可包括示例23和/或本文中其他示例的方法,其中计算机设备包括硬件加速器,并且其中确定当前姿势包括通过硬件加速器将点云与参考图匹配。
[0094] 示例25可包括示例18-20中任一项和/或本文任何其他示例的方法,其中移动自主装置是机器人。
[0095] 示例26可包括示例18-20中任一项和/或本文任何其他示例的方法,其中移动自主装置是自主自动驾驶汽车。
[0096] 示例27可包括示例18-20中任一项和/或本文任何其他示例的方法,其中移动自主装置是无人驾驶飞行器(UAV)。
[0097] 示例28可包括示例18-20和/或本文中其他示例的方法,其中LIDAR传感器发出同步信号以指示其实际何时完成扫描,并且其中,计算机设备独立于同步信号,每个部分时间段t确定并提供移动自主装置的当前姿势。
[0098] 示例29可包括示例24和/或本文中其他示例的方法,其中硬件加速器包括FPGA。
[0099] 示例30可包括一种或多种包括多条指令的非瞬态计算机可读存储介质,该指令响应于被执行时使计算设备用于:通过计算机设备,接收由光检测和测距(LIDAR)传感器输出的检测和测距数据,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及通过计算机设备,独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供移动自主装置的当前姿势。
[0100] 示例31可包括示例30和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中每个数据量子覆盖d度,其中D可被d整除,而其中T可被t整除。
[0101] 示例32可包括示例30和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中D等于360度,而d为90度。
[0102] 示例33可包括示例30-32中任一项和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,进一步包括通过计算设备,将至少一次扫描的检测和测距数据存储在缓冲区中。
[0103] 示例34可包括示例33和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,进一步包括通过计算设备,在每个时间段t访问缓冲区以得到一次扫描的检测和测距数据。
[0104] 示例35可包括示例30和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中确定和提供当前姿势包括:通过计算设备将检测和测距数据变换成点云,并且通过将点云与参考图匹配来确定当前姿势。
[0105] 示例36可包括示例35和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中计算设备包括硬件加速器,并且其中确定当前姿势包括通过硬件加速器将点云与参考图匹配。
[0106] 示例37可包括示例36和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中硬件加速器包括FPGA。
[0107] 示例38可包括示例30-32中任一项和/或本文任何其他示例的一种或多种非瞬态计算机可读存储介质,其中移动自主装置是机器人。
[0108] 示例39可包括示例30-32中任一项和/或本文任何其他示例的一种或多种非瞬态计算机可读存储介质,其中移动自主装置是自主自动驾驶汽车。
[0109] 示例40可包括示例30-32中任一项和/或本文任何其他示例的一种或多种非瞬态计算机可读存储介质,其中移动自主装置是无人驾驶飞行器(UAV)。
[0110] 示例41可包括权利要求30-32和/或本文中其他示例的一种或多种非瞬态计算机可读存储介质,其中LIDAR传感器发出同步信号以指示其实际何时完成扫描,并且其中计算设备独立于同步信号,每个部分时间段t确定并提供移动自主装置的当前姿势。
[0111] 示例42可包括设置在移动自主装置中的用于计算的设备,包括:用于接收由光检测和测距(LIDAR)传感器输出的检测和测距数据的装置,该传感器每个时间段T名义上进行扫描并以连续多个量子提供D度的检测和测距数据,每个量子覆盖D度扫描的一部分;以及用于独立于LIDAR传感器何时实际完成每次扫描而每个部分时间段t确定并提供移动自主装置的当前姿势的装置,该装置耦合至用于接收的装置。
[0112] 示例43可包括示例41和/或本文中其他示例的用于计算的设备,其中每个数据量子覆盖d度,并且其中D可被d整除。
[0113] 示例44可包括示例42和/或本文中其他示例的用于计算的设备,其中D等于360度。
[0114] 示例45可包括示例43和/或本文中其他示例的用于计算的设备,其中T可被t整除。
[0115] 示例46可包括示例44和/或本文中其他示例的用于计算的设备,其中d为1度,并且t为T的1/4。
[0116] 示例47可包括示例44和/或本文中其他示例的用于计算的设备,其中d为1度,并且t为T的1/360。
[0117] 示例48可包括示例42-48和/或本文中其他示例的用于计算的设备,进一步包括用于保存至少一次扫描的检测和测距数据的存储器设备。
[0118] 示例49可包括示例48和/或本文中其他示例的用于计算的设备,其中用于确定和提供的装置用于每个时间段t访问存储器装置以得到一次扫描的检测和测距数据。
[0119] 示例50可包括示例49和/或本文中其他示例的用于计算的设备,进一步包括用于访问的装置,用于访问存储器装置,并且每个时间段t将一次扫描的检测和测距数据提供给用于确定和提供的装置。
[0120] 示例51可包括示例50和/或本文中其他示例的用于计算的设备,其中LIDAR传感器发出同步信号以指示其实际何时完成扫描,并且其中,用于访问的装置独立于同步信号每个时间段t将一次扫描的检测和测距数据提供给用于确定和提供的装置。
[0121] 示例52可包括示例42和/或本文中其他示例的用于计算的设备,其中为了确定和提供当前姿势,用于确定和提供的装置将检测和测距数据变换成点云,并且通过将点云与参考图匹配来确定当前姿势。
[0122] 示例53可包括示例42和/或本文中其他示例的用于计算的设备,其中用于确定和提供的装置包括处理装置,以及由处理装置执行的检测和测距数据变换程序以将检测和测距数据变换成点云。
[0123] 示例54可包括示例53和/或本文中其他示例的用于计算的设备,其中用于确定和提供的装置包括用于通过将点云与参考图匹配来确定当前姿势的硬件加速装置。
[0124] 示例55可包括示例54和/或本文中其他示例的用于计算的设备,其中硬件加速装置包括FPGA。
[0125] 示例56可包括示例42-47中任一项和/或本文任何其他示例的用于计算的设备,其中移动自主装置是机器人。
[0126] 示例57可包括示例42-47中任一项和/或本文任何其他示例的用于计算的设备,其中移动自主装置是自主自动驾驶汽车。
[0127] 示例58可包括示例42-47中任一项和/或本文任何其他示例的用于计算的设备,其中移动自主装置是无人驾驶飞行器(UAV)。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈