亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial Internet of Things >> 嵌入式

简化视觉 SLAM 应用程序的开发

同时定位和映射 (SLAM) 描述了设备(例如机器人)使用传感器数据构建其周围环境图片并同时确定其在该环境中的位置的过程。实现 SLAM 的方式有很多种,包括部署的软件算法和使用的传感器,其中可能包括摄像头、声纳、雷达、激光雷达和基本位置数据,使用惯性测量单元 (IMU)。

廉价和小型相机的出现推动了单目视觉 SLAM 系统的普及,该系统使用单个标准相机来执行定位和地图绘制功能。此类视觉 SLAM 系统可以在各种机器人中找到,包括火星探测器和着陆器、农业领域的现场机器人、无人机以及潜在的自动驾驶汽车。视觉 SLAM 系统还在 GPS 不可用的情况下提供优势,例如在室内区域或大城市中,建筑物的障碍会降低 GPS 的准确性。

本文介绍了基本的视觉SLAM流程,涵盖了物体识别、跟踪和纠错所涉及的模块和算法。讨论了将 SLAM 计算和功能卸载到专用 DSP 的优势,并使用 CEVA-SLAM SDK 开发套件来说明遵循此开发路线可以获得的好处。

直接和基于特征的SLAM

视觉 SLAM 的实现有很多不同的方法,但都使用相同的整体方法,通过连续的相机帧跟踪设置点以三角测量它们的 3D 位置,同时使用此信息来近似相机姿势。同时,SLAM 系统不断使用复杂的算法来最小化投影点和实际点之间的差异——重投影误差。

视觉 SLAM 系统可以根据它们使用接收到的图像中的信息的方式分为直接的或基于特征的。直接 SLAM 系统将整个图像相互比较,提供有关环境的丰富信息,从而能够创建更详细的地图,但以处理工作量和速度为代价。本文重点介绍基于特征的 SLAM 方法,该方法在图像中搜索定义的特征,例如角点和“斑点”,并仅基于这些特征来估计位置和周围环境。尽管基于特征的 SLAM 方法会从图像中丢弃大量有价值的信息,但权衡是一个简化的过程,在计算上更容易实现。


图 1:直接与基于特征的 SLAM。 (来源:https://vision.in.tum.de/research/vslam/lsdslam)

视觉SLAM过程

基于特征的 SLAM 的主要步骤是从输入图像中提取一组稀疏特征,匹配从不同相机姿态获得的特征,并通过最小化特征重投影误差(一个点的跟踪位置之间的差异)来解决 SLAM 问题。以及期望在所有点上给出相机姿态估计的位置)。

这些步骤是使用一组构建块完成的,如下所述,这些构建块对于所有基于特征的 SLAM 实现都是通用的。视觉 SLAM 是一个不断发展的领域,产生了大量的研究,并且已经为每个模块开发和提出了各种算法,每个模块都有优点和缺点,具体取决于 SLAM 实现的确切性质。下面的描述提到了当前最流行的算法的一个子集。

特征提取(图 2)是一个有效地将图像中的有用信息(例如角、边缘、斑点以及更复杂的对象(例如门道和窗户))表示为紧凑特征向量的过程。流行的特征提取算法包括高斯差分(DoG)和来自加速分段测试的特征(FAST9),这是一种角点检测方法,由于其计算效率高,非常适合实时视频处理。


图 2:SLAM 特征提取。 (来源:https://medium.com/towards-artificial-intelligence/orientation-fast-and-rotated-brief-orb-1da5b2840768)

在特征描述中,每个提取特征周围的区域被转换为一个紧凑的描述符,可以与其他描述符进行匹配。例如,特征可以通过它们的外观或通过特征点周围小块中像素的强度来描述。 ORB 和 FREAK 是流行的特征描述算法的例子。

在特征匹配中,提取的特征(描述符)在多个帧上进行匹配。通过将第一幅图像中的所有特征与第二幅图像中的所有特征进行比较,可以在两幅图像之间进行特征匹配。汉明距离函数通常用于特征匹配,因为它可以在硬件中使用 XoR 和计数位函数对位组数据(例如向量)有效地执行。汉明距离表示两个向量中有多少位不同,这意味着分数越低,匹配越接近。

Loop Closure 是 SLAM 过程的最后一步,可确保一致的 SLAM 解决方案,尤其是在长时间进行定位和映射操作时。闭环通过非相邻帧观察同一场景,并在它们之间添加约束,以减少姿势估计中的累积漂移。与其他视觉 SLAM 模块一样,已经开发了多种用于闭环的算法,其中最流行的是 Bundle Adjustment、Kalman 滤波和粒子滤波。

VSLAM 算法是一个活跃的研究领域,以上是近年来出现的越来越多的技术的例子。基于特征的 SLAM 方法更适合嵌入式解决方案,因为它们可以实现更快的处理速度并更有效地利用内存带宽。此外,基于特征的解决方案在一系列条件下表现出更高水平的稳健性,包括亮度的快速变化、低光照水平、快速的相机移动和遮挡。

特定算法的选择取决于特定应用的特征,包括地图类型、传感器类型、所需的准确度等等。许多 SLAM 系统结合了最适合最广泛场景的算法。

SLAM 实施挑战

视觉 SLAM 处理的计算量非常大,会给基于 CPU 的传统实现带来高负载,导致功耗过大和帧速率过低,进而影响准确性和电池寿命。新兴 SLAM 应用程序的开发人员需要提供更高集成度和更低功耗的解决方案。他们越来越多地在设计中使用专用视觉处理单元 (VPU)。 VPU 是一种微处理器,其架构专为加速机器视觉任务(例如 SLAM)而设计,可用于从主应用 CPU 卸载视觉处理。 VPU,例如 CEVA 的 CEVA-XM6,图 3,包括诸如低功耗、强大的 ALU、强大的 MAC 功能、高吞吐量内存访问和专用视觉指令等特性。这些设备还将支持图像处理应用程序所需的强大浮点功能。


图 3:CEVA XM6 视觉处理单元。 (来源:CEVA)

然而,即使使用 VPU,视觉 SLAM 开发人员仍然必须克服一些挑战,因为为不同的 SLAM 模块创建高效的代码是一项非同寻常的工作,而且 VPU 与主处理器的接口也很困难。

在必须优化执行速度和功耗的嵌入式应用中,创建高效代码至关重要。视觉 SLAM 模块的编码是一项复杂的任务,可能需要获取、存储和操作大量数据。例如,在特征匹配中,描述符作为 128 位向量存储在内存中,为了匹配连续帧中的特征,通常必须将 200 个特征与 2000 个候选进行比较,从而导致 400,000 次匹配操作。匹配操作显然需要大量内存,而且在采样数据量较小的情况下,获取和格式化数据的高开销会影响编码算法的效率。

捆绑调整是另一种涉及复杂线性代数的算法,涉及大型矩阵的操作。存在多种技术来优化这些和其他 VSLAM 模块的编码,但这些技术的实现需要高水平的特定于视觉的编码专业知识。

内存管理是图像处理中的另一个挑战。从图像捕获的数据通常加载到连续的内存位置,处理图像中的随机补丁意味着处理未存储在连续内存位置的数据。执行特征匹配的软件例程必须从不连续的内存位置检索描述符,进一步增加了设置开销。

VSLAM 开发工具

由于在当今环境中上市速度至关重要,因此开发人员花时间获得实施高效视觉处理代码所需的技能和知识并不总是可行的。幸运的是,有许多工具可以促进具有成本效益的 SLAM 应用程序的加速;提供应用程序开发工具包,提供特定于视觉的软件库、优化的硬件和集成工具的组合,使开发人员能够轻松地将视觉特定的任务从 CPU 卸载到 VPU。

图 4 中的 CEVA SLAM SDK 是此类应用程序开发工具集的一个主要示例。


图 4:CEVA SLAM SDK。 (来源:CEVA)

CEVA SLAM SDK 基于 CEVA XM6 DSP 和 CEVA NeuPro AI 处理器硬件,可将 SLAM 实现高效集成到低功耗嵌入式系统中。 SDK 具有许多构建块,包括图像处理库,为特征检测和匹配以及束调整提供高效的代码。它还提供对线性代数、线性方程求解、快速稀疏方程求解和矩阵操作的支持。

CEVA XM6 硬件针对图像处理进行了优化,具有创新功能,例如解决非连续内存访问问题的并行加载指令,以及用于执行汉明距离计算的独特专用指令。 SDK 还包含详细的 CPU 接口,使开发人员能够轻松地将视觉处理功能与主应用 CPU 集成。

为了说明 SDK 作为开发工具的性能,以每秒 60 帧的速度运行的完整 SLAM 跟踪模块的参考实现的功耗仅为 86mW。

结论

视觉 SLAM 系统在广泛的应用中越来越受欢迎,例如农田机器人和无人机。视觉SLAM的实现有多种替代方法,但随着嵌入式应用部署的不断增加,编码效率和低功耗成为关键因素。

虽然开发人员经常使用 VPU 从主 CPU 上卸载计算密集型视觉处理任务,但要生成高效的代码以及管理 VPU 和 CPU 之间的接口,仍然存在重大挑战。

随着上市时间成为关键驱动因素,开发人员可以利用内置于 SLAM 特定开发工具包(例如 CEVA SLAM SDK)中的功能来加速产品开发。


嵌入式

  1. 挤出在 3D 打印应用中的作用
  2. 全球供应链中的人工智能应用
  3. 酞菁颜料的所有应用
  4. 碱性染料的所有应用
  5. 颜料蓝的所有应用
  6. 现代塑料的发展
  7. 如何选择控制器
  8. 工业振动器的应用
  9. 工业 4.0:独特网络安全的发展
  10. 可视化管理对行业的影响
  11. 3D 软件应用程序中互操作性的重要性
  12. 了解柴油机的应用