每天一篇论文 348/365 Custom hardware architectures for embedded high-performance and low-power SLAM(三)
Custom hardware architectures for embedded high-performance and low-power SLAM(一)
Custom hardware architectures for embedded high-performance and low-power SLAM(二)
Custom hardware architectures for embedded high-performance and low-power SLAM(博士论文)
第三章
半稠密和稠密SLAM在机器人和嵌入式视觉的许多新兴应用中至关重要。然而,最先进的SLAM具有很高的计算要求,现代稀疏和半稠密方法需要高性能cpu,稠密实时SLAM需要GPU加速。
第三章的内容
在第3章和第4章中,我们首先关注设计一个加速器,以提供高性能低功耗跟踪。在第五章中,我们还讨论了地图绘制的任务,使用一个专门的高通量加速器进行半密集深度地图估计。
•一、一种最新的半稠密SLAM算法的特点及分析
•其次,根据我们的知识,基于构成第一个加速器设计的片上FPGA系统的架构,以针对最先进的半密集SLAM。
•第三,认识此类算法的异构FPGA soc的机会和瓶颈。
SLAM的计算资源消耗
SLAM主要由两个相互依赖的任务组成:跟踪和映射。它们共享相似的低延迟需求,并且都是计算密集型的。正如本章的分析结果所证明的那样,它们共同分担了实时SLAM的80%以上的计算时间。正如背景章节中所讨论的,它们也是在探索过程中需要实时发生的两个任务,以跟踪移动机器人或平台,而全局地图维护可以分配给背景任务,甚至可以离线完成。因此,它们都需要加速才能在嵌入式领域实现高性能低功耗的解决方案。
追踪加速优化特点
在本文中,这两个任务都是由互补加速器来完成的。但是,由于以下原因,跟踪任务首先是针对性的。快速准确的跟踪在SLAM中是至关重要的,在引入精确的映射之前必须建立快速准确的跟踪。首先,它是所有新信息的入口。如果跟踪跳过一帧,则它包含的信息不能在算法中的任何其他点使用。跟踪必须足够快,根据移动机器人的速度,至少每秒30帧的性能,以便跟上摄像机的移动。
Tracking Algorithm in LSD-SLAM
通过将跟踪的帧与当前关键帧对齐并尝试最小化强度差异的方差标准化平方误差来恢复姿势。地图的每个有效三维点都是输入的一部分。利用地图点的深度、方差和强度值,将它们重新投影到当前相机帧的平面上,以计算重新投影的光度误差和梯度。SLAM系统
追踪算法流程
*SLAM中各部分计算资源的占比
加速算法结构设计
在本节中,FPGA-SoC是为加速LSD-SLAM关键功能而开发的体系结构的基础设备。如第二章所述,这种类型的设备提供了一种与同一芯片上的可编程逻辑结构紧密集成的低功耗移动CPU。该设计是围绕现有设备提供的固定内存系统参数开发的。对于这里讨论的系列设备,有四个可用的“高性能直接内存访问端口”(HP - DMA)连接到DDR控制器,允许直接从FPGA结构上实现的主控制器发起直接内存请求和高速突发传输。它们可以在最大150MHz的频率下工作,总线宽度为64位,并且包含允许一些操作组合的小型缓冲区。自定义硬件也连接到一个通用(GP)端口,同样通过一个AXI互连,直接连接到ARM CPU。FPGA上的加速器通过GP端口进行通信,充当从器,从运行在CPU上的软件启动高级控制和参数设置。
**本章的工作中实现了两个加速器,以减轻跟踪任务所需的大部分计算时间。它们在图中分别表示为“残差和权重计算单元”和“雅可比矩阵更新单元”。第一个负责计算地图点重投影,它们的光度残差和在投影位置上的内插图像梯度以及误差函数的个别加权因子。这些输出随后在雅可比矩阵更新单元中处理,该单元生成表示加权最小二乘优化的线性系统。
**
加速软件中的跟踪和建图执行
第二个加速器将由第一个加速器产生的值存储为其输入在DRAM专用区域的一部分。之所以这样操作,是因为在每次计算错误时,不会调用第二个加速器的相应函数。相反,线性系统在优化过程开始时计算一次,然后对每一个新的估计重新计算,实际上减少了重新投影误差。因此,在硬件中匹配这种行为意味着在第一个加速器完成后执行第二个加速器。由于在此之前生成的数据太多,无法存储在芯片上的缓存中,因此需要按顺序访问这些数据,这样缓存就不会对性能产生很大影响,因此将它们卸载到芯片外的内存中。因此,在第一个加速器将控制权交还给CPU之后,软件会比较新的错误,然后选择性地调用第二个加速器,使用该输出作为输入重新计算线性系统。
残差和权重计算单位
本单元实现了两个软件功能的功能。它负责将地图点投影到相机框架上,并计算由此产生的误差、光度梯度和权重。对于重投影得到的像面坐标(u, v)的点,需要计算这些梯度值和强度,如图3.8所示。为了估计这些量的亚像素版本,使用了线性插值方法,该方法利用一个围绕该点的4个像素的窗口,并根据到周围4个像素的距离来衡量它们的贡献。这方面的实施将在第3.4.2节中进一步讨论。其功能如图3.6所示。基于浮点坐标(u, v),计算一个点周围的四个像素的加权因子,估计插值值的强度。使用相同的权值插值梯度dx和dy,这将在3.4.2节中进一步讨论。根据这些值,计算出优化过程中所需的误差和权重。这些值将用于计算估计的位姿的总剩余。本硬件单元的总体结构如图3.7所示
残差和权值计算管道的第一部分如图3.9所示,对应于地图点在图像帧坐标(u, v)上的投影,这组计算共9次乘法,6次加法。这些是流水线成三个硬件浮点乘单位和两个加法器。以6个周期的处理间隔为目标,以匹配来自系统帧缓存的随机访问的延迟,允许在本节中更轻松地分配资源。帧缓存(也作为系统架构的一部分进行讨论)在计算期间包含当前的摄像机帧,以保证在剩余和权值计算期间对随机内存请求的低延迟访问。
Interpolated Element Calculation
Evaluation
CONCULSION
现成的FPGA上的定制硬件能够为嵌入式低功耗设备带来更高级、更密集的SLAM算法。然而,所提出的体系结构中的不同瓶颈阻碍了平台发挥其潜力。硬件/软件协同设计步骤是必要的,因为cpu优化的算法和实现并不适合加速器。硬件设计应该非常重视内存架构,包括缓存技术和具有重叠内存访问和计算的数据移动,以确保可靠的高水平性能。记住这些通信需求,以及fpga的性质,函数在一个较低的频率,但可以同时执行大量的操作每一个周期中,流接口是理想,部分设计最先进的算法将创建一个连续的数据移动管道中从一个点到另一个地方。如果前端的重新设计能够确保数据以高的持续速率通过FPGA,那么即使是像本工作中使用的这种小型FPGA- soc,也可以在小于3瓦的小功率预算内实现实时跟踪任务的性能。