SLAM运算装置和方法制造方法及图纸

技术编号:21034070 阅读:26 留言:0更新日期:2019-05-04 05:21
一种SLAM硬件加速器的装置,包括存储部分,用于存储输入数据、临时运算结果数据、最终运算结果数据、运算过程所需的指令集和/或算法参数数据;运算部分,与所述存储部分连接,用于完成对SLAM相关算法和应用的计算;控制部分,连接所述存储部分和运算部分,用于控制和协调存储部分和运算部分。本发明专利技术还提供了一种完成SLAM运算的方法,该方法通过指令来控制数据的运输、数据的运算、程序的运行等。本发明专利技术的装置和方法能够有效根据不同的需求对SLAM算法进行加速,满足不同需求的运算,具有灵活性强、可配置程度高、运算速度快、功耗低等优点。

SLAM Operating Device and Method

【技术实现步骤摘要】
SLAM运算装置和方法
本专利技术涉及一种SLAM(simultaneousLocalizationandMapping,即时定位与建图)运算装置和方法,用于根据不同需求对SLAM算法的运算进行加速。
技术介绍
在未知的环境中自主导航是移动机器人(例如无人地面和空中载具等)的一个基本能力。SLAM任务中即时定位与建图的定位主要完成机器人的位置在地图中的确定工作,建图的主要任务是是机器人根据环境建立对应环境的地图。在缺乏位置环境初始地图的情况下这就需要机器人能够实时地构建地图并且利用地图完成自身的定位,完成这项任务所需要的SLAM算法随之产生。然而在移动机器人有限的计算能力和严格的功耗要求下精确地实现SLAM算法是现实中所面临的最大问题之一。首先,SLAM算法因为有实时性的要求因而需要极高的运算速度来完成类似帧与帧间短时间的大量运算,其次SLAM算法由于受到移动机器人的限制对功耗有着苛刻的要求,最后SLAM算法种类众多运算类型较广,因此设计的加速器需要支持各种类型的SLAM算法。在现有技术中,一种实现SLAM算法的方式是直接在通用处理器(CPU)上进行运算,该方法的缺点之一是单个通用处理器的运算性能较低,无法满足常见SLAM运算实时性需求。而多个通用处理器并行执行时,通用处理器之间相互通信又成为了性能瓶颈。另一种实现SLAM算法的方式是在图形处理器(GPU)上进行运算,这种方法通过使用通用寄存器堆和通用流处理单元执行通用SIMD指令来支持上述算法。虽然该方法是专门用来执行图形图像运算的设备,但是由于SLAM算法运算的复杂性,该方法并不能够很好的支持其后续运算,也就是无法对SLAM算法的整体运算进行有效加速。同时,GPU片上缓存太小,更无法满足大量的SLAM算法的运算需求。此外,由于在实际应用领域中,将CPU或GPU等类似的结构移植到机器人上是一件比较困难的事情,所以,尚且没有一款实用性强、灵活性高的专用SLAM硬件加速器结构。我们设计的装置是一款符合要求的专用SLAM硬件加速器,对应的我们设计了这套装置的方法,它可以被设计成专用芯片、嵌入式芯片等硬件,从而可以应用到机器人、计算机、手机等应用中。
技术实现思路
(一)要解决的技术问题本专利技术的目的在于,提供一种SLAM硬件加速器的装置和方法。(二)技术方案根据本专利技术的一方面,提供一种SLAM硬件加速器的装置,包括:存储部分,用于存储输入数据、临时运算结果数据、最终运算结果数据、运算过程所需的指令集和/或算法参数数据;运算部分,与所述存储部分连接,用于完成对SLAM相关算法和应用的计算;控制部分,连接所述存储部分和运算部分,用于控制和协调存储部分和运算部分。优选的,所述存储部分包括:输入存储模块:用于存储输入输出数据;中间结果存储模块:用于存储中间运算结果;最终结果存储模块:用于存储最终运算结果;指令存储模块:用于存储运算过程所需的指令集;和/或缓冲存储模块:用于数据的缓冲存储。优选的,所述运算部分包括:针对SLAM相关算法和应用而设计的加速和处理SLAM运算的加速运算装置;SLAM相关算法和应用中包含但不能由所述加速运算装置完成的其他运算的其他运算装置。优选的,所述加速运算装置包含向量运算单元和矩阵运算单元。优选的,所述其他运算装置用于完成在算法和应用中使用但又不由加速运算装置完成的运算。优选的,所述运算部分通过硬件电路实现。优选的,所述控制部分连接存储部分的每个模块和运算部分,控制部分由一个先进先出队列和一个控制处理器组成,先进先出队列用于存储控制信号,控制处理器用于取出待执行的控制信号,对控制逻辑进行分析后,对存储部分和运算部分进行控制和协调。优选的,所述指令集包括:控制操作指令类,用于选取待执行的运行指令的控制;数据操作指令类,用于控制数据的传输;宏运算指令类,用于完整的运算操作;多维数据运算指令类,用于控制多维数据的运算操作;和/或一维数据运算指令类,用于控制一维数据的运算操作。优选的,所述控制操作指令类包括指跳转指令和分支指令,跳转指令包括直接跳转指令和间接跳转指令,分支指令包括条件分支指令。优选的,所述宏运算指令类包括卷积运算指令或池化运算指令。优选的,所述多维数据运算指令类用于要求运算单元执行多维数据的运算,多维数据的运算包括多维数据与多维数据间的运算,多维数据与一维向量数据间的运算以及多维数据与一维标量数据之间的运算。优选的,所述一维数据运算指令类,用于要求运算单元执行一维数据的运算,所述一维数据包括一维向量和一维标量。优选的,所述一维向量数据的运算包括一维向量与一维向量之间的运算,以及一维向量与标量之间的运算。优选的,所述一维标量数据的运算包括标量与标量之间的运算。优选的,还包括汇编器,用于在运行过程中,选择使用指令集中的指令类型。根据本专利技术的另一方面,还提供根据以上任一所述装置进行SLAM运算的方法,在于通过存储部分的指令集由控制部分来控制数据的运输、运算和程序的运行,其中包括:步骤一:将存储部分的输入数据运输至运算部分;步骤二:在运算部分根据运算过程的所需的指令集执行运算;步骤三:传输并保存运算结果数据;步骤四:重复上述过程直至运算完毕。(三)有益效果本专利技术提供的SLAM硬件加速器的装置和方法,能够有效根据不同的需求对SLAM算法进行加速,能够适用于各种SLAM算法和多种不同的输入数据类型,满足不同需求的运算,具有灵活性强、可配置程度高、运算速度快、功耗低等优点。本专利技术的装置和方法与现有的技术相比具有如下效果:1)运算部分能够根据不同需求对不同输入类型的数据进行运算;2)运算部分也可以通过缓冲存储模块实现数据的一定程度的共享,降低了数据的重用距离;3)指令的设计支持各种基本的操作类型,使得装置的可配置性很高;4)矩阵和向量运算单元的设计再配合标量运算单元的设计可以支持各种类型的运算,并且显著地加快运算速度;5)运算部分和存储部分的设计以及指令的安排极大地降低了执行时的功耗。附图说明图1是本专利技术一实施例提供的SLAM硬件加速器的装置的结构示意图。图2是本专利技术又一实施例提供的SLAM硬件加速器的的结构示意图。图3是本专利技术一实施例提供的SLAM硬件加速器的标量运算单元的一个实施例的结构示意图。图4是本专利技术一实施例提供的SLAM硬件加速器的向量运算单元的一个实施例的结构示意图。图5是本专利技术一实施例提供的SLAM硬件加速器的矩阵运算单元的一个实施例的结构示意图。图6是本专利技术一实施例提供的SLAM硬件加速器完成三维坐标L2范数运算的一个实施例的示意图。图7是本专利技术一实施例提供的SLAM硬件加速器完成16维方阵矩阵乘法运算的一个实施例的示意图。图8是本专利技术一实施例提供的基于扩展卡尔曼滤波方法(EKF)的SLAM的算法在本装置上配置实现的示意图。图9是本专利技术一实施例提供的指令类型示意图。图10是本专利技术一实施例提供的一种宏运算指令的应用示意图。图11是本专利技术一实施例提供的一种一维数据运算指令的一个实施例。图12是本专利技术一实施例提供的一种SIFT特征提取算法在本装置上配置实现的示意图。图13是本专利技术一实施例提供的一种基于G2O框架的图优化算法在本装置上配置实现的示意图。图14是本专利技术一实施例提供的一种卷积运算指令的执行流程图。图15是本专利技术一实施例本文档来自技高网
...

【技术保护点】
1.一种处理器,其特征在于,所述处理器包括控制部分和运算部分,所述运算部分包括多维运算单元,所述多维运算单元包括多个基本运算单元,其中,所述控制部分,用于从存储部分中目标数据起始地址读取第一数据,将所述第一数据传输至所述多维运算单元中的每个基本运算单元;所述多维运算单元,所述多维运算单元包括多个基本运算单元,所述多维运算单元用于将所述多维运算单元中的每个基本运算单元的寄存器值初始化为预设数值;所述多维运算单元中的每个基本运算单元,用于对所述参考数据与对应的寄存器中的预设数值进行比较运算,得到较大/小值,将所述较大/小值存储至所述对应的寄存器,直至将所述参考数据比较完成,每个基本运算单元得到第一数据的最大/小值;所述控制部分,用于根据运算指令从存储部分中读取第二数据,以及将所述第二数据传输至所述多维运算单元的每个基本运算单元;所述多维运算单元的每个基本运算单元,还用于比较传入的第二数据与所述每个基本运算单元的寄存器中的最大/小值是否相同,若相同,则确定第二数据为最大/小值。

【技术特征摘要】
1.一种处理器,其特征在于,所述处理器包括控制部分和运算部分,所述运算部分包括多维运算单元,所述多维运算单元包括多个基本运算单元,其中,所述控制部分,用于从存储部分中目标数据起始地址读取第一数据,将所述第一数据传输至所述多维运算单元中的每个基本运算单元;所述多维运算单元,所述多维运算单元包括多个基本运算单元,所述多维运算单元用于将所述多维运算单元中的每个基本运算单元的寄存器值初始化为预设数值;所述多维运算单元中的每个基本运算单元,用于对所述参考数据与对应的寄存器中的预设数值进行比较运算,得到较大/小值,将所述较大/小值存储至所述对应的寄存器,直至将所述参考数据比较完成,每个基本运算单元得到第一数据的最大/小值;所述控制部分,用于根据运算指令从存储部分中读取第二数据,以及将所述第二数据传输至所述多维运算单元的每个基本运算单元;所述多维运算单元的每个基本运算单元,还用于比较传入的第二数据与所述每个基本运算单元的寄存器中的最大/小值是否相同,若相同,则确定第二数据为最大/小值。2.根据权利要求1所述的处理器,其特征在于,所述控制部分,还用于连接所述存储部分和所述运算部分,用于对所述存储部分和所述运算部分进行控制。3.根据权利要求1所述的处理器,其特征在于,所述处理器还包括存储部分,所述存储部分包括:输入存储模块,用于存储输入和/或输出数据;中间结果存储模块,用于存储临时运算结果数据;最终结果存储模块,用于存储最终运算结果数据;指令存储模块,用于存储运算过程中的指令集;和/或缓冲存储模块,用于对数据的缓冲存储。4.根据权利要求1所述的处理器,其特征在于,所述运算部分包括:加速运算装置,用于执行SLAM相关算法和应用中的目标运算,所述目标运算包括加速和处理SLAM的运算;其他运算装置,用于执行SLAM相关算法和应用中的其他运算,所述其他运算为所述SLAM相关算法和应用中除所述目标运算之外的运算。5.根据权利要求4所述的处理器,其特征在于,所述加速运算装置包含向量运算单元和矩阵运算单元。6.根据权利要求1所述的处理器,其特征在于,所述控制部分还用于对所述存储部分中的每个模块和所述运算部分进行连接,控制部分包括先进先出队列和控制处理器,其中,所述先进先出队列用于存储控制信号;所述控制处理器用于取出待执行的控制信号,对所述待执行的控制信号进行解析,得到控制逻辑,根据所述控制逻辑对所述存储部分和所述运算部分进行控制和协调。7.根据权利要求3所述的处理器,其特征在于,所述指令集包括:控制操作指令类,用于选取待执行的运行指令的控制,所述控制操作指令类包括跳转指令和分支指令,跳转指令包括直接跳转指令和间接跳转指令,分支指令包括条件分支指令;数据操作指令类,用于控制数据的传输;所述数据操作类指令包括以下中至少一种:LD/ST指令,用于DRAM与SRAM中传输数据;MOV指令,用于在SRAM之间传输数据;RD/WR指令,用于表示在SRAM与BUFFER之间传输数据;宏运算指令类,用于完整的运算操作;所述宏运算指令包括一下至少一种:卷积运算指令、卷积操作指令、图像累加操作指令、图像BOX滤波操作指令、局部极值操作指令、计数器比较操作指令和/或池化运算指令;或者,所述宏运算指令类包括以下至少一种:矩阵与矩阵乘法指令、矩阵与矩阵加法指令、矩阵与向量乘法指令、矩阵与向量加法指令、矩阵与标量乘法指令、矩阵与标量加法矩阵、向量与向量乘法指令和向量与向量外积指令;或者,所述宏运算指令类包括以下至少一种:向量与向量乘法指令、向量与向量加法指令、向量与标量乘法指令、向量与标量加法指令、标量开方指令、标量取随机指令和移动指令;多维数据运算指令类,用于控制多维数据的运算操作,所述多维数据的运算操作包括多维数据与多维数据间的运算操作,多维数据与一维向量数据间的运算操作以及多维数据与一维标量数据之间的运算操作;和/或一维数据运算指令类,用于控制一维数据的运算操作,所述一维数据包括:一维向量和一维标量。8.根据权利...

【专利技术属性】
技术研发人员:陈云霁杜子东张磊陈天石
申请(专利权)人:北京中科寒武纪科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1