为机器视觉系统提供可视化程序的装置、系统和方法与流程

文档序号:26101444发布日期:2021-07-30 18:12阅读:74来源:国知局
为机器视觉系统提供可视化程序的装置、系统和方法与流程

分案申请

本申请为申请号2017107128743、申请日2017年8月18日、题为“为机器视觉系统提供可视化程序的装置、系统和方法”的分案申请。

本文公开了一种涉及使用图形程序对机器视觉系统进行编程的设备、系统和方法。



背景技术:

机器视觉系统正在成为在诸如制造作业等广泛应用中取代人类视觉的流行工具。机器视觉系统通常提供自动化的基于计算机的图像采集和分析功能,可用于诸如部件或材料的测量和检查等任务。对于这样的任务,机器视觉系统通常配置有用于获取感兴趣目标(例如正在产生的部件)图像的相机,并且还配置有处理所获取图像并产生关于目标信息的处理功能。相机和/或处理功能可编程为使机器视觉系统(包括相机和/或处理功能)的操作适应于感兴趣的应用。

随着机器视觉系统在各种应用中的普及,通常希望机器视觉系统能被具有很少(或没有)编程专长的用户使用和编程。因此,期望提供一种适用于大范围用户的用于机器视觉系统的程序开发环境。



技术实现要素:

根据本公开的主题,提供了一种使用图形程序对机器视觉系统进行编程的设备、系统和方法。

一些实施例包括,用于在图形程序开发环境中创建图形程序的计算机执行方法。该方法包括在图形程序开发环境中,提供图形程序,其中图形程序包括第一节点,第一节点具有第一端子。在图形程序中,实例化电子表格节点,电子表格节点具有输入端子,其中电子表格节点与指定要在计算设备中执行的功能列表的电子表格相关联;并且将输入端子连接到第一节点的第一端子,这表示第一节点的第一端子和电子表格节点的输入端子之间的数据连接。该方法包括将电子表格节点的输入端子与电子表格中的第一单元格相关联,这表示电子表格中的第一单元格填充有由输入端子接收的任何数据。该方法包括生成人类可读文件,指定包括电子表格节点的图形程序。

一些实施例包括,用于在图形程序开发环境中创建图形程序的系统。该系统包括与存储器通信的处理器,其中处理器配置为运行存储在存储器中的计算机程序,计算机程序配置为:在图形程序开发环境中,提供图形程序,其中图形程序包括第一节点,第一节点具有第一端子。该程序配置为在图形程序中,实例化电子表格节点,电子表格节点具有输入端子,其中电子表格节点与指定要在计算设备中执行的功能列表的电子表格相关联;并且将输入端子连接到第一节点的第一端子,这表示第一节点的第一端子和电子表格节点的输入端子之间的数据连接。该程序配置为将电子表格节点的输入端子与电子表格中的第一单元格相关联,这表示电子表格中的第一单元格填充有由输入端子接收的任何数据。该程序配置为生成人类可读文件,指定包括电子表格节点的图形程序。

一些实施例包括,一种具有可执行指令的非暂时性计算机可读介质,在图形化程序开发环境中,介质与用于创建图形程序的系统相关联。该指令可操作以使系统在图形程序开发环境中,提供图形程序,其中图形程序包括第一节点,第一节点具有第一端子。该指令可操作以使系统在该程序配置为在图形程序中,实例化电子表格节点,电子表格节点具有输入端子,其中电子表格节点与指定要在计算设备中执行功能列表的电子表格相关联;并且将输入端子连接到第一节点的第一端子,这表示第一节点的第一端子和电子表格节点的输入端子之间的数据连接。该指令可操作以使系统将电子表格节点的输入端子与电子表格中的第一单元格相关联,这表示电子表格中的第一单元格填充有由输入端子接收的任何数据。该指令可操作以使系统生成人类可读文件,指定包括电子表格节点的图形程序。

在一些实施例中,将人类可读文件发送到控制器,控制器配置为执行人类可读文件中指定的图形程序。可以接收电子表格节点的执行属性,其表示指定执行电子表格节点的计算机可读指令的计算设备。可以接收第一节点的执行属性,其表示指定执行第一节点的计算机可读指令的计算设备。基于电子表格节点的执行属性,在控制器处可以确定指定计算设备执行电子表格节点的计算机可读指令;并且将电子表格节点的计算机可读指令传送到计算设备,以执行电子表格节点的计算机可读指令。

在一些实施例中,在接收到查看与电子表格节点相关联的电子表格的请求时,在图形程序开发环境中显示电子表格;接收与电子表格中的第二单元格相关联的第一数据;并且使用第一数据填充电子表格中的第二单元格。计算设备可以是相机。图形程序可以配置为执行机器视觉任务。电子表格节点的计算机可读指令可以设计为执行图像的机器视觉分析。电子表格节点的输入端子可以配置为从第一节点的第一端子接收图像。

在一些实施例中,在图形程序中提供第二电子表格节点,其中第二电子表格节点与设计为在另一计算设备处执行的第二电子表格相关联。电子表格节点可以包括输出端子,其中输出端子与电子表格中的第二单元格相关联,这表示电子表格节点的计算机可读指令的输出。将电子表格节点的输出端子可以连接到图形程序的第二节点的端子,以向图形程序的第二节点的端子提供输出。

在一些实施例中,提供具有图形元素的可视化界面,以及将图形元素与电子表格中的第二单元格相关联,以在图形元素处显示第二单元格的内容。第二单元格的内容可以包括图像,并且其中将图形元素与第二单元格相关联包括向图形元素分配引用图像的指针。可视化界面的图形元素中可以显示电子表格的一部分。使用可视化界面可以接收修改电子表格的单元格的请求。

在一些实施例中,在计算设备处执行电子表格节点的计算机可读指令,其中执行计算机可读指令包括:接收要由计算设备处理的第一数据的指针;确定计算设备是否在计算设备处本地维护第一数据;在确定第一数据在计算设备本地维护时,处理第一数据,以及在确定第一数据不在计算设备处本地维护时,从由指针引用的存储介质检索第一数据并处理第一数据。计算设备可以包括多个计算模块,并且其中方法还包括自动选择一个或多个计算模块以执行电子表格节点的计算机可读指令。自动选择一个或多个计算模块,可以包括确定一个或多个计算模块的计算负载。

因此,相当广泛地概述了所公开主题的特征,以便可以更好地理解下面的详细描述,并且为更好地理解本领域对本领域的贡献。当然,还公开主题的附加特征将在下文中描述,并且将构成所附权利要求的主题。应当理解,本文中使用的措辞和术语是以描述的目的,而不应认为是限制性的。

附图说明

参考结合以下附图考虑的所公开主题的详细描述,可以更全面地理解所公开主题的各种目的、特征和优点,其中相同的附图标记表示相同的元件。

图1示出了根据一些实施例的用于机器视觉系统的示例性的可视化程序开发环境;

图2示出了根据一些实施例在图形环境中的示例性的可视化程序开发环境;

图3示出了根据一些实施例的用于编程可视化程序的示例性图形界面;

图4示出了根据一些实施例的图形界面中所示的电子表格界面;

图5示出了根据一些实施例的图形界面中所示的电子表格界面;

图6示出了根据一些实施例的用于具有多个相机的可视化程序的图形界面的示例性程序面板;

图7示出了根据一些实施例的图形界面的示例性程序面板,该程序面板用于对同一相机单个任务的多个节点(每个使用电子表格)的可视化程序;

图8示出了根据一些实施例的图形界面的示例性程序面板,该程序面板用于对多个相机的多个节点(每个使用电子表格)的可视化程序;

图9示出了根据一些实施例的用于发布电子表格的输入和/或输出的示例性菜单;

图10a-10c示出了根据一些实施例的电子表格节点的示例性对象;以及

图11是根据一些实施例的对应电子表格中的单元格的示例性对象列表。

具体实施方式

在下面的描述中,阐述了许多关于所公开主题的系统和方法以及这些系统和方法可以运行的环境等的具体细节,以便透彻了解所公开的主题。然而,对于本领域技术人员显而易见的是,可以在没有这样的具体细节的情况下实践所公开的主题,并且不详细描述本领域中公知的某些特征,以避免所公开的主题的复杂化。此外,应当理解,以下提供的示例是示例性的,并且预期存在所公开的主题范围内的其它系统和方法。

随着机器视觉系统在各种应用中的普及,通常希望机器视觉系统被没有编程专长的用户使用和编程。因此,期望提供一种适用于大量用户的用于机器视觉系统的程序开发环境。

一个这样的示例性程序开发环境是可视化程序开发(vpd)环境。vpd环境允许用户通过图形方式操纵视觉元素,而不是通过在文本上指定它们来开发一部分计算机程序,甚至整个计算机程序。

由vpd环境开发的可视化程序可以通过使用各种节点以及这些节点之间的互连来图形化地表示数据流。在可视化程序中,可以通过框和/或其他形状表示节点。在可视化程序中,可以用线表示互连。每个节点可以表示,例如机器视觉系统(如,照相机)的元件或由机器视觉系统执行的操作(如,获取动作)。

可视化程序可以为每个节点配置输入和输出。例如,每个节点可以包括一个或多个输入端子以配置数据输入到节点,和/或一个或多个输出端子以配置来自节点的数据输出。输入和输出可以在可视化程序中以图形方式表示,例如通过使用从节点的一侧延伸的视觉对象(如图2和图3所示,例如,通过小线连接小圆到节点)。

互连可用于连接图形程序各个节点的输入和输出,以构建图形程序,来指示节点之间的数据流。例如,第一节点的输出端子可以通过第一互连连接到第二节点的输入端子,来配置程序,使得第二节点接收(作为输入)来自第一个节点的输出端子的输出数据。类似地,第二节点的输出端子可以通过第二互连连接到第三节点的输入端子,来配置图形程序,使得第二节点向第三节点的输入端子提供数据。

用户可以通过将一个或多个节点放置到vpd环境中,并且使用互连来连接一个或多个节点来组装可视化程序。例如,如果用户想要执行两个数字的相加,则用户可以选择对应于加法运算的节点,并将该节点放置到vpd环境中。“加法”节点具有两个输入端子和一个输出端子,两个输入端子配置为接收两个数字,所述两个数字应添加在“加法节点”(也称为运算对象)处,输出端子提供加法运算的结果。因此,用户可以使用互连将“加法节点”的输入端子的两个数字进行相加。输出端子将包含加法的结果。在图形程序中,用户可以使用“加法节点”的输出来进一步处理加法的结果。

vpd环境的一个潜在弱点是,当需要设计复杂的应用程序(例如机器视觉应用程序)时,会限制节点执行的各种操作。例如,当用户希望执行特定运算而vpd环境不提供该运算时,可能会出现vpd环境只能配置为提供专用于有限种类运算的有限的节点类型,例如加法、减法和乘法这种情况。因此,在vpd环境中开发程序的灵活性和可定制性可能会无意中受到限制。

一些vpd环境通过提供代表自定义文本程序的节点来尝试提高灵活性。例如,有时称为“脚本”节点的节点可以与旨在执行特定运算的脚本程序相关联。因此,当用户想要部署可以执行不是由vpd环境提供的特定运算的节点时,用户可以为该特定运算开发实际的软件(或脚本)程序,并将脚本程序与脚本节点相关联,以便脚本节点可以执行特定的自定义运算。

不幸的是,由于使用脚本节点需要编写脚本程序的能力,大多数新手用户无法利用脚本节点提供的灵活性。vpd环境的目的是提供一个程序开发环境,即使没有编写程序的专门知识也可以开发程序,在某种意义上说,使用脚本节点会破坏vpd环境的目的。

本文描述的技术提供了用于提高vpd环境灵活性的新的编程机制。在一些实施例中,vpd环境可以包括电子表格节点。如本文进一步描述的,电子表格节点可以与包括一个或多个配置为执行各种运算的单元格的电子表格相关联。例如,电子表格节点可以用于指定处理输入图像的特定方式;作为另一示例,电子表格节点可以用于指定操纵输入矩阵以创建输出矩阵的特定方式。

与脚本节点相反,使用电子表格节点的好处是可以轻松编程与电子表格节点相关联的电子表格。例如,用户可以使用电子表格程序来构建用于执行特定功能的电子表格。如本文所述,电子表格节点的电子表格程序可以设计为易于学习和操作简单的,即使新手的计算机用户也可以轻松地对电子表格进行编程。此外,电子表格程序可以提供可以容易地组合或实例化的内置功能,以在电子表格中执行所需的运算。因此,与通常需要显著编程经验的脚本节点相比,电子表格节点可以在节点的灵活性和节点的简单使用或可访问性之间取得更好的平衡。

图1示出了根据一些实施例的能够使用vpd环境的示例性计算系统。系统100可以包括主机设备102、中央控制器104、一个或多个计算设备106以及一个或多个显示设备108。

在一些实施例中,主机设备102可以包括处理器110、存储器设备112和可视化程序开发(vpd)环境模块114。处理器104可以执行指令,并且一个或多个存储器设备106可以存储指令和/或数据。存储器设备106可以是非暂时性的计算机可读介质,诸如动态随机存取存储器(dram)、静态随机存取存储器(sram)、闪速存储器、磁盘驱动器、光驱动器、可编程只读存储器(prom)、只读存储器(rom)或任何其他存储器或存储器的组合。存储器设备106可用于临时存储数据。存储器件106也可用于长期数据存储。处理器104和存储器设备106可以由专用逻辑电路补充和/或并入其中。

如本文进一步描述的,vpd环境模块114可以配置为提供用户可以开发可视化程序的图形环境。因此,用户可以使用vpd环境模块114的图形环境来开发计算系统100的可视化程序。一旦用户定义了可视化程序,可以在计算系统100中启动可视化程序。例如,vpd环境模块114可以将可视化程序打包为项目文件,并且经由接口116将项目文件提供给中央控制器104,使得中央控制器104可以启动或执行项目文件中的可视化程序。

在一些实施例中,中央控制器104可以包括处理器118、存储器设备120和可视化程序执行(vpe)模块122。vpe模块122可以配置为“解压”项目文件以检索可视化程序,并准备执行该可视化程序。为此,如下面进一步描述的,vpd模块122可以检索预先存在的如在可视化程序中所定义的机器可读程序。根据可视化程序的定义,中央控制器104可以向一个或多个计算设备106分配一个或多个运算。计算设备106可以是例如相机和/或智能相机。智能相机可以包括例如处理器和存储器,使得智能相机可配置为执行使用vpd环境114设计程序的一个或多个部分。此外,根据视觉程序的定义,中央控制器104可以使一个或多个显示设备108显示数据。在一些实施例中,中央控制器104可以是主机设备102的一部分。例如,vpe模块122可以是主机设备102的一部分。

在一些实施例中,接口116可以以硬件来实现,以在各种介质(例如光、铜和/或无线接口)中以及在许多不同协议中(其中一些可以是非暂时性的)发送和接收信号。

在一些实施例中,vpd环境模块114和vpe模块112可以以软件实现。该软件可以在能够执行计算机指令或计算机代码的处理器104或处理器118上运行。处理器104和处理器118可以在硬件中实现,通过使用专用集成电路(asic)、可编程逻辑阵列(pla)、数字信号处理器(dsp)、现场可编程门阵列(fpga)或任何其他集成电路。适于执行计算机程序的处理器104和处理器118包括:例如通用和专用微处理器、数字信号处理器以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器104和处理器118从只读存储器或随机存取存储器或两者接收指令和数据。

vpd环境模块114和vpe模块112可以以数字电子电路或计算机硬件、固件、软件或它们的组合来实现。该实现可以是计算机程序产品(例如,有形地体现在机器可读存储设备中的计算机程序),用于执行或控制数据处理装置的运算(例如可编程处理器、计算机和/或多个计算机)。计算机程序可以以任何形式的计算机或编程语言编写,包括源代码、编译代码、解释代码和/或机器代码,并且计算机程序可以以任何形式部署,包括作为独立程序或子程序、元件或适用于计算环境的其他单元。可以将计算机程序部署为在一个计算机上或在一个或多个站点上的多个计算机上执行。

图2示出了根据一些实施例在vpd环境模块114的图形环境中的示例性的可视化程序200开发环境。如本文所述,可视化程序可以包括通过一个或多个互连连接的一个或多个节点。图2所示的示例性可视化程序200包括三个节点:图像获取节点202、图像处理节点204和显示节点206。如本文所述,每个节点可以包括用于接收数据的一个或多个输入端子和用于输出数据的一个或多个输出端子。例如,图像处理节点204包括一个输入端子208和一个输出端子210。

节点可能没有任何输入端子。例如,图像采集节点202仅具有输出端子214,例如,因为由图像采集节点202处理的数据可以由节点本身而不是由一个或多个输入内部定义。例如,图像获取节点202可以使用相机获取图像,或者图像获取节点202可以从存储器件检索数据。同样地,节点可能没有任何输出端子。例如,显示节点206仅具有输入端子216。在这种情况下,例如,由显示节点206操纵的数据可以显示在显示装置上和/或存储在存储装置中。例如,显示节点206可以使在输入端子216接收到的数据显示在如图1中显示装置108的显示装置上。可以通过互连(例如,互连218、220)来连接节点,以识别节点之间的数据流。

在一些实施例中,可视化程序根据由节点和互连所标识的数据流来执行。例如,当图像获取节点202接收或创建数据(例如,通过节点202内部定义程序,诸如通过照相机或智能相机捕获图像)时,图像获取节点202可以处理数据,并且向输出端子214提供第一输出数据。然后,输出端子214通过互连218将第一输出数据提供给另一节点的输入端子,诸如图像处理节点204的输入端子210。图像处理节点204可以处理在输入端子210处接收到的第一输出数据(例如,捕获图像)以产生第二输出数据(例如,处理后的图像数据)。图像处理节点204随后可以将第二输出数据提供给输出端子212,其随后由显示节点206的输入端子216接收。由于可视化程序的功能由节点的功能和节点之间的互连来定义,所以可视化程序可以在开发过程中直观地传达程序的功能。

图2示出了可视化程序的简单示例。本领域技术人员必须理解,可视化程序可以比图2所示复杂得多,使得它们包括大量的节点和互连。此外,可以配置可视化程序的其他方面,例如一个或多个节点是否要与其他节点并行运行,如果节点要依次执行(例如,在可视化程序中设计为从左到右)和/或类似的方式。例如,在一些实施例中,节点之间的数据传输可以是异步的:节点可以在任何时间(例如,一旦数据可用)将数据传送到另一个节点。在其他实施例中,节点之间的数据传输可以是同步的。例如,在时钟周期的预定实例处,节点可以将数据传送到另一个节点。

图3示出了根据一些实施例的用于编程可视化程序的示例性vpd环境模块的图形界面。图形界面300可以包括程序面板302,其中用户通过实例化各种节点和/或互连来设计图形程序。图形界面300还可以包括资源管理器选择栏304,其具有用于可视化程序的设备和/或特征选择的树,包括vpd环境中的子系统。在资源管理器选择栏304中的这些组件包括:脚本块(例如,允许用户创建自定义脚本的块)、硬件设备(例如,照相机、智能照相机)、秘诀(recipe)(例如,存储可以加载的标签数据的集合以定制用于检查具有不同要求的类似部件的应用程序)、标签管理器(例如,用于在运行时在应用程序中的所有子系统之间共享数据的唯一全局定制值的集合)、任务(例如,互连块的序列的图形表示)以及网页(例如,开发用户界面)。例如,资源管理器选择栏304中的设备组件显示当前可用的硬件设备。例如,设备组件可以显示哪些摄像机物理连接到系统,以及是否识别和启动输入/输出(io)硬件。设备组件还可以提供对诸如tcp/ip、离散io和/或类似的通信设备的访问。

当用户从资源管理器部分选择一个元素时,vpd可以配置为使得vpd环境改变以对应于该子系统所提供的内容。用户可以在资源管理器选择栏304中选择项目,并在程序面板302中右键单击以在图形程序中创建相应的块。例如,用户可以点击资源管理器选择栏304中的任务,并在程序面板302中右键单击以为图形程序创建新的任务块。当vpd环境创建新的任务块时,工具箱306将改变为适合新创建的任务的工具。例如,用户可以点击资源管理器选择栏304中的任务,并在程序面板302中右键单击以为图形程序创建新的任务块。这将改变工具箱306以显示适合于网页的工具。

在一些示例中,对于资源管理器选择栏304中的某些组件和/或设备,用户可以双击组件以更改组件的相关属性。例如,如果用户选择“相机0”,则用户可以双击它来配置任何采集属性。在一些实施例中,如果用户双击资源管理器选择栏304中的项目,将使用户进入编辑器中对应的选项卡305,以允许用户编辑所选择的项目。

图形界面300还可以包括工具箱306,其具有用于为程序面板302选择一个或多个节点和/或结构的图形树。在一些实施例中,工具箱306用给定在程序面板302中正在编辑的组件或子系统的适当工具填充。例如,如果用户正在编辑任务(例如,通过如图3中所示的选项卡305),则工具箱306填充有适于放置到图形程序的任务序列图中的工具。如果用户正在编辑网页(例如,通过选择网页选项卡305b),则工具箱306填充有可以放入用于创建自定义hmi的网页中的控件。

例如,如图3所示的节点可以包括获取(acquire)节点308和内视视觉工具块(in-sightvisiontoolblock)节点310,通过使用工具箱306,其可以被选择以添加到程序面板302。程序面板302还包括在获取节点308的输出和内视工具块(insighttoolblock)310的输入之间的互连316。此外,工具箱306可以允许用户执行其他功能,例如添加笔记。程序面板302包括三个注释:注释312a表示可视化程序用于单个相机场景;注释312b表示获取节点308(或块)从相机执行数据采集;注释312c表示内视工具块节点310(或块)在相机上执行视觉(例如,针对所获取的或输入的图像运行各种视觉算法)。例如,内视工具块是表示执行电子表格的节点。如本文进一步详细解释的,它可以具有连接到输入单元格的输入端子,并且其可以具有连接到输出端子的输出单元格。

作为另一示例,工具箱306允许用户选择并行块。在一些实施例中,程序面板302中位于并行块内部的任何块将导致内部块彼此并行执行。没有并行块,在一些实施例中,任务序列图中的块从左到右连续执行。因此,并行块可以通过使块在不同的线程中同时运行来提高系统的性能。例如,使用并行块可以使整个任务序列完成更快。

图形程序界面300还可以包括属性面板314,其用于修改在程序面板302中选择对象的属性。在图3中,如在程序面板302中,如通过注释312c周围与剩余对象轮廓相比较暗的轮廓,选择注释312c。通过选择注释312c,图形界面允许用户修改注释312c的属性,即将注释设置为“该块在相机上执行视觉”。因此,图形界面300可以使用户能够添加、配置和修改节点之间的多个节点和互连,以创建可视化程序。

在一些实施例中,图形界面300可以使用户能够指定用于执行与节点相关联的运算的计算设备。例如,当用户选择节点时,可以向用户提供属性窗格,用户可以在其中指定用于执行该特定选定节点的计算设备。

在一些实施例中,图形界面300可以提供电子表格节点。电子表格节点是与电子表格相关联的节点,使得该节点配置为执行如电子表格中定义的一个或多个运算。因此,电子表格节点可以用于将电子表格功能合并到图形编程环境中。电子表格的具体操作可以由用户使用向用户显示的电子表格界面来定义。于2006年9月12日发布的美国专利号为7,107,519、标题为“spread-sheetbaseduserinterfacecreation”已转让给康耐视(cognex)公司,描述了用于编程电子表格的示例性电子表格界面,该申请的披露内容通过引用以其全文并入于此。

与电子表格节点相关联的电子表格界面可以显示电子表格的单元格行和列。单元格的内容可以由用户在选项指定过程期间指定,并且可以包括例如,根据所需的运算来添加或指定要处理的功能、数学表达、数据标签和/或数据。此外,输入和/或输出功能可以放置在单元格中,例如输入功能从硬件设备读取信息和输出功能与专门的硬件设备交互。同时,电子表格中的单元格表达式定义与电子表格节点相关联的可视化程序的部分。由于电子表格程序的灵活性,电子表格界面可用于指定和/或开发机器视觉系统的自定义功能,而图形编程环境不提供该功能。

在一些实施例中,当用户选择电子表格节点(例如,用户双击电子表格节点,诸如来自图3的内视工具块310)时,vpd环境模块114的图形界面可以提供电子表格界面。图4示出了根据一些实施例的在vpd环境模块114的图形界面300中示出的电子表格界面402的示例。如图所示,电子表格界面402可以包括以行和列排列的多个单元格。图4示出了a至s列和0至20行。

如本文进一步描述的,电子表格界面402可以允许用户在vpd环境中为相关联的节点配置输入和输出。例如,电子表格中的任何单元格可以配置为程序面板302中关联节点的输入或输出。例如,用户可以配置电子表格以将任何单元格指定为其输入图像,用户可以在电子表格中进一步处理(例如,通过定义或使用电子表格中的一个或多个功能)。电子表格可以允许多个输入和/或多个输出。另外,如本文进一步描述的,电子表格可以配置为将任何单元格的值(例如,通过电子表格中的处理和/或功能设置的值)发布到hmi,以容易地将hmi控件绑定到电子表格中的单元格。

电子表格界面可以预先配置预定功能,以帮助电子表格的编程。例如,在于2015年9月1日发布的美国专利号为9,123,093、标题为“visioninspectionprogrammingmethodandapparatus”已转让给康耐视(cognex)公司,其中描述了电子表格界面可以包括编程功能,该申请的披露内容通过引用以其全文并入于此。图形界面300的工具箱306可配置为允许用户为电子表格界面402的特定单元格选择一个或多个预定义功能。例如,如图4所示的单元格3a包括来自工具306的斑点检测(detectblobs)函数,如工具箱306的注释部分中所解释的,它检测图像中的斑点并按区域进行排序,返回斑点结构。用户可以通过识别电子表格界面402中的单元格来配置斑点检测功能的输入和输出。如本文进一步描述的另一示例中,电子表格界面可以允许用户向单元格添加脚本(例如,javascript代码),使得当电子表格执行时脚本被执行。

在一些实施例中,电子表格节点的输入端子可用于向与该输入端子相关联的单元格提供单元格内容。例如,如图4所示,当电子表格节点在输入端接收到数据时,所接收的数据提供为与该输入端子相关联的单元格a0的内容。电子表格可以使用单元格a0的内容来使用电子表格中指定的运算来处理数据。例如,函数和运算可以添加到使用a0作为参数的电子表格中。

在一些实施例中,电子表格节点的输出终端可以用于检索从电子表格中可供其他节点在可视化程序中使用的单元格内容。例如,如图4所示,当电子表格向与输出终端相关联的单元提供运算的输出时,电子表格节点将该输出提供给输出端子,使得连接到电子表格节点的输出端子的其他节点可以使用该输出。

在一些实施例中,单个电子表格可以包括指定为输入端子的一个或多个单元格和/或指定为电子表格节点的输出端子的一个或多个单元格。例如,通过右键单击402中的单元格,用户可以向属性面板314添加用于输入和/或输出的条目。通过指定单元格,vpd环境可以允许用户选择菜单项(例如弹出一个弹出的上下文菜单)将单元格指定为输入或输出。在一些实施例中,如果单元格设计为输入或输出到电子表格,则相关联的单元格将获得装饰(例如,在单元格框的右下角,诸如在表格中单元格a0和e9所示的小阴影),并且属性面板314将自动更新引脚名称和相关信息(例如,输入或输出)。

程序面板可以显示电子表格节点的一个或多个输入端子和一个或多个输出端子。例如,属性面板314显示电子表格的输入和输出列表。单元格a0中的图像定义为电子表格的输入,并且将电子表格界面402中创建的一个或多个函数的输出作为字符串数据类型填充到单元格e9的电子表格中。通过图形地链接到电子表格节点的输出(这将在运行时填充到单元格e9的值),添加到图形程序中的后续节点可以使用e9上的输出。通过电子表格的单元格定义特定电子表格节点的输入和/或输出的能力创建了电子表格和图形编程环境之间的链接。

输入和/或输出的数据类型可以由图形编程环境预先定义。在一些示例中,图形编程环境可以允许将简单的数据对象用作诸如数字图像、字符串数据类型、整数数据类型、双精度数据类型等的输入和输出。在一些示例中,图形编程环境可以支持复杂的数据类型,例如以某种方式组织的原始数据类型的组合。复杂数据类型可以包括,例如(x,y)数据点、校准信息(例如,矩阵信息、非线性数据)和/或类似的列表。

虽然图4仅示出一个输入和输出,图5示出了根据一些实施例的电子表格节点,其包括两个输入端子和两个输出端子。如属性面板314所示,电子表格包括两个输入:(1)对应于作为电子表格输入的图像的单元格a0,和(2)对应于作为电子表格输入的双精度整数数据类型单元格a15。电子表格还包括两个输出:(1)映射到单元格e9进行输出的字符串数据类型,和(2)映射到单元格b3进行输出的双精度数据类型。

在一些实施例中,基于在电子表格界面中被识别为输入端子或输出端子的单元格,图形界面可以自动显示和/或更新附加到电子表格节点(例如,在程序面板302中)的输入和/或输出端子。因此,通过将单元格指定为输入或输出,可以通过电子表格界面402来完成输入和输出引脚的创建。一旦通过电子表格界面402创建,可视化编程开发环境可以自动更新显示器,以显示程序面板302中的输入和输出引脚。例如,假设用户配置电子表格与具有一个输入端子和一个输出端子的电子表格节点相关联(例如,如图4的属性窗格404中所定义)。当用户返回到程序面板302时,程序面板302可以图形地示出耦合到电子表格节点的一个输入端子和一个输出端子(例如,相反地,程序面板302可能在配置之前不显示任何输入或输出)。

电子表格界面402可以提供用于插入输入和输出的各种技术。例如,可以提供右键菜单以允许用户发布输入引脚和/或输出引脚。图9示出了根据一些实施例的用于发布电子表格的输入和/或输出的示例性菜单900。用户可以通过右键单击电子表格界面中的单元格来调用菜单900。菜单900包括用于电子表格界面中的特定单元的多个选项,以将单元设置为输入引脚或输出引脚,和/或操纵单元。选项发布到hmi(publishtohmi)902可以选择将单元格发布到hmi(例如,如本文进一步解释的具有显示在hmi中的单元格的值)。选项发布为输入引脚(publishasinputpin)904可以选择将单元格作为输入引脚发布(例如,在与该单元相关联的框图中的相应块上显示输入引脚)。选项发布为输出引脚(publishasoutputpin)906可以选择将单元格作为输出引脚发布(例如,在与该单元相关联的框图中的相应块上显示输出引脚)。选项取消发布(unpublish)908可以选择取消发布单元格(例如,删除块上显示的引脚)。

电子表格界面402中的每个单元格可以包括一个或多个属性,例如用于名称、输入和输出(例如,如属性面板314所示)。在一些实施例中,当用户将单元发布为输入或输出时,程序根据单元属性选择引脚的默认名称,并更新单元格在相机中的属性。如有必要,“改变”事件发送属性面板314和程序面板302中的相应块更新的信号。例如,如果程序确定块是新的输入或输出单元格,则程序在程序面板302中的图形图中发布块的相应引脚。

一旦vpd环境模块114接收到可视化程序,vpd环境模块114可将可视化程序打包为项目文件,并将项目文件提供给中央控制器116。随后,中央控制器116可以打开可视化程序(例如,遍历文件并根据文件中指定的类型在存储器中生成对象)。在一些实施例中,中央控制器116为每个节点生成一个对象,该对象知道如何基于对象的参数执行。例如,对于图2中定义的可视化程序,中央控制器116可以确定每个节点202、204、206的对象,并且安排节点202、204、206的对象从而如图2所示地依次执行。

当可视程序中的节点与预定的机器可读程序相关联时(例如,节点是脚本节点),中央控制器116可以简单地检索该预定的机器可读程序。当可视化程序中的节点不与预定机器可读程序相关联时(例如,节点是电子表格节点),中央控制器116可以将由该节点定义的运算组织成用于执行的该部分程序的人类可读表示。

例如,可以使用javascript对象符号(json)创建可视化程序的人类可读表示,这是一种使用人类可读文本的开放标准格式。图10a-10c示出了根据一些实施例的电子表格节点的示例性对象。图10a-10c示出了sheetblock对象1002。sheetblock包括“spreadsheetdata”条目1004,其中包含电子表格中包含的数据。出于说明性目的,针对“spreadsheetdata”包含的占位符“<data>”代替实际的电子表格数据。在一些实施例中,电子表格数据可以以base64编码的二进制格式存储。在一些实施例中,电子表格数据(例如,包含在“spreadsheetdata”条目中)包括具有名称的单元格、与输入标志相关联的单元格、和/或与输出标志相关联的单元格。在一些实施例中,电子表格数据中的单元格的名称与namedcell对象匹配。sheetblock对象1002还可以包括指定电子表格的输入和输出的信息。例如,namedcell条目1004包括以下信息:它是一个图像(“datatype”:“image”),它是电子表格的输入(“isinput”:true)。

图11是根据一些实施例的对应电子表格中的单元格的示例性对象列表。该列表包括用于解释单元格内容的每个单元格的条目列表。在该示例中,第一条目1104示出(由箭头1106指向的)电子表格的单元格a0,包含(由箭头1108指向的)函数调用inputimage。第二条目1110示出单元格b5包含的(由“表达式”:“阈值”表示的)标签,并且不包含条目1104所示的功能。

如图10a-10c和图11中的示例所示,中央控制器具有由可视化编程环境定义的节点列表。中央控制器将每个节点转换为内存中的对象。中央控制器在创建时根据从左到右的顺序(或者如果用户定义的另一个顺序)计算出要运行的节点,然后执行对象。例如,如果一个节点是电子表格,则中央控制器可以将该数据切换到相机以供执行。另一个例子,如果其中一个节点是一个脚本,那么中央控制器就可以编译和执行该脚本。

例如,当节点是电子表格节点时,中央控制器116可以确定单元格的相关性。例如,如果单元格是输入,则在一个或多个单元格可以对输入作用之前需要处理输入。另一个例子,如果单元格是输出,则在返回输出之前需要执行填充输出值的单元格。

在一些实施例中,可以使用单个电子表格节点来建立和配置多个相机(例如,一个或多个或全部从中央控制器远程执行)。相机可以是,例如包括处理器和内存的智能相机,其允许相机执行电子表格和/或电子表格定义的功能。用户可以直接在电子表格中指定目标相机,以便用户可以指定图形程序的偏远度。控制器(例如,图1所示的中央控制器104,诸如嵌入式控制器)可以配置为协调在整套相机上执行的电子表格,例如在远程相机之间传送数据。

在一些实施例中,编程环境生成电子表格需要执行的操作列表,可用于创建表示所有操作和数据的相关关系图。例如,控制器可以将表示电子表格的信息块传送到相机以供执行。相机可以打开电子表格并确定应该执行的相关性和运算顺序。相机可以处理相关性图来确定,例如数据在哪里、它需要去哪里、以及相机执行什么运算。

在一些实施例中,本文描述的技术可以使用序列化的过程来创建人类可读文件。序列化可以包括例如,配置电子表格中的单元格、配置电子表格的输入、配置电子表格的输出、以及封装电子表格信息以将其保存到可读的项目文件中。主机设备可以将该项目文件发送到控制器(例如,图1所示的中央控制器104,诸如嵌入式控制器)。中央控制器可以配置为协调电子表格的执行到一个或多个相关联的相机,而由图形程序的其他块定义的功能可以在控制器本身上执行。

在一些实施例中,由智能照相机获取的数据(例如,图像数据)可以以缩写形式传回给控制器。例如,由于图像数据可能很大,因此可以将系统配置成通过控制器的网络堆栈,控制器可以通过url访问相机上的图像,而不是复制从相机到控制器的图像。

在一些实施例中,当可视程序的节点是显示节点时,该节点可配置为在显示设备108上显示数据。如果有多个显示设备108,则显示类型节点可以指定在其上显示数据的特定显示设备108。

在一些实施例中,显示节点可以与特定的人机界面(hmi)相关联。例如,hmi可以包括设计为在显示设备108上显示数据的图形界面。在一些实施例中,hmi可以是基于网络的hmi。hmi可以由用户定制设计,使得用户可以指定要在hmi上显示的数据的类型和数据在显示设备108上的显示方式。这里描述的技术可以将信息从电子表格传递到hmi。例如,主机设备可以提供具有工具托盘(pallet)的图形用户界面构建器,其允许用户将按钮/文本框拖放到画布上以图形方式设计用户界面(hmi)。当特定图形项目拖动到画布上时,可以将特定图形项目的属性配置为指向电子表格的一个或多个单元格。例如,文本框的文本可以配置为在电子表格的执行期间显示填充到特定电子表格单元格中的值。

虽然图3示出了使用单个电子表格(与内视工具块310相关联)用于单个相机(例如,执行获取节点308的相机)的示例,本文所描述的技术可以使用包括多个相机和/或支持电子表格的多个节点。图6示出了根据一些实施例的用于具有多个相机的可视化程序的图形界面(例如,图3中的图形界面300)的示例性程序面板600。程序面板包括获取节点602,其配置为如同在注释604中所示,同时从两个不同的相机执行图像采集。从一个摄像机获取的图像由内视工具块节点606处理。从另一个摄像机获取的图像由内视工具块节点608处理。因此,如注释610所示,每个内视工具块606、608对来自获取节点602使用的相关联的相机的数据执行视觉处理。

图7示出了根据一些实施例的图形界面的示例性程序面板700,该程序面板用于对同一相机单个任务的多个节点(每个使用一电子表格)的可视化程序。如注释704所述,获取节点702配置为使用单个相机执行图像采集。获取节点702的输出输入到内视工具块706,如注释708所述,其配置为对由相机获取的数据执行视觉处理。如注释712所述,内视工具块706的输出馈送到内视工具块1710中,其在内视工具块706之后运行。使用不同的相关联的电子表格,对每个内视工具块706和内视工具块1710进行配置。

图8示出了根据一些实施例的图形界面的示例性程序面板800,该程序面板用于对多个相机的多个节点(每个使用电子表格)的可视化程序。获取节点802使用四个不同的相机来获取图像数据。每台相机采集的数据由不同的节点进行处理。一个相机的输出由内视工具块806处理,内视工具块806的输出由内视工具块808处理。两个相机的输出由内视工具块3810处理,内视工具块3810的输出由内视工具块2812处理。第三个相机的输出由内视工具块5814处理,内视工具块5814的输出由内视工具块4816处理。第四个相机的输出由内视工具块7818处理,内视工具块7818的输出由内视工具块6820处理。使用不同的相关联的电子表格,对每个内视工具块进行配置。内视工具块包含在并行块822中。因此,内视工具块806、810、814和818各自同时对从相应摄像机输出的数据执行视觉计算。类似地,内视工具块808、812、816和820在第一组内视工具块之后运行。

应当理解,所公开的主题在其应用上不限于结构的细节以及在以下描述中阐述或在附图中示出的部件的布置。所公开的主题能够具有其他实施例并且以各种方式实践和执行。此外,应当理解,本文中使用的措辞和术语是以描述的目的,而不应认为是限制性的。

因此,本领域技术人员将理解,本公开所基于的概念,可以容易地用于实现所公开主题的若干目的的其他结构、方法和装置的设计基础。因此,重要的是该权利要求视为包括这些等同的结构,只要不脱离所公开的主题的精神和范围。例如,一些所公开的实施例涉及一个或多个变量。这种关系可以用数学方程表示。然而,本领域普通技术人员也可以通过变换所公开的数学方程式,使用不同的数学方程来表达一个或多个变量之间的相同关系。重要的是将权利要求视为在一个或多个变量之间包括这样的等效关系。

尽管已经在前述示例性实施例中描述和示出了所公开的主题,但是应当理解,本公开仅作为示例进行,并且可以在不脱离所公开主题的精神和范围下,进行所公开的主题的实施细节方面的许多变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1