技术文件

便于使用、不受限制及符合标准

在开发机器视觉应用的过程中,如果采用GenICam作为标准化相机接口,以及USB3和GigE Vision协议,则能够选择的开发组件非常多。

但如果有人据此认为用户不再需要相机生产商的软件开发工具,则说明他们还未曾深入了解过IDS peak。

如今,任何开发机器视觉应用的企业都无法绕过欧洲机器视觉协会(EMVA)颁布的GenICam通用相机接口标准。对使用不同制造商生产的相机进行统一规范后,用户可轻松更换相机硬件,同时还能够简化许多集成流程和视觉应用开发。而对于IDS Imaging Development Systems GmbH等工业相机制造商而言,若想让产品在市场中立足,USB3 Vision 和 GigE Vision 等数据接口必然不可或缺。因此,这些相机可兼容大多数符合GenICam标准的应用,无需安装特定制造商的驱动软件。由MVTec公司开发的HALCON等图像处理软件已支持兼容的视觉传输层。那么,如今是否还有必要使用制造商的软件开发包?对于开发统一标准的机器视觉应用,GenICam是最优的相机接口吗?

最优相机接口?

推出标准化接口后,相机自身便可实现各项功能,这为相机产业带来了根本且必要的变革。借助通用软件,可以实现所有视觉相机之间的通信。所有模块和功能完全不受相机限制,并且统一设计。即使是很小的细节和参数也可以单独处理和调整,几乎可以进行无数种组合。因此,标准编程语言中的语法也非常灵活,方便用户编程。即便是简单的程序次序,也需要正确组合多行代码和参数设置,否则很容易导致程序处理过程出错和混乱。通过GenAPI描述相机功能和通过传输层完成纯图像缓冲路径,这两种严格区分和不同的处理方式在结构上易于理解,但却并没有让应用开发变得更加清晰和简单。

产品的应用程序编程接口是一种用户接口,因此这种工具好用与否取决于用户的使用情况。只有当用户体验较好时,产品开发才算成功。接口代表着相机本身的性能,并体现开发者为用户提供的各种可能性。用户体验较好的特征包括:操作简易、直观、灵活、易懂、向前兼容且具有帮助。尽管GenICam标准在技术上带来了很多出色的解决方案,但相机制造商无法为用户提供充分的支持,因此只通过相机功能无法为用户提供更好的体验。

IDS的产品经理Maike Strecker表示:“相机制造商必须为用户提供全面的软件支持,这一点毋庸置疑。”

各方面均出类拔萃

IDS已根据客户体验总结了GenICam及IDS软件套件的优缺点,并希望借助IDS peak从多个方面为用户提供支持。IDS推出了这款新的软件开发工具包,不仅以GenICam作为标准化的软件基础,同时还保留了现代软件开发接口的优势,让用户可以自由选择使用哪款相机。IDS peak软件开发工具包不受平台限制,为实现最佳用户体验,提供了从源代码示例到传输层的所有必要组件,便于客户自行开发应用。作为一个意外收获,IDS peak用户可以全面获得所有IDS应用组件的相关支持。

IDS peak简化标准

IDS peak为应用程序开发员提供了所有必要的软件库和软件接口,因此是一款完整的软件开发工具包。此外,相较于GenICam,新开发且面向对象的编程接口更易于使用,不会限制或避开GenICam的功能。

与相机硬件间的通信只有通过标准化接口和视觉传输层才能实现,因此IDS peak完全不受硬件限制且符合标准。它可以替换和兼容所有符合USB3 Vision和GigE Vision标准的工业相机。此外,IDS peak不会受限于特定的制造商,可以使用不同制造商生产的相机,并且可以使用不同的接口。

Maike Strecker表示:“我们的编程接口便于用户使用,可以代替GenTL和GenAPI标准的接口。此外,通过特殊的便捷类,可以减少所需代码量及编程工作量。”

IDS peak是建立在由GenTL标准定义的模块层次结构之上。这些模块可以通过描述符获取,而描述符则相当于模块的名片。用户可以在获取和打开模块之前,在模块中请求获取特定信息。在打开或获取相应模块时,只有通过父子关系的建模可以看见和使用低层模块的功能。因此,在使用类时可以尽量避免出现错误,并缩短开发应用的时间。

例如:访问相机功能。要打开相机才能访问其“节点图”。只有这样才能进一步详细查询此相机并完成特殊设置。

通过相机的节点图读取设备名称

// 获取已打开的相机设备的节点图
auto remoteNodeMap = camera->RemoteDevice()->NodeMaps().at(0);
// 从相机节点图中获取DeviceModelName
auto modelName = remoteNodeMap->FindNode<StringNode>("DeviceModelName")->Value();

此标准中没有的便捷类和函数可以简化循环过程的处理,如设备和内存处理。使用这些模块类可以减少必要的应用程序代码,从而提高相机应用的可读性和稳定性。

可以通过DeviceManager模块这一简便方法,查找、列出并打开已连接的相机,以及管理可获取的传输层和接口。通过简单的更新命令,可以利用此模块扫描整个系统,并创建完整的设备树,或通过几行代码打开特定的相机。只需四行代码便可通过IDS peak DeviceManage模块打开所连接的相机。

使用IDS peak DeviceManager模块打开相机

// 创建设备管理器对象
auto deviceManager = std::make_shared<peak::DeviceManager>();
deviceManager->Update();
// 获取设备描述符的向量
auto devices() = deviceManager->Devices();
// 选择并打开第一台相机
auto device = deviceManager->Devices().at(0)->OpenDevice();

IDS peak可以通过此模块不断扩展。目前,已完成用于配置图像采集的简化相机类和采集管理器规划。还有一些其他常见的方法,例如使用共享指针自动释放未使用的内存资源,或使用独立于模块的线程安全使IDS peak成为现代化面向对象的编程接口,为程序员的工作提供了大量支持和反馈。

但是,IDS peak只是主机软件,得益于GenICam这一软件基础,可以完全不受相机限制,同时也不受任何相机型号或固件版本的限制。应用程序开发人员还可以自由选择是否使用IDS peak以获取便利、支持和简化的操作。每种视觉相机的相机功能还可与任何其他符合GenICam标准的应用结合。

用户可借助IDS peak、GenICam或符合标准的第三方应用访问IDS视觉相机。
用户可借助IDS peak、GenICam或符合标准的第三方应用访问IDS视觉相机。

应用程序扩展和功能扩展

IDS更加重视新的软件开发工具包。此外,基于应用的新款IDS NXT rio和rome系列工业相机配备符合视觉标准的固件,因此可通过IDS peak进行编程。IDS peak的优势还远不止这些。借助新的软件开发工具包,通过IDS peak应用程序编程接口在主机上开发和测试的应用流程可以方便地作为IDS视觉应用导出。因此,还可以在IDS NXT相机中直接加载和执行自编程图像处理流程,操作方式和智能手机上的应用程序相同。

例如:使用像机的触发和IO接口,可以直接通知机器控制的结果和流程决策。视具体的应用而定,用户不再需要其他台式计算机。

借助IDS peak实现视觉应用开发
借助IDS peak实现视觉应用开发

Smart GenICam通过相机的标准化XML描述文件,为客户的应用和任何符合视觉标准的第三方应用提供视觉应用的输入和输出参数。IDS客户可在运行IDS NXT相机时,借助IDS peak扩展或更改相机的功能集。用户无需等待制造商进行固件升级。

软件开发人员无需学习创建视觉应用所需的新编程语言。借助IDS peak,用户可以为IDS NXT系列的智能相机编写桌面应用和视觉应用。轻松实现嵌入式开发和应用扩展。一切都可以通过IDS peak实现。

新概念、新软件、简易工具

对于使用IDS peak的USB3 Vision和GigE Vision工业相机,IDS提供全面的软件支持。已使用IDS软件套件的客户也可以从中受益,轻松处理各种问题,并获得生产商的技术支持。IDS peak扩展了GenICam标准,其应用程序接口简单直观。这不仅是一款符合标准的软件开发工具包,同时还是一款独立的软件,可以操作、配置和编程所有符合视觉标准的相机。

IDS peak是新型IDS NXT工业相机的固件基础,同时也是视觉应用开发的基础。这种通用工具可轻松实现嵌入式视觉应用。 借助IDS peak,相机制造商可再次将所有产品整合到一款软件套件中。因此,它非常便于用户使用。