对接IDS NXT

如何在工厂自动化中集成NXT摄像机

通过IDS NXT,我们为工业应用创造了新一代的视觉系统,可作为工厂自动化中的强大视觉传感器。有了IDS NXT ocean,深度学习就特别容易。一体化解决方案通过在边缘直接运行单个神经网络,提供了从IDS NXT摄像机中创建强大的推理摄像机所需的一切。从获取、管理图像,到训练AI,再到最后工作推理相机,只需几步就能完成。但是,推理AI摄像机如何与应用场景整合的?

在本技术提示中,我们特别介绍了集成IDS NXT摄像机的接口。并全面展示了如何在自己的应用环境中使用透过相机推理得到的结果。

IDS NXT接口

作为紧凑型嵌入式视觉系统,IDS NXT摄像机可以直接在边缘处理图像处理任务,无需额外的PC机即可提供结果。因此,它们可以作为自主视觉传感器使用。在外部系统的访问和数据交换要求上,它们与标准的工业相机有本质的区别,标准工业相机主要是作为基于PC图像处理的图像提硬件。因此,我们为IDS NXT摄像机配备了众多接口,在物联网类的应用场景中,使用起来更方便、更灵活。

IDS NXT cockpit

IDS NXT cockpit可以透過REST接口访问 IDS NXT工业相机的所有重要设置和功能。

此外,你可以安装或配置视觉应用。无论您以后使用哪种界面与摄像机一起工作 - IDS NXT cockpit 的GUI非常容易使用,可轻松设置摄像机应用程序,并在运行时进行配置。

IO 以及 RS-232

即使是在工业4.0时代,数字输入/输出和基于UART的串行接口以及基于这些接口的现场总线与最先进的继任者相比,也具有众多优势。即使对于复杂的零件检测和基于图像的验证,所谓的简单结果IO或NIO通常也足以在大型和现代化的工业生产线上快速、轻松地控制产品。几乎没有任何其他接口可以像数字输入或输出一样简单、低成本地实现。同样的,RS-232的串行设备通信也得到了这么多厂家和用户的支持。因为没有任何其他的配件能更全面地证明这一点。这也是为什么RS-232至今仍是工业通信领域的标准之一。

通过IO和RS-232接口,IDS NXT摄像机具有IO和RS-232接口,可以在不改变现有基础设施的情况下,为许多现有系统提供紧凑而强大的嵌入式视觉解决方案的做补充。

IDS NXT REST 接口

通过REST(Representational State Transfer)网络服务,IDS NXT摄像机提供了一个标准化的开放接口,用于机器对机器的通信,可以轻松联网。这样就可以对摄像机的参数和结果进行更改或查询。REST Web服务是基于HTTP协议的,因此在大多数网络中都可以使用。

标准的HTTP方法如GET、POST、PUT、PATCH等作为统一接口。这意味着,IDS NXT REST接口不仅与平台无关,而且由于HTTP方法的广泛使用,可以在各种客户端(PC、智能手机、平板电脑)中使用。C++应用程序需要一个完全设置好的开发环境,而REST(ful)API则可以通过支持Web的设备类来服务于REST(ful)API,无需额外的软件或网关。这不仅让我们更容易上手,还可以将大量的设置操作打包成简单的scripts。

因此,对于与自主操作视觉传感器的通用通信,REST可以在IoT(物联网)以及IIoT(工业物联网)的世界中使用,比基于PC的接口(如GenICam)更容易,开销更少。对于IDS NXT摄像机来说,REST不仅是数据和结果传输的 "runtime "接口,还用于摄像机的配置(如IDS NXT cockpit)、其应用程序和接口(IO、RS232)。

为什么要采用REST?

  • 无状态通
    无状态通信确保每个客户机-服务器消息都是自成一体的,并包含所有关于当前应用状态的必要信息。这意味着REST服务在执行之间不需要存储任何东西。因此,服务器中的会话管理是没有必要的,允许Web服务在网络中根据需要进行扩展。这使REST非常适合在物联网中使用。
  • 统一和独立的平台
    通过REST,系统提供了一个基于Web技术的标准化的开放接口,可以轻松实现网络化。数据和结果可以在所有(I)物联网设备之间进行数据和结果交换,无需协议转换或网关。
  • 方便和节省资源
    构建、传递和可能处理简单的REST API调用的结果,在大多数情况下,只需要很少的处理能力。此外,由于标准HTTP的广泛使用,REST通信的必要技术要求已经可以在大多数支持Web的设备上使用,无需额外的软件。
  • 不受地点限制
    客户端和服务器可以分开运行("分布式系统")。即使它们由不同的服务器托管,也可以通过REST进行通信。
  • 工业和网络兼容
    数据的便捷访问和传输是IIoT的重要组成部分。凭借其灵活性和能广泛使用资源的能力,REST还可以進一步简化工业自动化。通过使用跨应用和跨设备通信,可以快速、方便地集成许多系统和设备。网络兼容性是一个更全面的整合战略的重点。行业的演变和发展也得益于对新制度和新技术的开放性。

IDS NXT REST Web服务具有以下功能。

  • 在正常运行期间,REST Web服务始终处于活动状态。
  • 访问保护是通过HTTP基本认证实现。这意味着每个请求都需要一个授权用户的用户数据进行认证,然后通过Base64编码传输。
  • 响应以JSON或XML格式传输。

通过IO和RS-232进行IDS NXT通信

为了通过数字输入/输出或串行接口通信摄像机图像处理结果,只需通过IDS NXT cockpit 启动两个IDS NXT视觉应用 "GPIO Gateway "和 "RS-232 Gateway",并设置要从哪个视觉应用输出特定的结果。不需要编程。所有的设置都可以通过IDS NXT驾驶舱GUI来完成。

举一個例子,你可以配置数字输出在每次相机AI(带 "ImageNet1000 "的CNN管理器)对特定对象进行分类(如 "好的 "或 "坏的")时,在一定的时间内激活数字输出。或者你可以将检测到的对象类和推理的概率作为结果值通过串行连接进行通信。

文档

关于这两个视觉应用的详细说明及其配置,可以联系我们找到。

下载 "GPIO Gateway" 文档 (EN)
下载 "RS-232 Gateway" 文档 (EN)

IDS NXT REST通信

REST对开发者来说最大的优势在于它的网络兼容性,因此所需使用的工具相對的简单。因此,我们举例说明如何轻松使用HTTP方法GET、POST、PUT和DELETE从IDS NXT摄像机中获取数据。

请注意,本技术提示并不能当成使用REST API的全面文档。我们更希望能给你一些基本的提示,让你更容易上手。"剩下的(REST) "由你来决定!

为了能够重现以下示例,您需要一台IDS NXT摄像机,并通过同一网络中的Windows PC访问。为了避免参数的错误的查询,我们会让摄像头做一些有用的事情。我们使用的是相机AI和预装的CNN "KritzelNNN"。这使得相机AI能够识别人、狗、猫和相机的画像。通过REST-API,我们要求他传回在自画的图纸上识别的东西。

测试场景 "我看到了你没有看到的东西

  • 使用IDS NXT rio或rome摄像头和Windows PC联网
  • 使用预装的神经网络 "KritzelNNNN "运行视觉应用 "CNN管理器"。
  • 各种画中的人、相机、猫、狗等。

文档

关于如何使用CNN管理器的文档,包括所需的REST-URL和如何启动 "KritzelNet",可以联系我们找到。

下载 "CNN 管理员 " 文档 (EN)

REST call with "cURL" (command line)

cURL是一个通过URL传输数据的命令行工具,你只需在命令提示符上运行即可(cmd.exe也可以)。要查询最后一个摄像头图像的推理结果(KritzelNNNN),我们发送一个'GET'请求,请求中包含所需资源'/vapps/cnnmanager/resultsources/last'。

相机图像:

C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids
{
    "inference": {
        "Top1": "person",
        "Top2": "camera",
        "Top3": "cat",
        "Top4": "dog"
    },
    "inference_propability": {
        "Top1": "0.99",
        "Top2": "0.01",
        "Top3": "0.00",
        "Top4": "0.00"
    },
    "inferencetime": {
        "Content": "43"
    }
}

如果你想过滤JSON响应数据,可以使用一个额外的工具,比如 'jq'.轻巧灵活的命令行JSON处理器,不需要任何其他的依赖。要求只输出top1的推理结果及其概率,扩展请求。

| jq ".inference.Top1, .inference_propability.Top1, .inferencetime.Content"

C:\Users\ids>curl -sX GET http://192.168.2.102/vapps/cnnmanager/resultsources/last --user admin:ids | jq ".inference.Top1, .inference_propability.Top1"
"person"
"0.95"

现在将各种图纸放在相机镜头前进行测试,调出各自的推理结果。

浏览器中调用REST

直接通过地址线(address line)

推理查询也可以通过网络浏览器(如Firefox或Google Chrome)非常容易完成。要做到这一点,请在地址行中输入以下URL

http://admin:ids@192.168.188.21/vapps/cnnmanager/resultsources/last

用户凭证在标准的HTTP授权头中传输。

遗憾的是,由于安全原因,并非所有的浏览器(如IE)都支持在URL中嵌入凭证!因此,我们需要在URL中嵌入凭证。

使用浏览器插件

REST浏览器插件

还有其他容易使用的浏览器插件GUI来测试REST调用。

我们用Google Chrome浏览器和扩展"YuiAPI来测试我们对推理结果的查询。

为直接在浏览器中进行REST通信的GUI界面

特殊客户端中的REST调用

与REST Web服务通信的最舒适的方式可能是像 "Postman "这样的客户端。通过清晰的GUI和大量支持状态码、响应时间、自动语音识别以及创建REST调用时的链接和语法高亮显示,即使是非专业人员也能很快上手。同时,对响应数据的分析和过滤也得到了简化。另一个好处是可以导入完整的API描述,或者通过使用RAML、WADLOpenAPI等已知的API规范来创建完整的API描述。

Postman是一个可视化的开发环境,用于与IDS NXT摄像机的REST Web服务通信。REST调用不仅可以创建,还可以在集合中存储和组织。

Postman是一个Rest API的开发和测试环境

因此,您反复需要的数据可以在变量中方便地提供。但Postman最重要的功能應該是它的代码生成。只需按下一个按钮,客户端就可以从你的测试和保存的REST调用中创建出完全可用的代码片段,这些代码片段适用于许多常见的编程语言和其他客户端,如cURL、C、C、C#、Python、Java或Swift。

Postman code snippets 为您提供了一个很好的基础,可以将IDS NXT摄像机集成到自编程应用中。

REST API集成到应用的程式中

虽然IDS NXT 相机沒有提供SDK,但这不表示不能对摄像机进行程序化集成。在大多数编程语言中,使用REST或HTTP的连接是可能的,无需厂商提供额外的软件。这也是为什么像Postman这样的REST客户端能够为你提供全功能的code snippets 直接使用的原因。

以我们的AI相机结果为例,我们向你展示如何用Python编程REST调用。

使用Python进行REST调用

import http.client
import mimetypes
conn = http.client.HTTPSConnection("192.168.188.21")
payload = ''
headers = {
  'Authorization': 'Basic YWRtaW46aWRz'
}
conn.request("GET", "/vapps/cnnmanager/resultsources/last", payload, headers)
res = conn.getresponse()
data = res.read()
# output camera response
print(data.decode("utf-8"))

Python是物联网中非常常见的编程语言。因此,我们想用Python详细介绍一下我们的IDS NXT摄像机与生产自动化系统的集成。

使用Python进行交互式开发

通过技术提示,我们在软件包中为您提供了额外的Python代码片段,展示了IDS NXT摄像机及其接口的基本处理方式。
通过随附的Jupyter笔记本,你将能够测试和理解Python示例以及与IDS NXT摄像机进行数据交换的实时 开源Web应用程序

1.登录和图像传输 (connect_and_get_image.ipynb)
第一个例子显示了如何使用GET命令授权并从IDS NXT摄像机中检索图像。

2.改变曝光时间 (change_exposure.ipynb)
第二个例子显示了如何请求和修改摄像机参数。为此,我们使用PATCH命令改变曝光值。

3.触发图像采集 (trigger_image_acquisition.ipynb)
使用POST命令,我们将在第三个例子中展示如何触发图像捕获来获取修改后的场景的图像内容。

4.配置IO Gateway (set_gpio_gateway.ipynb)
在第四个例子中,我们将告诉你如何根据CNN经理人视觉APP的结果来切换摄像机的数字输出。

Python代码示例

 以 Jupyter笔记本的形式下载Python代码示例
关于如何使用Jupyter笔记本和测试实例,在附录 "用Python与IDS NXT对话 " 中进行了说明。

总结

通过数字输入和输出、RS-232和REST网络服务,IDS NXT摄像机提供了标准接口,能够非常灵活地使用相機。嵌入式视觉设备可以在没有主机PC的情况下独立执行图像处理任务,因此不需要PC支持与远程站进行通信。通过无状态的REST接口,可以连接到所有与网络兼容的设备,这意味着摄像机被优化定位为物联网网络结构。有了合适的REST客户端(如Postman),只需按一下按钮,就可以为许多常见的编程语言创建软件包装器。

利用IDS NXT推理摄像机平台的现有工具和接口,用成熟的技术集成到现有的安装中,就像集成到未来的IoT结构的网络兼容的安装中一样容易。

了解更多使用技巧透過OPC UA 接口將IDS NXT整合到工厂自动化环境中
在续篇 "使用OPC UA连接IDS NXT "中,我们重点介绍IDS NXT摄像机通过其集成的OPC UA服务器进行通信的新可能性。通过一个AI示例工作流,我们展示了如何通过OPC UA客户端激活已保存的相机设置、启动推理任务和查询结果。这使得将IDS NXT摄像机集成到基于OPC UA的工业应用中更加容易。