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

软件开发理应如此

在开发机器视觉应用的过程中,如果采用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不会受限于特定的制造商,可以使用不同制造商生产的相机,并且可以使用不同的接口。

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

— Maike Strecker表示 —

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

借助IDS peak,相机制造商可再次将所有产品整合到一款软件套件中。因此,它非常便于用户使用。