CN111028125B - 一种用于slam的已知自身位姿的光束平差法fpga加速器 - Google Patents
一种用于slam的已知自身位姿的光束平差法fpga加速器 Download PDFInfo
- Publication number
- CN111028125B CN111028125B CN201911113747.7A CN201911113747A CN111028125B CN 111028125 B CN111028125 B CN 111028125B CN 201911113747 A CN201911113747 A CN 201911113747A CN 111028125 B CN111028125 B CN 111028125B
- Authority
- CN
- China
- Prior art keywords
- processing unit
- calculation
- dimensional point
- camera
- projection
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明公开一种用于SLAM的已知自身位姿的光束平差法FPGA加速器,其雅各比矩阵更新和成本函数计算单元通过Zynq的PL端电路实现,PL端电路包括与PL端的控制器连接的相机旋转处理单元、三维点投影处理单元,所述相机旋转处理单元、三维点投影处理单元的输入端各自通过一个输入FIFO连接片外存储器,所述相机旋转处理单元的输出端与片上存储器的输入端连接,所述片上存储器的输出端连接所述三维点投影处理单元的输出端,所述三维点投影处理单元的结果输出端通过输出FIFO与片外存储器的计算结果输入端连接。本发明可通过时分复用的方式利用单一硬件同时完成雅各比矩阵更新和成本函数计算。
Description
技术领域
本发明涉及FPGA器件技术领域,特别是涉及用于SLAM的已知自身位姿的光束平差法FPGA加速器。
背景技术
光束平差法(Bundle Adjustment,BA)是在三维重建中联合优化相机参数和三维结构特征点位置的问题,广泛应用于三维立体场景的重建和同步定位和地图构建(SLAM)。BA的目标是通过最小化重投影误差来找到最优的参数估计,即三维空间点位置和相机参数。该误差被定义为观察到的特征位置与根据输入参数计算点在相机图像平面上位置差的L2范数。
SLAM赋予移动机器人在没有预知地图信息的条件下定位自身和对周围环境建图的能力。BA在SLAM中主要应用于SLAM后端,对前端已经建立的具有累积误差的地图进行优化。在SLAM发展的初期,后端使用扩展卡尔兹曼滤波算法。之后,基于BA的SLAM***逐渐被开发出来,而且已经证明BA的图优化方法在性能和精度上相较滤波算法更适合作为SLAM后端。
但目前SLAM算法距实际应用仍有一定的距离,其中BA是限制其应用的性能和功耗瓶颈。目前的研究大部分针对BA性能的研究使用GPU或分布式处理,由于其功耗非常大,无法很好的应用到SLAM的嵌入式场景。
发明内容
本发明的目的是针对现有技术中存在的技术缺陷,而提供一种用于SLAM的已知自身位姿的光束平差法FPGA加速器。
为实现本发明的目的所采用的技术方案是:
一种用于SLAM的已知自身位姿的光束平差法FPGA加速器,采用光束平差法实现,其中的雅各比矩阵更新和成本函数计算单元通过Zynq的PL端电路实现,PS部分实现光束平差法的其余计算,PL端电路包括与PL端的控制器连接的相机旋转处理单元、三维点投影处理单元,所述相机旋转处理单元、三维点投影处理单元的输入端各自通过一个输入FIFO连接片外存储器,所述相机旋转处理单元的输出端与片上存储器的输入端连接,所述片上存储器的输出端连接所述三维点投影处理单元的输出端,所述三维点投影处理单元的结果输出端通过输出FIFO与片外存储器的计算结果输入端连接;
所述相机旋转处理单元、三维点投影处理单元通过时分复用的方式同时完成雅各比矩阵更新和成本函数的计算;相机旋转处理单元,用于完成相机旋转的计算,求出相机旋转矩阵;三维点投影处理单元,用于完成投影值,投影值相对输入的导数以及成本函数值的计算。
本发明通过FPGA的并行计算来提嵌入式中光束平差法的计算速度,满足嵌入式SLAM中已知相机位姿BA优化建图的实时性要求。
本发明可以通过时分复用的方式利用单一硬件同时完成雅各比矩阵更新和成本函数计算,可以通过复制多个RPP以提升硬件加速器的并行度,改进软件算法使用猜测执行提升计算效率。
附图说明
图1是本发明基于Zynq FPGA的已知自身位姿的光束平差法加速器的硬件架构框图;
图2是本发明旋转矩阵处理器(RMP)的硬件结构图;
图3是本发明重投影处理器(RPP)的硬件结构图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
当SLAM应用设备已知自身的位姿,SLAM后端仅需要完成建图任务,求解BA的过程中无需优化相机参数,在这种情况下,求解BA问题过程中,雅各比矩阵的更新和成本函数的计算是计算量最大,是***中最耗时的部分。
在本发明的测试中,两者之和可以达到总计算时长的70%以上。优化方法使用经典求解BA的Levenberg-Marquardt(LM)算法。
如图1所示,基于Zynq FPGA的已知自身位姿的光束平差法加速器如图1所示,Zynq芯片分为PS与PL两部分,其中PL部分上实现了雅各比矩阵的更新和成本函数的计算,PS部分实现了其余计算。
软件算法中为了计算的一致性,需要同时输入相机参数和三维点位置才能计算投影位置,计算每个点的每一次投影位置都需要计算相机的旋转,这样就造成了不同点在同一相机投影下对相机旋转矩阵的重复计算,而硬件设计就避免了这一缺陷。
所述硬件的PL部分根据投影算法的特性拆分为两个部分,分别为RMP和RPP。RMP根据输入相机参数计算相机旋转矩阵,将旋转矩阵和其他相机参数暂存到片上RAM中,之后RPP从片上RAM读取相机数据和输入缓存中读取三维点位置计算最终的投影位置,并完成雅各比矩阵更新和成本函数计算的任务。
RMP计算相机旋转矩阵,对应投影函数中的罗德里格斯旋转公式(1)。由于旋转矩阵计算的时间较短,RMP模块近似采用串行执行以节约计算资源,但根据计算的数据的依赖性划分为了两个部分三个计算阶段,每两个计算阶段之间通过片上RAM来交互数据。
其中,第一部分两个阶段主要通过输入的旋转矢量r计算旋转角θ;其中为保证计算精度通过坐标旋转数字计算方法(CORDIC)计算θ的三角函数值sinθ和cosθ;第二部分一个阶段进行该公式中剩余的乘加操作,为了平衡三个计算阶段的延时,将该公式中最后一项的向量乘rTr提前到第一阶段进行计算。三个计算阶段的产生的中间变量存储在片上RAM中或寄存器堆中,同时扩展计算阶段之间的RAM大小形成Ping-pong缓冲的结构以提升计算的并行度。第三阶段将所有相机的旋转矩阵计算结果R和其余的相机参数存储到片上RAM中,供后续RPP模块读取计算。
RPP根据输入相机参数和三维点的世界坐标计算点在相机平面的投影位置与实际投影位置的误差和投影位置对点坐标的偏导数,并同时计算对角矩阵D和成本函数值与RMP相似,RPP也根据计算的数据依赖性分为了五个部分共八个计算阶段,其中不同的部分根据计算量的大小和数据的依懒性,拆分为1~3个计算阶段以平衡计算延迟,增加计算速度,每个两个阶段之间的数据交互也通过片上RAM。
其中,第一部分一个计算阶段计算三维点在相机坐标系下的位置Xc,Yc,Zc;第二部分两个阶段计算点投影在归一化坐标平面的位置x,y;第三部分三个计算阶段计算投影径向失真的大小d;第四部分一个计算阶段先计算含有失真的投影的位置u,v,再根据输入的观测值的真实值计算重投影与实际投影的残差∈和雅各比矩阵J,最后一部分一个计算阶段使用乘累加计算LM算法的对角矩阵D和成本函数值
由于硬件设计的时分复用思想,在RPP中,每一阶段除了计算函数值之外,还计算了它们相对于点三维空间位置的偏导数,以更新雅各比矩阵。
雅各比矩阵更新和成本函数部分在计算中会使用相同的中间变量,为避免重复计算、节约硬件资源,降低***功耗,通过时分复用计算资源,将雅各比矩阵更新与成本函数计算在同一硬件实现,使硬件在更新雅各比矩阵的同时计算了BA的成本函数值。
同时改进软件算法,使用猜测执行,在LM算法计算pnew处成本函数值的同时,计算了在pnew处的雅各比矩阵J,对角矩阵D以及残差∈,根据LM算法的增益比ρ来确定LM下一次迭代输入的数据时新的J,D,∈,还是旧的J,D,∈。
在BA问题中,由于相机数量远小于投影的数量,重投影计算的时间占据了绝大部分的计算时间,所述的加速器设计中可以复制多个RPP模块以提升***处理的并行度,减少***的计算时间。
将上述硬件设计在Zedboard开发板上综合实现,就资源利用率、运行时间和功率消耗这三方面,对该硬件设计进行性能测试。
光束平差法是指计算的相机参数和三维空间点的位置,即移动机器人的轨迹和地图结构。BA旨在将三维空间点在图片上的真实投影位置与它根据输入参数计算出的预测投影位置之间的差异最小化来达到优化参数的目的。假设pi为第i个三维点的位置,cj为第j张图片的相机参数,oij为第i个三维点在第j张图片上的真实的位置,P(pi,cj)为投影函数,则光束平差法的成本函数可以被描述为:
σij表示表示第i个三维点是否被第j张图片观测到,由于空间位置遮挡的关系,一张图片并不是观测到所有的三维点,当第i个三维点被第j张图片观测到时σij=1,否则σij=0。当SLAM应用设备已知自身的位姿,BA作为SLAM后端仅需要完成建图任务。
Levenberg-Marquardt(LM)算法是一种非线性最小二乘法,被广泛用于寻找非线性函数的局部最小值。其是一种基于信任域的算法,因为每次寻找的步长不一定能较小成本函数,在每次迭代计算新候选点pnew后,需要根据新的成本值和旧的成本值判定是否接受新的候选点pnew,同时计算新一次迭代的信任域半径。
下面对该硬件架构进行测试,下文对测试方法进行介绍:
根据设计的硬件结构,在Xilinx Vivado 2017.04上编写RTL代码并综合实现,再下载到Zedboard开发板上进行板级调试。RMP所能达到的时最大钟频率为50MHz,RPP的最大的时钟频率为150MHz。就硬件设计的资源利用率、加速比和功耗三方面,本发明进行了性能评估。评估所使用的的数据集为BundleAdjustment in the Large。
资源利用率:由Xilinx Vivado综合实现后得到,数据精度使用单精度浮点数。
运行时间:软件实现选用来自于Google的开源的Ceres-Solver最优化库,使用双精度浮点数编译。X86平台选用Inteli5-8400,主频为2.8GHz,ARM平台选用Zynq-7000芯片中的ARMCortex-A9处理器,主频为667MHz。
功率消耗:通过XilinxPowerEstimator计算的功率值。
所述的加速器测试结果如下:
硬件加速器消耗的硬件资源:查找表42936,占81%;触发器59230,占56%,BRAM80.5,占58%,DSP162,占74%。
Intel x86,ARM和FPGA平台在测试使用的五个数据集上BA的平均执行时间分别为51.029ms,1363.232ms和228.646ms,FPGA平台的性能是ARM平台的5.962倍,可以达到嵌入式实时建图的要求。在三个平台能量平均消耗分别为3316.9mJ,2044.8mJ,640.2mJ,FPGA平台相比Intel,ARM平台节约80.7%,68.7%的能量。
以上所述仅是本发明的优选实施方式,应当指出的是,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,采用光束平差法实现,其中的雅各比矩阵更新和成本函数计算单元通过Zynq的PL端电路实现,PS部分实现光束平差法的其余计算,PL端电路包括与PL端的控制器连接的相机旋转处理单元、三维点投影处理单元,所述相机旋转处理单元、三维点投影处理单元的输入端各自通过一个输入FIFO连接片外存储器,所述相机旋转处理单元的输出端与片上存储器的输入端连接,所述片上存储器的输出端连接所述三维点投影处理单元的输出端,所述三维点投影处理单元的结果输出端通过输出FIFO与片外存储器的计算结果输入端连接;
所述相机旋转处理单元、三维点投影处理单元通过时分复用的方式同时完成雅各比矩阵更新和成本函数的计算;相机旋转处理单元,用于完成相机旋转的计算,求出相机旋转矩阵;三维点投影处理单元,用于完成投影值,投影值相对输入的导数以及成本函数值的计算。
2.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,所述相机旋转处理单元、三维点投影处理单元内部拆分成不同的计算单元,不同的计算单元之间采用FPGA片上双端口RAM进行数据传递,不同的计算单元内部采用有限状态机,通过状态转换来控制每步数据的读入、读出和存储。
3.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,加速器使用猜测执行改进软件算法,使用猜测执行,在LM算法计算pnew处成本函数值的同时,计算了在pnew处的雅各比矩阵J,对角矩阵D以及残差∈,根据LM算法的增益比ρ来确定LM下一次迭代输入的数据是新的J,D,∈,还是旧的J,D,∈。
4.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,加速器通过复制硬件中的三维点投影处理单元提升计算的并行度,以提高计算速度。
5.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,所述的相机旋转处理单元、三维点投影处理单元内部采用流水线技术模块复用技术。
6.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,相机旋转处理单元根据输入相机参数计算相机旋转矩阵,将旋转矩阵和其他相机参数暂存到片上RAM中,之后三维点投影处理单元从片上RAM读取相机数据和输入缓存中读取三维点位置计算最终的投影位置,并完成雅各比矩阵更新和成本函数计算的任务。
7.根据权利要求1所述用于SLAM的已知自身位姿的光束平差法FPGA加速器,其特征在于,相机旋转处理单元计算相机旋转矩阵,对应投影函数中的罗德里格斯旋转公式,采用串行执行以节约计算资源,根据计算的数据的依赖性分为两个部分三个计算阶段,每两个计算阶段间通过片上RAM交互数据;第一部分两个阶段通过输入的旋转矢量r计算旋转角θ,通过坐标旋转数字计算方法计算θ的三角函数值sinθ和cosθ;第二部分一个阶段进行罗德里格斯旋转公式中剩余乘加操作,且将该罗德里格斯旋转公式中最后一项的向量乘rTr提前到第一阶段进行计算,三个计算阶段的产生的中间变量存储在片上RAM中或寄存器堆中,同时扩展计算阶段之间的RAM大小形成Ping-pong缓冲的结构以提升计算的并行度,第三阶段将所有相机的旋转矩阵计算结果R和其余相机参数存储到片上RAM中,供后续三维点投影处理单元读取计算,罗德里格斯旋转公式如下:
其中
三维点投影处理单元根据输入相机参数和三维点的世界坐标计算点在相机平面的投影位置与实际投影位置的误差和投影位置对点坐标的偏导数,并同时计算对角矩阵D和成本函数值三维点投影处理单元根据计算的数据依赖性分为了五个部分共八个计算阶段,其中不同的部分根据计算量的大小和数据的依懒性,拆分为1-3个计算阶段以平衡计算延迟,增加计算速度,每个两个阶段之间的数据交互也通过片上RAM;
其中,第一部分一个计算阶段计算三维点在相机坐标系下的位置Xc,Yc,Zc;第二部分两个阶段计算点投影在归一化坐标平面的位置x,y;第三部分三个计算阶段计算投影径向失真的大小d;第四部分一个计算阶段先计算含有失真的投影的位置u,v,再根据输入的观测值的真实值计算重投影与实际投影的残差∈和雅各比矩阵J,最后一部分一个计算阶段使用乘累加计算LM算法的对角矩阵D和成本函数值
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113747.7A CN111028125B (zh) | 2019-11-14 | 2019-11-14 | 一种用于slam的已知自身位姿的光束平差法fpga加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911113747.7A CN111028125B (zh) | 2019-11-14 | 2019-11-14 | 一种用于slam的已知自身位姿的光束平差法fpga加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111028125A CN111028125A (zh) | 2020-04-17 |
CN111028125B true CN111028125B (zh) | 2023-04-28 |
Family
ID=70205700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911113747.7A Active CN111028125B (zh) | 2019-11-14 | 2019-11-14 | 一种用于slam的已知自身位姿的光束平差法fpga加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111028125B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113177877B (zh) * | 2021-04-13 | 2022-06-28 | 浙江大学 | 一种面向slam后端优化的舒尔消除加速器 |
CN117237181B (zh) * | 2023-11-08 | 2024-03-29 | 深圳市其域创新科技有限公司 | 基于自动微分的光束平差计算方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018192084A1 (zh) * | 2017-04-17 | 2018-10-25 | 深圳奥比中光科技有限公司 | 深度计算处理器、数据处理方法以及3d图像设备 |
CN108717712A (zh) * | 2018-05-29 | 2018-10-30 | 东北大学 | 一种基于地平面假设的视觉惯导slam方法 |
CN109785373A (zh) * | 2019-01-22 | 2019-05-21 | 东北大学 | 一种基于散斑的六自由度位姿估计***及方法 |
WO2019164498A1 (en) * | 2018-02-23 | 2019-08-29 | Sony Mobile Communications Inc. | Methods, devices and computer program products for global bundle adjustment of 3d images |
-
2019
- 2019-11-14 CN CN201911113747.7A patent/CN111028125B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018192084A1 (zh) * | 2017-04-17 | 2018-10-25 | 深圳奥比中光科技有限公司 | 深度计算处理器、数据处理方法以及3d图像设备 |
WO2019164498A1 (en) * | 2018-02-23 | 2019-08-29 | Sony Mobile Communications Inc. | Methods, devices and computer program products for global bundle adjustment of 3d images |
CN108717712A (zh) * | 2018-05-29 | 2018-10-30 | 东北大学 | 一种基于地平面假设的视觉惯导slam方法 |
CN109785373A (zh) * | 2019-01-22 | 2019-05-21 | 东北大学 | 一种基于散斑的六自由度位姿估计***及方法 |
Non-Patent Citations (1)
Title |
---|
姜晓明 ; 刘强 ; .基于FPGA的低复杂度快速SIFT特征提取.北京航空航天大学学报.2018,(第04期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN111028125A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110928605B (zh) | 一种基于Zynq FPGA的光束平差法硬件加速器 | |
WO2021115331A1 (zh) | 基于三角测量的坐标定位方法、装置、设备及存储介质 | |
CN111028125B (zh) | 一种用于slam的已知自身位姿的光束平差法fpga加速器 | |
US20090074238A1 (en) | Method and System for Determining Poses of Objects from Range Images Using Adaptive Sampling of Pose Spaces | |
US20220261650A1 (en) | Machine learning training in logarithmic number system | |
US20100271371A1 (en) | Data processing device and method for converting coordinates of a curved surface | |
Pedre et al. | Accelerating embedded image processing for real time: a case study | |
KR20210074163A (ko) | 공동 검출 및 기술 시스템 및 방법 | |
US20210350230A1 (en) | Data dividing method and processor for convolution operation | |
CN111707262B (zh) | 基于最近点向量投影的点云匹配方法、介质、终端和装置 | |
US7770162B2 (en) | Statement shifting to increase parallelism of loops | |
CN115168283A (zh) | 一种数据融合模块加速器及方法 | |
CN103837135B (zh) | 工件检测方法及其*** | |
CN113822975B (zh) | 用于对图像进行有效采样的技术 | |
CN113902112A (zh) | 硬件计算模拟方法、***及计算机可读存储介质 | |
CN111882613B (zh) | 基于边缘语义的视觉里程计方法、装置、存储介质及设备 | |
US20120124351A1 (en) | Apparatus and method for dynamically determining execution mode of reconfigurable array | |
WO2013128343A2 (en) | Method for estimating a model on multi-core and many-core mimd architectures | |
GB2476550A (en) | Parallel and vectored Gilbert-Johnson-Keerthi graphics processing using SIMD devices | |
CN113808183B (zh) | 使用扭曲的复合估计乘积积分 | |
CN113094970A (zh) | 一种基于泰勒展开的函数计算加速装置 | |
Lastovetsky et al. | Model-based optimization of MPDATA on Intel Xeon Phi through load imbalancing | |
Chen et al. | A bucket-stream rbrief extraction architecture for slam applications on embedded platforms | |
Qin et al. | A CNN hardware accelerator designed for YOLO algorithm based on RISC-V SoC | |
CN108009099B (zh) | 一种应用于K-Mean聚类算法中的加速方法及其装置 |
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 |