Roboflow与Ignition集成指南

计算机视觉应用中,确保这些系统与组织的基础设施无缝集成至关重要。本文将探讨如何使用MQ Telemetry Transport(MQTT)协议和模块,将Roboflow Workflows与Ignition这一强大的工业自动化解决方案相连接。将使用一个定制训练的YOLOv11模型,通过Roboflow Workflows部署来跟踪生产线上移动的咖啡袋。这些信息随后将通过MQTT发送到Ignition,并在Ignition的Perspective仪表板中直接显示计数和注释。到本文结束时,将构建以下内容。让开始吧。

先决条件

在深入之前,需要确保一些先决条件已经就绪。

创建Roboflow账户:确保已经注册了Roboflow账户。将使用该平台进行数据标注、模型训练,并构建一个可以部署到任何地方的工作流。

下载Ignition平台和MQTT模块:确保系统或网络附加设备上安装了Ignition软件。可以通过访问他们的下载页面来在任何操作系统上安装Ignition Gateway。将使用Ignition Gateway来配置设置,并安装额外的MQTT模块。

还需要安装Ignition Designer Launcher来配置标签和Perspective仪表板。最后,请确保已经安装了名为MQTTDistributor Module和MQTT Engine Module的MQTT模块。这两个模块都可以在战略合作伙伴模块页面上安装。

在Roboflow中构建

Roboflow平台提供了上传数据、标注图像、训练计算机视觉模型以及将它们部署到生产环境所需的一切。如果还没有使用Roboflow构建的经验,鼓励按照这个指南开始使用该平台。

咖啡袋模型:对于这篇博客,将使用一个小型但功能强大的开源数据集(使用这个视频),已经在Roboflow Universe上准备并分发了这个数据集,这是世界上最大的开源计算机视觉数据集和API集合。可以通过访问公开可用的项目来查看数据集。

构建工作流:如果是工作流的新手,可以随意复制这个集成的工作流。这可以通过访问这个可共享的工作流链接并点击“Fork Workflow”按钮来完成。Roboflow Workflows是一个生态系统,它使用户能够使用各种可插拔和可重用的块来创建机器学习应用。每周都有新的块推出,以支持新模型、控制流程和同步到外部数据源。可以访问文档来了解更多关于工作流的信息。

配置Ignition MQTT模块

现在已经为集成准备好了模型和工作流,让确保Ignition模块配置正确。首先,需要使用Web浏览器导航到Ignition Gateway。如果已经本地安装了Ignition,将访问http://localhost:8088。否则,需要安装Ignition的设备的IP地址。可能还需要重置试用版并登录。

登录后,导航到Config页面,然后点击MQTT Engine Settings。从这里,将点击Namespaces > Custom > “Create new Custom Namespace…”。

这是将配置MQTT引擎监听特定主题的地方。为主题命名,并提供订阅列表。下面将订阅设置为“/location/coffee/#”,这意味着Ignition将把在主题路径“/location/coffee/”下发布的任何数据拉入一个独特的标签。

集成Roboflow与Ignition

现在Ignition已经订阅了主题,让来看一下需要的简短脚本来集成应用程序。将使用Python和Roboflow Inference来运行工作流对抗视频。首先,让安装Python包。

pip install inference paho-mqtt

接下来,让编写代码片段,该片段将处理视频流并将消息发布到MQTT主题。请注意,默认的Ignition MQTT Distributor代理启用了基本身份验证,因此在生产中确保更改这些凭据。

from inference import InferencePipeline import cv2 import paho.mqtt.client as mqtt client = mqtt.Client() client.username_pw_set("admin", "changeme") # 默认MQTT模块用户/密码 client.connect("localhost", 1883) # 默认MQTT代理主机名/端口 def my_sink(result, video_frame): count = result["counts"]["count_in"] base64_latest_frame = result["output_image"].base64_image client.publish("/location/coffee/count", int(count)) client.publish("/location/coffee/latest_frame", base64_latest_frame) pipeline = InferencePipeline.init_with_workflow( api_key="YOUR_API_KEY",  workspace_name="YOUR_WORKSPACE_ID", workflow_id="YOUR_WORKFLOW_ID", video_reference="PATH_TO_VIDEO", max_fps=30, on_prediction=my_sink ) pipeline.start() pipeline.join()

现在当打开Ignition Designer时,应该能够导航到标签浏览器并查看标签直接在系统中更新。在构建仪表板之前,让点击计数标签并确保启用了历史记录,并设置了所需的存储提供商。

配置Perspective仪表板

有了Ignition中的数据,现在拥有完整的仪表板、警报和存储信息在历史记录中的全部功能。让来看一下构建一个简单的仪表板。

首先,让打开首页更新标题和描述以匹配用例。接下来,让添加一个Image和一个SimpleGauge。

将使用以下方式配置SimpleGauge,将其绑定到咖啡计数标签。

接下来,将配置图像。为了在Perspective中显示base64编码的图像,可以使用Expression来连接字符串“base64值。以下是在Expression绑定中的样子。

保存项目后,可以通过访问http://localhost:8088/data/perspective/client/Roboflow_MQTT来导航到新仪表板,其中“Roboflow_MQTT”是项目名称。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485