摘要
本文介绍实时安全气泡探测的架构,以及在开发模块化解决方案、优化高数据带宽应用以实现每秒30帧(FPS)运行、设计多线程应用和算法以准确探测靠近地面的物体等方面所面临的挑战。
简介
机器人的普及程度越来越高,目前正在逐渐提高在各行各业的效率和生产力。然而,为了确保周边人员和资产的安全,机器人必须配备碰撞检测和停止功能。安全气泡探测器可以探测指定安全区域内是否存在物体或人员。
本文重点介绍如何使用ADI公司的EVAL-ADTF3175D-NXZ飞行时间(ToF)平台 实现 安全气泡探测器应用。 ADTF3175模块 具有75°的视场(FoV)。如需在实际应用中覆盖更宽的视场,则可以组合使用多个传感器。例如,为了覆盖270°的视场,则需使用四个模块。安全气 泡探测算法在EVAL-ADTF3175D-NXZ平台的i.MX8MP处理器上运行,可以捕获来自传感器的深度图像,并探测安全气泡半径内的任何物体。为了便于集成到机器人应用中,通常借助机器人操作系统(ROS)框架来实现安全气泡探测应用。该算法经过高度优化,在此平台上实现了30 FPS帧率。安全气泡探测器是自动导引车(AGV)和自主移动机器人(AMR)的基本组成部分。相关安全区通常用AGV/AMR周围的虚拟圆形区域表示,如图1中的红色圆圈所示。
安全气泡探测器是AGV/AMR系统必不可少的组成部分。图2中的安全气泡探测器由四个EVAL-ADTF3175DNXZ模块构成,覆盖278°的视场。这些模块呈水平分布,飞行时间(ToF)模块之间彼此相隔67.5°,这种配置有助于减少盲点,呈现278°的视场。
为了方便ToF模块和主机系统之间的通信,系统采用ROS发布者订阅者模型,如图3所示。此设置使用Ethernet over USB进行通信,以确保数据完整性并提高通信速度。
系统采用安全气泡探测算法来探测安全气泡半径内的物体。探测标志以ROS 话题(Topic)的形式传输,主机可以订阅所有模块的话题,并合并各个探测结果。此外,这些模块还可发布深度图像、红外图像和输出图像以供进一步分析。ROS提供了有效的可视化工具,例如rviz,它可以将发布的话题可视化。该应用设计为高度可配置的,将参数传递给ROS节点即可调整摄像头位置、旋转角度和其他配置值。
该应用实现了多线程架构,如图4所示。输入、处理、输出三个线程并行运行。该设计旨在有效减少延迟,确保持续对最新可访问帧运行算法模块。输入线程从ToF模块读取图像并更新输入队列,而处理线程获取输入队列并运行安全气泡探测算法,发布探测到的标志并将输出推送到输出队列。输出线程读取输出队列并发布话题以实现可视化。在实时场景中,当算法模块的帧速率低于输入线程时,先前未来得及处理的的帧将被丢弃,从而以最小延迟优先处理最新的帧。
主机和ToF模块之间的通信采用TCP/IP协议,通过ROS发布者-订阅者模型进行。主机将来自ROS节点(ToF模块)的已发布输出图像合并,并发布合并后的输出。
如图5所示,主机是NVIDIA® Jetson Xavier NX,利用Ethernet over USB协 议为所有四个ToF模块供电并与之通信。安全气泡的默认半径为一米,这可以在ROS启动文件中进行配置。如果在该区域内探测到物体,则会触发设置中的物体探测标志,并通过ROS主题发送到主机。主机订阅每个ToF模块的物体探测话题。结果通过简单的逻辑工作范围OR(或)运算合并。如果任何一个传感器在安全气泡内探测到物体,合并后的结果就会指示存在物体。
为了实现可视化,传感器将获取的图像转换为顶视图,并根据物体位于安全气泡内部还是外部,用绿色和红色像素标记物体。各传感器也会将此图像作为ROS 话题发布,随后主机将它们合并成组合图像。图6为所有已发布输出图像主题的组合图像。
为了实现可视化,在左上角绘制一个方框来显示物体探测状态(绿色:未探测到物体;红色:探测到物体)。参见图7。
这些图像可以通过ROS工具rviz进行可视化。此外,NVIDIA Jetson Xavier NX可以通过HDMI线连接到显示器,以便查看输出。为了进行分析,我们可以启用输入图像的深度图像、点云和顶视图等可视化功能。这些可视化功能为探测到的物体及其空间关系提供更详细的信息和洞察。参见图8。
所用SQA流程
采用标准软件质量保证(SQA)方法来确保软件的安全性和质量。
- 单元测试:ROS支持多级别的单元测试。
- 库单元测试:测试独立于ROS的库。
- ROS节点单元测试:节点单元测试启动节点及其外部API,即 已发布话题、已订阅话题和服务。
- 代码覆盖率:代码覆盖率分析由ROS的一个工具包完成,有 助于消除从未被执行的“死代码”并提高单元测试质量。
- 文档:ROS有一个工具包ros_doc_lite,它能为源文件生成doxygen格式的文档。
- 使用Clang格式来格式化代码,并使用Clang-tidy来维护ROS编码风格指南。
安全气泡探测器能够可靠地探测各种形状、颜色和尺寸的物体,包括厚度仅5毫米的电缆。
算法的延迟非常低,只有30 ms,可确保实时探测物体并作出响应。
由于充分利用了ROS框架来构建用户界面和提供可视化功能,该应用具有高度可移植性,可兼容任何使用ROS的主机,帮助缩短客户产品的上市时间。
对于透明和低反射物体,ToF传感器的准确度较低。因此,对玻璃瓶和塑料球等物体,会出现探测滞后。例如,图9显示了算法探测到物体的距离(安全半径设置为100 cm)。y轴代表测试对象。玻璃瓶(12, 7)表示玻璃瓶高12 cm,宽7 cm。如果括号中只有一个参数,则它表示物体的半径或立方体的边长。表1总结了安全气泡探测器的规格。
指标 | 值 | 说明 |
探测延迟 | 30 ms | 图像分辨率:512×512 |
探测区域 | 可配置面积的圆形/矩形 | 默认值:圆形区域,半径1米 |
视场 | 75° | 使用1个传感器 |
结论
这款由ADTF3175D和EVAL-ADTF3175DNXZ ToF平台组成的安全气泡探测器 具有许多优势。它针对i.MX8MP平台进行了高度优化,实现了30 FPS的流畅性能;而且采用多线程方法来有效减少延迟,确保快速响应;此外还实施了SQA方法来确保软件安全并维护质量标准。
参考电路
“工业视觉技术”。ADI公司。
“Analog Devices ToF”。GitHub, Inc.
“Analog Devices 3DToF ADTF31xx”。GitHub, Inc.
“Analog Devices 3DToF Safety Bubble Detector”。GitHub, Inc.
“Analog Devices 3DToF Floor Detector”。GitHub, Inc.
“Analog Devices 3DToF Image Stitching”。GitHub, Inc.
致谢
感谢ADI-TOF SDK团队的支持。