对校准物体两相对侧成像的视觉系统的场校准系统和方法与流程

文档序号:17489588发布日期:2019-04-23 20:19阅读:324来源:国知局
对校准物体两相对侧成像的视觉系统的场校准系统和方法与流程

本申请是于2015年11月9日提交的、标题为“systemandmethodforcalibratingapluralityof3dsensorswithrespecttoamotionconveyance”、序列号为14/936,616的共同未决美国专利申请的部分继续申请,其全部内容通过引用并入此文。

本申请涉及机器视觉系统,更具体地涉及用于校准视觉系统的系统和方法,所述视觉系统具有多个摄像机组件,所述摄像机组件定向成使用校准物体或“目标”从不同视点对场景成像。



背景技术:

在制造和组装过程中,通常希望分析物体表面以确定特征和/或不规则性的性质。物体表面的位移(或“轮廓”)可以使用激光位移传感器(也称为激光束“轮廓仪”)形式的机器视觉系统(在此也称为“视觉系统”)来确定。激光位移传感器使用激光束的平面帘幕或“扇形”在横向于光束传播路径的特定平面处捕获并确定被扫描物体表面的(三维)轮廓。在传统的布置中,视觉系统摄像机组件定向成在平面外部观察光束的平面。该布置捕获在物体表面上(例如,沿物理x轴延伸)的投影线轮廓,由于光束(有时表征为“扇形”)平面和相机之间的基线(即,沿y轴的相对间距),其使成像线在图像y轴方向上出现变化,作为成像点的物理z轴高度(沿图像x轴)的函数。该偏差代表表面的轮廓。激光位移传感器可用于各种检查和制造操作中,其中用户希望通过三角测量来测量和表征被扫描物体的表面细节。激光位移传感器的一种形式是使用具有透镜组件和图像传感器(或“成像器”)的视觉系统摄像机,其可以基于ccd或cmos设计。成像器在图像平面上定义灰度或颜色感测像素的预定场,该图像平面通过透镜接收来自成像场景的聚焦光。

在典型的布置中,一个或多个位移传感器和/或物体(通常在物理y坐标方向上)处于相对运动中,使得物体表面被一个或多个传感器扫描,并且由激光线在期望的空间间隔上获取一系列图像,其中空间间隔通常与编码器或其他运动测量设备相关联(或者,基于时间间隔)。这些单个轮廓线中的每一条通常从所获取的单个图像导出。这些线共同描述成像物体的表面和周围成像的场景,并定义“距离图像(rangeimage)”或“深度图像(depthimage)”。

本领域技术人员已知的其他摄像机组件也可用于捕获场景中物体的3d图像(距离图像),例如立体相机、飞行时间相机、基于lidar的相机等。术语距离图像用于表征具有像素值的图像(多个数值的二维数组),其中像素值表征每个位置的z高度,或表征该位置没有高度。术语距离图像可替代地用于指代通用3d数据,例如3d点云数据或3d网格数据。术语距离和灰度图像用于表征具有像素值的图像,该像素值表征每个位置处的z高度和相关灰度级,或者表征在该位置处没有高度,或者可替代地,距离和灰度图像可以由两幅相应的图像来表征——表征每个位置的z高度,或表征该位置没有z高度的一幅图像,以及表征每个位置的相关灰度级,或表征该位置没有灰度级的一幅图像。术语距离图像可替代地用于指代距离和灰度图像、或3d点云数据和相关联的灰度级数据,或3d网格数据和相关联的灰度级数据。例如,可以采用结构光系统、立体视觉系统、dlp计量和其他布置。这些系统都生成向像素提供高度值(例如z坐标)的图像。

由各种类型的摄像机组件(或其组合)生成的3d距离图像可用于定位和确定物体表面上的特定特征的存在和/或特点。在某些视觉系统实现中(例如电路板的检查),多个位移传感器(例如激光轮廓仪)安装在一起以扩展整个视觉系统的视场(fieldofview,简称fov)(其中术语“视场”指的是测量距离),以便以足够的分辨率完全成像物体的期望区域(例如其全宽)。在激光轮廓仪的示例中,物体相对于一台或多台摄像机以相对运动方式移动,以便提供扫描功能,该扫描功能允许从在各运动位置获得的一系列切片中构建距离(或更一般地,“3d”)图像。这通常使用传送带、运动台、机器人端执行器或其他运动传送来实现。该运动可以是公共(运动)坐标空间的基础,其中y轴沿着“扫描”运动的方向定义。

将所有传感器校准到公共坐标空间通常是非常具有挑战性的,特别是在多个传感器被布置在被检查物体的相对侧(即物体的上方和下方)成像,以便精确地测量物体的相对侧的情况下(例如用于厚度测量)。这种测量需要至少两个传感器——一个传感器测量一个相对侧,并且此外,这种测量还需要“场校准(fieldcalibration)”以对准传感器的测量。通过使用精确目标物体(可能是根据传感器的精度测量),可以实现精确校准。然而,依赖于精确目标的缺点是场校准(以及所有后续测量)受到测量目标的精度限制。相反,本发明使用“大部分不精确的物体”实现了对传感器精度的场校准。



技术实现要素:

本发明通过提供易于制造、易于分析的校准物体克服了现有技术的缺点,该校准物体结合了可测量和可重复但不一定精确的3d特征(例如以平截头体形式的双侧校准物体/目标,其具有一对精确且可测量的特征,更特别地是由精确指定厚度的分开平行面)以便提供多个相对面向的ds传感器的简单场校准。说明性地,可以构造复合校准物体,其包括已被喷砂和阳极氧化(以提供多个可测量的、可重复的特征)的双侧平截头体,其中突缘的上/下平行表面已经被研磨至精确的指定厚度。双侧平截头体的3d角位置用于校准x和y中的两个传感器,但是如果没有关于双侧平截头体厚度的准确信息,则不能建立绝对z;而突缘则提供绝对z信息。

在说明性实施例中提供校准目标,其包括限定第一侧和相对的第二侧的基部。第一三维元件从第一侧突出,并且该第一三维元件具有第一顶部。第二三维元件从第二侧突出,并且该第二三维元件具有第二顶部。第一平面相对于第一侧定位,而第二平面相对于第二侧定位。基于一加工程序,该加工程序使用第一顶面作为利用该加工程序形成第二顶面的基础,从而第一平面和第二平面基本平行。说明性地,第一平面和第二平面分别位于以下的至少一个上:(a)从基部延伸的突缘,(b)基部的至少一部分,和(c)第一顶部和第二顶部。第一平面和第二平面在它们之间也可以具有预定的厚度,并且可以通过加工程序形成,其中第一平面是加工第二平面的基础。第一三维元件和第二三维元件中的至少一个包括平截头体。第一三维元件在形状和尺寸上类似于第二三维元件,并且第一三维元件与第二三维元件以共同的z轴为中心。在该实施例中,每个平截头体由相邻的数字区别,其中偶数位于第一侧和第二侧中的一个上,而奇数位于第一侧和第二侧中的另一个上。说明性地,加工程序布置为在第一平面和第二平面之间限定预定间隔。更具体地,第一平面和第二平面中的至少一个是打磨面和刨平面中的一种。另外,第一元件和第二元件中的至少一个可以限定纹理化表面(例如,基于喷砂、磨砂或阳极氧化等),在该纹理化表面上漫射入射光。基部可以包括与第一三维元件相邻形成的离散第一标记和与第二三维元件相邻形成的离散第二标记。这些标记可以模制的、蚀刻的、印刷的或粘附的(例如标签)以限定2d或3d字母、数字和/或符号。在一个实施例中,目标还可以包括:(a)多个从第一侧突出的第一三维元件,其中第一三维元件分别具有限定平面的第一顶面,以及(b)多个从第二侧突出的第二三维元件,其中第二三维元件分别具有限定平面的第二顶面。

在另一示例性实施例中,提供了一种用于校准视觉系统的方法,该视觉系统至少具有第一3d传感器和第二3d传感器,分别对场景中的物体的每个相对侧成像。该方法包括在场景内定位校准目标的步骤,该校准目标具有(a)从第一侧突出的第一三维元件,第一三维元件具有限定平面的第一顶面和(b)从第二侧突出的第二三维元件,第二三维元件具有限定平面的第二顶面。基于一加工程序,该加工程序使用第一顶面作为利用该加工程序形成第二顶面的基础,从而第一顶面和第二顶面基本平行。该方法还包括利用第一摄像机组件获取第一三维元件的第一图像和利用第二摄像机组件获取第二三维元件的第二图像的步骤。基于至少第一图像和第二图像,该方法定位特征,并且利用这些特征确定第一摄像机组件和第二摄像机组件的校准参数。校准参数的确定可以包括使用顶面与底面之间的基本上平行的关系和预定距离值作为校准计算的一部分。该方法可以定位布置在第一侧上的第一多个平截头体的特征和布置在第二侧上的第二多个平截头体的特征,和/或可以确定与第一多个平截头体和第二体中的平截头体中的多个相应平截头体相邻的离散标记。该方法还可以生成将至少第一3d传感器和第二3d传感器的局部坐标空间映射到公共坐标空间的校准参数。

在另一示例性实施例中,提供了一种构造用于视觉系统的校准目标的系统和方法,该视觉系统具有多个布置成对场景中的物体的每个相对侧成像的3d传感器。提供校准目标的基部,该基部限定第一侧和相对的第二侧。形成至少一个从第一侧突出的第一三维元件,其中第一三维元件具有第一顶部。还形成至少一个从第二侧突出的第二三维元件,其中第二三维元件具有第二顶部。在校准目标上加工第一平面,以及通过将校准目标以与第一平面配准的方式安装在表面成形装置中来加工平行于第一平面的第二平面,使得第一平面和第二平面基本平行并且距离预定的间隔。说明性地,第一平面位于第一顶部上,而第二平面位于第二顶部上。第一三维元素可以是第一平截头体,而第二三维元素可以是第二平截头体。另外,可以将与第一平截头体相邻的第一离散标识和与第二平截头体相邻的第二离散标识应用于(例如,在基部上的)目标。

附图说明

下面的发明描述参考附图,其中:

图1是采用多个3d传感器结合运动传送器的示例性视觉系统布置的示意图,该运动传送器提供在固定物体(例如,如图所示的校准物体和/或检查中的运行时物体)与多个3d传感器之间的相对运动;

图2是示出并排配置的两个3d传感器的布置示意图,以消除被扫描物体的侧面遮挡;

图3是示出可选布置的示意图,其中附加3d传感器与另一3d传感器(通常是多个传感器的并排阵列的一部分)背对背地布置,以消除物体前后遮挡;

图4是根据示例性并排3d传感器布置的前视图,多个传感器配置为双重重叠覆盖以消除物体的侧面遮挡;

图5是示出使用本文的说明性校准系统和方法将多个3d传感器图像拼接在一起的示意图;

图6是根据说明性实施例的通用校准过程的流程图,其中同时校准多个传感器以提供连续的拼接在一起的视场(fov);

图7是根据替代实施例的整体/单片校准物体的立体图,该校准物体限定了与系统一起使用的多个分散的平截头体;

图8是具有多个平截头体形状子物体的示例性校准物体的示意图,其示出了多个3d传感器沿着(相对于传送运动方向)“垂直”对齐和“水平”对齐的扫描,其分别表征根据说明性实施例的整个校准程序的测量和校准阶段;

图9是示出“垂直”对齐的偏斜版本的扫描以生成随后由说明性校准程序校正的倾斜图像的示意图;

图10是示出物理校准物体的示意图,根据说明性校准程序,该物理校准物体具有由物理3d坐标空间中的相交平面限定的,变换到局部传感器的图像坐标空间的相关特征(例如角);

图11是图10的校准物体的示意图,示出了其中的相关特征和变换;

图12是流程图,示出了使用示例性梯度下降技术/方法来改进校准参数的说明性过程;

图13是根据说明性校准程序示出了预期测量特征位置的示意图;

图14是流程图,示出了用于根据校准物体的测量特征位置估计初始物理特征位置的说明性过程;

图15是流程图,示出了用于估计传感器i的初始运动向量的说明性过程,该传感器i在姿态0处找到/识别到任意一个或多个校准子物体;

图15a是流程图,示出了用于估计传感器i的初始运动向量的说明性过程的替代实施例,该传感器i在姿态0处找到/识别到任意一个或多个校准子物体;

图16是流程图,示出了当在姿态0处找到/识别到任意一个或多个校准子物体时,就示例性传感器i估计初始变换originalsensorxz3dfromphys3dsensor=i的说明性过程;

图16a是流程图,示出了当在姿态0处找到/识别到任意一个或多个校准子物体时,就示例性传感器i估计初始变换originalsensor3dfromphys3dsensor=i的说明性过程;

图17是流程图,示出了当在姿态0处找不到/识别不到校准子物体时,就示例性传感器i估计初始变换originalsensorxz3dfromphys3dsensor=i的说明性过程;

图17a是流程图,示出了当在姿态0处找不到/识别不到校准子物体时,就示例性传感器i估计初始变换originalsensor3dfromphys3dsensor=i的说明性过程;

图18是流程图,示出了用于就姿态p估计初始object3dfromphys3dpose=p的变换的说明性过程;

图18a是流程图,示出了用于就姿态p估计初始object3dfromphys3dpose=p的变换的说明性过程的替代实施例;

图19a-19m是示例性gui屏幕显示的示意图,示出了根据说明性实施例的设置和校准过程的各个操作阶段;

图20是流程图,示出了根据说明性实施例的、用于在存在温度变化的情况下执行校准的过程;

图21是流程图,示出了根据说明性实施例的、用于整体校准程序的设置过程;

图22是流程图,示出了根据说明性实施例的、用于校准程序的基本初始参数估计;

图23是流程图,示出了根据说明性实施例的、用于校准程序的高级初始参数估计;

图24是流程图,示出了根据说明性实施例的、用于校准程序的梯度下降技术,该梯度下降技术通过改变计算数值导数的步长(例如,通过levenberg-marquardt算法)找到校准参数的全局解;

图25是根据实施例的过程流程图,该过程用于通过应用多组数值导数步长来增加图24的技术的鲁棒性;

图26是一般过程的示意图,该过程用于将3d校准应用到来自3d传感器的测量值上以产生物理上精确的3d数据,然后从那些物理上精确的3d数据渲染3d(距离)图像;

图27是流程图,示出了使用根据说明性实施例生成的校准来渲染物体的精确3d灰度图像的过程;

图28是根据实施例的采用多个3d传感器的示例性视觉系统布置的示意图,所述3d传感器被定向为对场景中的物体(例如,所示的校准物体和/或检查中的运行时物体)的相对侧(例如,上方和下方)进行成像;

图29是沿图28的线29-29截取的用于视觉系统的示例性双侧校准物体的侧剖视图;

图30是用于构建校准目标的示例性过程的流程图,该校准目标用于校准图28的视觉系统;

图31是根据替代实施例的双侧校准目标的侧视图,其中突缘具有预定厚度,并且平行度被附加到目标的基部以用于校准3d视觉系统,大致如图28所示;

图32是示例性过程的流程图,使用根据实施例的校准目标校准图28的视觉系统;以及

图33是在具有精确成形的、平行的、平面的顶部面的示例性双侧校准目标上方和下方的3d传感器的布置图;以及

图34是示出了双侧校准目标示意图,根据校准程序的实施例,该双侧校准目标具有由物理3d坐标空间中的相交平面限定的,变换到局部(即,顶部和底部)传感器的图像坐标空间的顶部和底部平截头体的相关特征(例如角)。

具体实施方式

i.系统概况

图1详述了视觉系统布置100,其包括多个(3d)位移传感器110、112、114和116。在该示例性布置中,描述了四个传感器。然而,可以采用至少两个和多于四个传感器作为如本文所定义的示例性“多个”。如图所示,传感器110、112、114、116可以以各种定向布置,这些定向通常相对于彼此并排,以限定加宽的(在如下定义的x轴方向上)视场(fov)。在该示例性布置中的3d传感器110、112、114和116被实现为所谓的激光轮廓仪或激光位移传感器,其依赖于由沿着y轴方向作用的运动传送器产生在传感器和被检查的物体120之间的相对运动(箭头my),以提供物体120的距离图像(这里也称为“3d图像”)。如图所示,在该实施例中,运动my由传送器或运动台(或另一台机器人操纵器部件)130产生。然而,运动可以由安装传感器的布置产生,或者通过传送器/平台和移动的传感器支架产生。如上所述,获取距离图像的任何图像获取装置(包括针对给定图像像素的高度尺寸从而为物体成像的像素提供(例如)x、y和z轴值)都可以用作这里的3d传感器。

作为非限制性示例,布置100的示例性激光位移传感器110、112、114和116由图像传感器(或成像器)s组成,且单独的激光照射器产生激光平面lp,其特征在于作为“结构化”的照明光源,它在被检查物体的表面上产生特定的光学效果。投射的激光平面lp在被成像的下层物体130的一部分上投影线ll。激光平面lp被定向成相对于成像光学器件o的光轴oa以非平行(锐角)的角度驻留在平面中。以这种方式,图像以线ll的偏移(通常沿着局部y轴方向)表征在表面上高度偏差(局部z轴的变化),其中x轴表示线ll沿着表面的延伸方向。每个3d传感器110、112、114和116固有地定义其自己的局部坐标空间。与每个3d传感器相关联的该局部坐标空间可能相对于另一个传感器的坐标空间未对准。

值得注意的是,就投影激光线ll沿局部x轴与局部y轴的位移以及成像表面沿局部z轴的相对高度之间的关系而言,每个单独的3d传感器的校准是非常准确的。在许多实施方案中,这种精确度可以是微米或亚微米级别测量。因此,本文的系统和方法可以依赖于该固有精度来做出某些假设,这些假设加速和简化3d传感器相对于公共坐标空间的校准。在图1所示的示例性布置中,公共坐标空间140根据x、y和z轴定义,所有传感器的图像被校准到其中,(作为示例)其中运动方向my是沿着坐标空间140的y轴定向,并且x和z轴与其正交。这允许系统查看超过单个3d传感器的fov的宽阔物体。

图1中所示的物体120是固定物体(在本文中通常也称为“校准物体”),其由多个单独的、间隔开的平截头体组件(也称为校准“子物体”)150、152、154和156组成,每个平截头体组件定义离散的“特征集”,由(例如)校准物体基部或下面的基部框架的平面区域分开,其通常没有3d特征(除了整个物体的侧边缘)。“固定物体”是指在各次使用之间保持刚性(并且通常是非柔性的)的物体,使得其尺寸在图像传感器的每次扫描中是可预测的。各个组件之间的间距是可变的。在该实施例中,每个平截头体150、152、154和156位于相应3d传感器110、112、114和116中的一个的局部fov内。在一个实施例中,每个子物体以这样的方式附接到下面的板或框架122,其使得整个物体由于(因温度变化、应力等引起的)机械偏转而表现出最小的变化,如下面所进一步描述的。这种系统组件的机械隔离减少了可变偏转,提高了校准程序的可重复性和精确性。预期在各种实施例中可采用各种形状作为3d校准物体/形状。平截头体为校准子物体提供方便的形状,该校准子物体由多个可识别的表面和边缘组成,这些表面和边缘产生在校准程序中使用的特征(例如角)。可以明确地预期在替代实施例中采用校准子物体形状的其他形式,例如圆锥、不规则多面体等。适当的,唯一的基准160、162、164和166分别允许系统相对于公共坐标空间识别和定向每个平截头体150、152、154和156。值得注意的是,每个平截头体被构造成限定可预测和精确的形状,但是鉴于说明性系统和方法的教导,其不需要相同或精确地构造。同样地,虽然希望将所有平截头体组件以相对对齐的布置定向在下面的板122上,但这不是必需的。

传送器/平台130的运动my可以由传送器/平台内的运动编码器(或由另一个运动传感装置)跟踪,该传送器/平台包括视觉运动传感器,其跟踪通过一个或多个传感器的fov的特征(例如传送器/平台上的刻度标记)运动。由传感器110、112、114、116获取的编码器信号(运动数据)158以及图像数据(虚线连线168)被提供给视觉程序(处理器)170。处理器170可以集成在一个或多个传感器组件中,或者如图所示,可以位于具有适当用户接口(例如鼠标182、键盘184)和显示功能(屏幕和/或触摸屏186)的单独计算设备180上。计算设备180可以包括服务器、pc、膝上电脑、平板电脑、智能电话或专用处理设备,以及具有相关存储器、网络布置、数据存储等的其他类型的处理器,这对于本领域技术人员来说应该是清楚的。

视觉系统程序(处理器)170可以包括各种功能软件程序和模块。程序/模块可以包括各种视觉工具172,例如特征检测器(诸如边缘检测器、角检测器、点工具等)。视觉系统程序(处理器)170还包括执行系统和方法的各种功能的校准程序(处理器)174,并且可选地,可以包括灰度渲染程序(处理器)176,其允许由系统获取物体的3d图像渲染为物体的可见灰度(和/或基于颜色)的版本。

相对于成像场景安装3d传感器的机构是高度可变的。在一个实施例中,使用刚性覆盖梁。其之所以期望限制振动,因为这种振动会给校准系统带来不准确性。

布置多个并排传感器具有多种优点,所有这些传感器都校准到公共坐标空间。参考图2,其示出了获取示例性物体210的图像的两个3d传感器110和112的布置。除了整体fov的扩大之外,使用多个校准的3d传感器是为了克服由感测模式引起的遮挡。通过背景的、示例性的、描述的位移传感器将结构化照明投射到场景上,并且摄像机(传感器s和光学器件o)观察场景上的结构化照明。在确定哪个结构化照明点对应于摄像机获取的图像中的每个观察到的特征之后,通过三角测量来计算3d测量。该三角测量要求摄像机相对远离照明投影,以便为三角测量建立基线。将摄像机定位成远离结构化照明源的缺点是场景的一些部分可能被摄像机或结构化照明遮挡。虽然可以使用多个位移传感器来克服这种遮挡,但是需要校准位移传感器以便精确地合并来自多个位移传感器的数据。注意,之所以这里使用的术语校准也可以称为“场校准”,是因为它在用户的运行时系统环境中执行,而不是在工厂生产一个或多个3d传感器时执行。因此,图2(沿x轴)并排的传感器布置对于克服侧边遮挡是有用的。在该示例中,可以认为摄像机(s、o)和激光平面(lp)投影照明220都是从单个点发出的。因此,偏心物体可以遮挡场景的一部分。可以配置多个3d传感器,使得从两个方向观察场景中的任何点,如两个部分遮挡的局部图像230、232所示,其被组合成单个完整的无遮挡图像240。因此,使用多个位移传感器从不同的视角/视点观察场景可以有效地克服这种并排遮挡问题。

同样地,如图3所示,沿y轴背靠背布置定位一对传感器310、312(其中,至少一组传感器也在x轴上延伸以增强fov)。该布置使得每个传感器成像被遮挡的物体320的一部分。使用根据本文的系统和方法所描述的校准技术合并每个部分图像330、332以导出物体的完整图像340。

值得注意的是,相邻的3d传感器安装在(至少)沿y轴方向的偏移处,如传感器110、114相对于传感器112、116(来自虚线190)的偏移yo1、yo2所示。该偏移确保每个传感器的激光线之间不存在串扰或干扰。每个传感器的图像是单独获取的,并且如下所述,随后在校准程序中其被拼接在一起。同样地,预期每条投影激光线ll沿x轴重叠至少一条其他线。这可确保物体的整个表面完全成像。还如下所述,在拼接步骤期间通过系统和方法对齐重叠。为了进一步确保从两侧观察物体的每个部分,从而减少遮挡的机会,图4示出了可选的布置,其中激光平面lp提供成像场景的双重覆盖。也就是说,每个平面lp(例如传感器110)的重叠区域or足够宽以穿过相邻传感器(例如传感器112)的光轴oa。如图所示,在该示例性布置中,第一传感器(传感器110)的平面与下一个相邻传感器(例如传感器114)的平面交叉。注意,相邻3d传感器之间的串扰可以通过其他机制来避免,其中一些机制可以允许传感器基本上没有偏移(yo1,yo2)地安装。例如,不同波长的激光器可以投影在与相关传感器摄像机/光学器件上的窄带滤波器耦接的相邻单元中。在其他实施例中可以使用具有不同偏振的相邻激光器和偏振滤光器。附加地(或替代地),与每个传感器相关联的一个或多个照明控制器可以使得相应的投射激光线以同步方式闪烁,使得激光线重叠的每个区域可以由传感器成像,同时仅被与给定传感器相关联的相应激光线照亮。

现在参考图5,该系统和方法特别有助于基于校准程序拼接来自多个3d传感器110、112和114的运行时图像数据,以便定义单个fov和公共坐标空间。如图所示,相对于传感器110、112和114移动(箭头my)一个或多个物体510、512、514和516,传感器以重叠的激光线ll投影平面lp。在一个实施例中,如图1所示,这些线可以彼此偏移(或者以其他方式布置/选择性地过滤),以防止如本文所述的串扰和其他不期望的状况。每个传感器110、112、114在其fov的局部坐标空间内生成一个或多个物体510、512、514和516中的一些或一部分的相应图像520、522、524。校准过程生成变换530、532、534,其分别将每个图像520、522、524的坐标空间变换到公共坐标空间。该过程还通过使用(例如)技术人员已知的技术合并图像之间的重叠区域来解决图像之间的重叠。所得结果是拼接的运行时图像540,其中多个物体作为单个连续fov的一部分出现。

ii.定义

在讨论校准系统和方法的细节之前,提供以下定义以帮助理解本文提出的概念和术语:

iii.校准过程

现在参考图6,其描述了根据说明性实施例的通用校准过程600。该过程可选地包括步骤610,其使用在基板(例如基板122)上的多个间隔开的子物体(例如,150、152、154、156)所组装成校准物体(例如,图1中的物体120)。子物体可以一定的方式附接在基板上的槽或其他安装和固定结构上,使其免于因温度变化、紧固件的松紧等引起的偏转。可以采用多种布置将多个子物体附接到基板上。在替代实施例中,子物体可以附接到多个基板,或者它们可以附接到多条轨道。如上所述,子物体之间的间隔通常应使每个传感器能够成像并配准至少一个子物体。或者,如图7的示例所示,校准物体700可以包括多个平截头体(或其他3d形状)710,它们一体地形成在基板720上,其间具有适当的间隔sf。平截头体的尺寸及其相对间隔(sf)可以允许每个传感器对多于一个截头体710进行成像和配准,但通常至少一个被成像和配准。多个基准730和/或数字740可用于唯一地标识每个平截头体710。在一个实施例中,校准物体可包括用于将校准物体安装到安装板的通孔。在另一实施例中,那些孔可以位于弯曲部中,使得固定力最小化(机械隔离)校准物体的进一步变形(可以预期校准物体可以变形,但目标是校准物体变形为稳定的形状)。在另一实施例中,校准物体可以包括在校准物体的底面上内置的间隔物,使得校准物体仅在局部区域内接触安装板,以便最小化校准物体的进一步变形。在替代实施例中,可以使用运动支架以便引起一致的变形。

接下来,在步骤620中,过程600通过执行说明性设置过程和分析测量值以自动计算所采集参数。自动计算意味着以最小化需要用户输入特定数字或参数的方式命令设置,使得设置和校准程序相对“用户友好”并且不需要重要的知识或者训练。诸如计算参数和坐标空间之间的变换、识别和测量校准物体上的特征等的动作是期望自包含在系统的算法/程序内(并且对于用户是不可见的)。如下所述,该系统和方法允许用户通过在相关gui屏幕上一系列提示的导航来直接操作。

在过程600的步骤630中,用户以允许其在传送器的运动期间,相对于一个或多个传感器的一个或多个fov从一个或多个位移传感器在多个方向上,“扫描”(即由一个或多个传感器成像)(还要注意术语“扫描”和“成像”指被测量)所获取的3d(距离)图像集合的方式来布置校准物体(其中所有采集涉及相同的传送器)。注意,扫描可以替代地输出通用3d数据,并且不限于特定距离图像。在替代实施例中,3d传感器校准程序可以获取并使用3d点云数据,而不是3d(距离)图像数据。参考图8,示出了两个单独的扫描810和820,每个扫描由校准程序执行(步骤630)。在第一扫描810中,一个位移传感器(例如,传感器112)观察所有校准子物体840、842和844(即整个校准物体830)。如下所述,该传感器识别并配准/对齐第一扫描810中的每个子物体中的特征。然后,在第二扫描820中,每个位移传感器110、112、114对相应的校准子物体840、842、844成像,并使用来自第一扫描的配准特征来执行校准,包括将每个传感器的坐标空间拼接在一起为公共坐标空间。注意,每个子物体840、842、844包括相应的唯一(例如,印刷、雕刻、喷丸、蚀刻和/或凸起的)基准860、862、864。如图所示,基准在几何上被模式化以定向子物体中每个平截头体内的特征。基准还可以限定独特的形状或包括(或在基准860中省略)唯一定位和/或形状标记(例如,在相应的基准862和864中的点872、874)。如图所示,点被省略和/或定位在沿基准的长度的不同位置处以限定相应的子物体。可替代地,(例如)唯一数字可用于识别每个子物体,其在扫描期间由多个适当的视觉工具识别。更一般地,校准物体和子物体可以包括标记,其消除了对称且基本相同的校准子物体的含糊。这些标记还指示校准子物体的手性,以及提供系统可以通过其唯一地识别每个子物体的机制。在一个实施例中,可以在每个子物体上设置空间/位置,并且在板组装时(即上面的步骤610),可以将多个独特的基准标签应用于校准板上的每个子物体。

作为第一扫描的一部分,并且如图9所进一步描述,校准物体830可以偏斜ac的方式引导通过3d传感器(例如)112的视场,如在phys3d空间中传送运动箭头(向量)my所示。因此,传送和/或物体不需要与位移传感器精确对准。在这种情况下,无论传送方向(或幅度)如何,校准程序都可用于生成经过校正的、物理上精确的测量。因此,对具有偏斜ac的所获取的图像910进行校正,使得物体看起来与传感器(i)坐标空间(即,yi,xi,zi)对齐。在一些位移传感器系统中,用户指定传送运动的大小(例如,每个编码器标记0.010毫米),并且该用户指定的数字可以是不正确的。值得注意的是,通过利用位移传感器工厂校准信息(通过根据所获取距离图像和物理上精确的坐标之间的校准变换来变换测量值),可以校正从所获取3d图像中提取的测量值。

明确地预期在可以从数据文件获得3d特征的测量的各种实施例中可以一个或多个省略测量步骤(即,这里的第一“扫描”),数据文件例如是基于工厂提供的用于校准物体的数据和/或基于物体规范的坐标测量机(coordinatemeasuringmachine,cmm)。在这种情况下,将测量数据提供给下面描述的校准步骤,以用于多个3d传感器的同时校准。

在过程600的步骤640中(图6),系统同时配准在每个传感器的3d图像中子物体特征的各个位置。在该示例中,校准子物体包括平面特征,并且每组三个相邻平面相交以测量3d特征位置。在该示例中,每个平面是从与校准物体的指定区域对应的3d数据测量的,并且作为另一示例,可以布置那些指定区域以便包括来自平面区域的数据,并且排除不属于平面区域的数据,以及还排除相对远离平截头体的数据。因此,每个示例性的四边金字塔(平截头体)子物体产生八个3d点。从平面测量3d点是本领域技术人员已知的,并且多种程序、模块和工具可用于在获取的3d(距离)图像上执行这些功能。例如,这种工具可从马萨诸塞州纳蒂克的康耐视公司获得。在一个实施例中,用于测量平面的测量区域(其用于测量3d特征位置)在校准子物体上是对称的。这使得测量的3d特征位置相对于校准子物体的呈现是无偏的。

参考图10,传感器110、112、114各自示出相关联的相应坐标空间originalsensor3dsensor=0、originalsensor3dsensor=1、originalsensor3dsensor=2(即轴1010、1012、1014)。物体830包括object3d空间中的示例性特征校准物体物理特征位置(例如,在每个子物体(840、842、844)上的角))、子物体840的f00-f07、子物体842的f10-f17和子物体844的f20-f27。如图所示,对于每个传感器将这些变换(虚线箭头1040)成相应的测量特征位置(例如)m0100-m0107、m0110-m0117和m0120-m0127。在一个实施例中,特征检测工具/程序检查子物体的相同块以用于测量特征位置。特征检测程序估计与测量的平截头体的每个面相对应的3d(距离)图像的部分。基于在距离图像中每个面的预期区域,特征检测程序计算距离图像像素的数量,该距离图像像素用于实际估计该面的平面。然后,特征检测程序计算用于测量每个面的距离图像像素的比例,其等于用于估计平面的距离图像像素的数量除以对应于该面的区域中的距离图像像素的数量。将用于估计平截头体的每个平面的预期测量区域的比例与比例公差进行比较,使得仅几乎完全测量的特征用于校准计算。这使得3d传感器校准对于每个子物体的平面性/非平面性是不变的。由于在位移传感器校准的所有扫描期间使用相同的平面区域并由此使用3d特征点来测量每个平截头体平面,因此实现了这种不变性。在另一实施例中,当为了忽略角而计算比例使用比率时,这些角是最有可能延伸到相关3d传感器的测量区域之外,此时针对每个子物体测量的区域忽略底部特征(并因此导致说明性公差检查失败)。期望实现测量一致性,可以通过在该程序中省略某些3d图像像素来更有效地实现。

参考上面的定义,在originalsensor3d坐标中测量测量特征位置mscan,sensor,subobject,feature。这些是由特征检测器针对每个扫描的每个3d传感器检测到的校准子物体的测量特征位置。

现在参考过程600的步骤650(图6),系统通过估计传感器配置参数同时计算所有传感器的位移传感器校准(即“场校准”)。基于给定的测量特征位置mscan,sensor,subobject,feature,3d传感器校准涉及估计以下参数:

校准物体物理特征位置ffrusta,feature

object3dfromphys3dpose=p

originalsensorxz3dfromphys3dsensor=i

motionvectorinphys3d

注意,对于每个传感器i,通过将originalsensorxz3dfromphys3dsensor=i的x轴和z轴与motionvectorinphys3d的y轴结合来计算originalsensor3dfromphys3dsensor=i。具体如下:

phys3dfromoriginalsensorxz3dsensor=i*(x,y,z)=

(a*x+b*y+c*z+tx,d*x+e*y+f*z+ty,g*x+h*y+i*z+tz)

motiondirectioninphys3d=(mx,my,mz)

phys3dfromoriginaisensor3dsensor=i*(x,yz)=

(a*x+mx*y+c*z+tx,d*x+my*y+f*z+ty,g*x+mz*y+i*z+tz)

originalsensorxz3dfromphys3dsenso=i=phys3dfromoriginalsensorxz3dsensor=i-1

originalsensor3dfromphys3dsensor=i=phys3dfromoriginalsensor3dsensor=i-1

注意,在一些实施例中,对于所选传感器,其中所选传感器的x和z坐标轴的向量叉积与测量的y坐标运动方向的点积为负,motiondirectioninphys3d的负值被用于一些传感器的originalsensorxz3d中作为y轴。校准物体物理特征位置ffrusta,feature由每个特征的3d点(x,y,z)表征。除前三个特征位置外的所有特征位置都由三个数字表征。注意,这里的前三个特征位置说明性地定义了正则坐标空间(canonicalcoordinatespace),并且因此,它们的值受到约束。特征点定义正则坐标空间,以便phys3d坐标空间约束特征位置;否则,如果特征位置不受约束,则phys3d坐标空间相对于物体坐标空间将是多余的,因为phys3d坐标空间可以与特征位置进行折衷。说明性地,前三个校准特征顶点位置受到约束(使得没有冗余自由度)。例如,第一个顶点位置是(0,0,0)。第二个顶点位置是(x1,0,0),第三个顶点位置是(x2,y2,0)。以这种方式,校准特征物体说明性地定义了用于进一步校准计算步骤的参考平面。

除了第一个姿态p==0,每个物体姿态object3dfromphys3dpose=p都有六个自由度(因为它们表征3d刚性变换)。每个物体姿态object3dfromphys3dpose=p由三值四元数、标识和3d向量表征,该标识指定哪个四元数值为1(或-1),该3d向量表征3d平移。第一个姿态被约束为识别变换,因此phys3d坐标空间不是多余的(其中,说明性地,当存在冗余自由度时,梯度下降求解器是困难的)。三值四元数表征四个四元数值中的三个,其中表征还包括一个标识,该标识表示哪个四元数是固定的(+1或-1)(四元数通常由四个齐次值表征,其中p2+q2+r2+s2==1,更一般地,单位四元数用于表示3d旋转,如本领域所公知的==1)。使用三个四元数值和标识来表征3d旋转对于技术人员来说是已知的。有用的背景信息参考aarons.wallack等人的名为methodsandapparatusforpractical3dvisionsystem,专利号为8,111,904的美国专利,其教导在此引入。

每个传感器姿态originalsensorxz3dfromphys3dsensor=i都由八(8)个值表征,包括x标度和y标度,以及刚性变换。在一个实施例中,每个3d传感器姿态originalsensorxz3dfromphys3dsensor由针对x轴的3d向量和针对z轴的2d向量表征(其中一个系数是从x轴和z轴的两个分量导出的,以使得点积为0且标识表示z轴缺失的值),并且y轴计算为z轴与x轴叉积的单位长度,而平移是由三个数字表征的三维向量。在另一个实施例中,每个3d传感器姿态originalsensorxz3dfromphys3dsensor由三值四元数、标识、3d向量以及两个附加数字(针对x标度的一个数字和针对z标度的一个数字)表征,该标识指定哪个四元数值为1(或-1),该3d向量表征3d平移。另外,3d向量motionvectorinphys3d具有三个独立的自由度,并且由三个数字表征。

图11是另一示意图1100,示出了与由至少三个子物体840、842、844组成的物理校准物体830相关联的参数。

在一个实施例中,可以通过最小二乘分析来估计3d传感器校准参数。在替代实施例中,可以通过绝对差的总和来估计3d传感器校准参数。在另一实施例中,通过最小化最大误差来估计3d传感器校准参数。用于估计校准参数的其他数值近似技术对于本领域技术人员应该是清楚的。对于针对每个测量特征位置使用最小二乘分析来估计校准的实施例,系统基于参数计算其估计的特征位置,然后计算估计的特征位置与对应的测量特征位置之间的差异。接着,系统计算该差异长度的平方(例如,通过将该差异向量与其自身进行点积)。然后对所有平方差进行求和以计算平方差的和(包括来自所有测量特征位置的贡献)。该方法假设导致平方差的和最小的参数是最佳3d传感器校准。最小二乘分析假设有一组特定的参数可以引起最小平方误差。对于采用绝对差之和的实施例,总误差被计算为绝对差之和,并且导致绝对差的和最小的参数提供最佳3d传感器校准。对于采用最小化最大误差的实施例,导致最小最大误差的参数提供最佳3d传感器校准。

最小二乘分析通过给定测量特征点的参数误差函数来表征平方和误差,即e(...|m)=e(校准物体物理特征位置ffrusta,feature[0..x1],object3dfromphys3dpose=p,[0..x2],originalsensorxz3dfromphys3dsensor=i[0..x3],motionvectorinphys3d|mscan,sensor,subobject,feature)(命名为[0...numx]表示误差函数包含每组变量的多个实例,每个未知数和命名为“|m”表示误差函数是测量特征m的函数,但这些测量不是变量)。迭代方法用于寻找最小化e(...|m)的参数。导致最小误差的参数表征3d传感器校准。

图12描述了使用梯度下降技术改进校准参数的基本过程1200。在步骤1210中,系统初始化地估计校准参数。然后使用如本文所述的适当梯度下降技术在步骤1220中改进参数。为了鲁棒性,说明性实施例包括使用数值计算的导数来改进参数(例如levenberg-marquardt梯度下降)。另一实施例可包括(针对数值计算的导数)使用不同的步长执行改进以增加到达全局解的概率。另一个实施例可以包括以迭代的方式不止一次地执行改进,并且对于每次执行,采用不同的步长集合,然后比较由估计的参数引起的误差e(...|m),并选择导致最小误差e(...|m)的参数。

在各种实施例中,用户指定(在一个实施例中,使用gui指定;在其他实施例中,经由存储文件指定;并且在其他实施例中,经由编码在场景中的信息指定,该信息在扫描中从3d数据提取)校准物体特征位置,并且这些值被使用而不估计。在这些实施例中,误差函数取决于测量特征位置和指定的特征位置,但那些测量不是变量。e(...|m,f)=e(object3dfromphys3dpose=p,[0..x1],originalsensorxz3dfromphys3dsensor=i[0..x2],motionvectorinphys3d|mscan,sensor,subobject,feature,ffrusta,feature)。

可以根据以下说明性步骤计算估计的特征位置。给定(在object3d坐标中指定)与扫描姿态p和传感器i对应的3d特征位置ffrusta,feature,第一步是通过使用object3dfromphys3dpose=p变换的逆将其映射到在phys3d坐标中的特征位置以计算fphys3dfrusta,feature:

fphys3dfrusta,feature=(object3dfromphys3dpose=p)-1*ffrusta,feature

在下一步中,系统计算phys3d中的交叉平面,其中包括将sensorxz的原点映射到phys3d坐标并将其y轴(垂直于其平面)映射到phys3d坐标。

sensorxzphys3dorigin=(originalsensorxz3dfromphys3dsensor=i)-1*(0,0,0)

sensorxzphys3dyaxis=(originalsensorxz3dfromphys3dsensor=i)-1*(0,1,0)-sensorxzphys3dorigin

交点的y坐标对应于必须将多少个motionvectorphys3d实例添加到特征位置以便与传感器平面相交。沿着方向motionvectorphys3d行进的3d点以(motionvectorphys3d点乘(sensorxzphys3dyaxis))的速率更改其与sensorxzphys3dyaxis的点积。起初,点fphys3dfrusta,feature与来自平面sensorxzphys3dyaxis的(fphys3dfrusta,feature-sensorxzphys3dorigin)点乘(sensorxzphys3dyaxis)的值不同,因此3d移动了以下数量的motionvectorphys3d实例以与平面相交:

numinstances=((fphys3dfrusta,feature-sensorxzphys3dorigin)点乘(sensorxzphys3dyaxis)))/motionvectorphys3d点乘(sensorxzphys3dyaxis))

在这些实例之后,特征位置在intersectionpoint处与平面相交,

intersectionpoint=fphys3dfrusta,feature+numinstances*在phys3d坐标中的motionvectorphys3d。

可以通过变换originalsensor3dfromphys3dsensor=i来映射以计算在originalsensor3d坐标中的交点。请注意,对于给定的参数集,此映射是线性的,因此映射originalsensor3dfromphys3dsensor=i是线性变换,可从originalsensorxz3dfromphys3dsensor=i和motionvectorphys3d计算。对于给定的参数集,乘法因子1/motionvectorphys3d点乘(sensorxzphys3dyaxis)是常量。图13是基于上述numinstances的测量特征位置的示意图1300。

总误差函数e(...|m)表征在测量特征位置与估计的特征位置之间的差的平方和。每个测量特征位置(mscan,sensor,subobject,feature)在其各自的传感器的originalsensor3d坐标中测量。每个校准物体特征位置最初在object3d坐标中指定。为了比较每对相应的位置,必须首先将它们转换成一致的坐标。对于在每个传感器的originalsensor3d坐标中测量误差的实施例,通过phys3dfromobject3dpose=p变换的映射将特征位置(其最初在object3d坐标中指定)变换为originalsensor3d坐标,该变换是object3dfromphys3dpose=p变换的逆,并通过变换originalsensor3dfromphys3dsensor=i映射。

e(...|m)=eoriginalsensor3d(...|m)=sum|(mscan,sensor,subobject,feature-(originalsensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)|2

在每个传感器的originalsensor3d坐标中测量误差的实施例中,在每个传感器的originalsensor3d坐标中测量误差的优点是坐标未被缩放,因为它们与测量特征位置相关联。在每个传感器的originalsensor3d坐标中测量误差的缺点是坐标不一定是物理上精确的或正交的,因此originalsensor3d坐标中的测量值可能受到校准物体的显示姿态偏差;对于每个传感器的originalsensor3d坐标,y坐标对应于传送的幅度(motionvectorinphys3d),而x坐标和z坐标由工厂校准限定,并且传送幅度的比例是位移传感器场校准估算项目之一。

在位移传感器场校准过程的另一个实施例中,在估计motionvectorinphys3d并进行补偿之后,重复位移传感器场校准计算。因此,减小了originalsensor3d坐标的非正交性,从而减少了由于计算非正交坐标空间中的误差而产生的偏差。或者,在每个传感器的sensor3d坐标中测量误差的实施例中,通过坐标变化变换phys3dfromoriginalsensor3dsensor=i将测量特征位置变换成每个传感器的sensor3d坐标,该坐标变化变换是originalsensor3dfromphys3dsensor=i的逆。然后,该过程通过变换sensor3dfromphys3dsensor=i进行映射。通过phys3dfromobject3dpose=p变换的映射将(最初在object3d坐标中指定的)特征位置转换到sensor3d坐标中,该变换是object3dfromphys3dpose=p变换的逆。接着,该过程通过变换sensor3dfromphys3dsensor=i进行映射。

e(...|m)=esensor3d(...|m)=sum|((sensor3dfromphys3dsensor=i*(originalsensor3dfromphys3dsensor=i)-1*mscan,sensor,subobject,feature)-(sensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)2

在phys3d坐标中测量测量误差的实施例中,通过坐标变化变换phys3dfromoriginalsensor3dsensor=i将测量特征位置变换到phys3d坐标中,该坐标变化变换是originalsensor3dfromphys3dsensor=i的逆。通过phys3dfromobject3dpose=p变换的映射将(最初在object3d坐标中指定的)特征位置转换到phys3d坐标中,该变换是object3dfromphys3dpose=p变换的逆。

(...|m)=ephys3d(...|m)=sum|(((originalsensor3dfromphys3dsensor=i)-1*mscan,sensor,subobject,feature)-((object3dfromphys3dpose=p)-1*ffrusta,feature)|2

注意,在每个传感器的sensor3d坐标中测量误差的实施例和在phys3d坐标中测量误差的实施例可以是相同的,因为在3d刚性变换下保持距离并且sensor3d和phys3d通过3d刚性变换相关联。

以下是就上述误差函数e(...|m)估计初始参数程序的进一步描述。该系统和方法说明性地采用梯度下降改进技术来计算使e(...|m)最小化的参数。梯度下降技术需要一组初始参数(以启动程序)。由于上述误差函数可以表现出局部最小值,因此优选的是初始参数在最佳参数估计附近(因为,梯度下降法因此更可能收敛于真正的最小值而不是收敛到局部最小值)。

说明性地,3d传感器校准涉及估计以下参数的初始值:

校准物体物理特征位置;

object3dfromphys3dpose=p;

originalsensorxz3dfromphys3dsensor=i;和

motionvectorinphys3d。

在一个实施例中,粗略估计说明性地需要在一个(即初始)扫描中对子物体特征的至少一个传感器测量。在替代实施例中,粗略估计说明性地需要通过组合来自多次扫描的测量来确定子物体特征。在另一实施例中,当在一次扫描内由同一传感器测量多个子物体时,(由于感测模态)计算每对相对位置(直到为线性变换),并且一组相对位置对被绑定以导出所有子物体特征位置的估计。参考图14,其更详细地示出粗略估计过程1400,其中从校准物体的测量特征位置估计初始物理特征位置。首先,在步骤1410中,选择(具有对应姿态p的)扫描或扫描的一部分,其包括捕获(来自传感器i的)校准物体的所有子物体的3d(距离)图像。这可以通过沿扫描方向motionvectorinphys3d(my)“垂直”定向物体来实现。接下来,在步骤1420中,测量来自该所选3d图像(在originalsensor3dsensor=i中)的特征位置,然后(可选地)测量的特征被偏移以确定其平均特征位置处的新坐标原点。然后,在步骤1430中,过程1400通过姿态0处的第一个所见子物体的特征位置的仿射映射,将集中测量的特征与(用于确定phys3d的)姿态0相关联。对于以下所有情况,姿态0表征第一个被扫描的姿态。如果在该姿态中任何传感器都没有测量到特征,则具有任何测量特征的最小索引的扫描用作姿态0。接下来,在步骤1440中,该过程通过仿射变换校正姿态0对齐的测量特征的尺度不精确性来获得校准物体初始物理特征位置,该仿射变换是通过从第一子物体的测量特征映射到其模型特征而获得的。

在一个实施例中,直接计算对应于originalsensorxz3d变换的粗略参数值,并且在该实施例中,将对应于originalsensorxz3d的变换与运动向量估计结合以导出originalsensor3d变换,其中导出的originalsensor3d用于计算。图15详述了用于估计传感器i在姿态0处找到任何一个或多个子物体的初始运动向量的过程1500。在步骤1510中,过程1500测量传感器i在originalsensorxz3dsensor=i中的特征位置(featuresoriginalsensor3dsensor=i,pose=0),其足以找到/识别姿态0处的校准物体的任何一个或多个子物体。在步骤1520中,过程1500然后通过(使用在姿态0处由用户提供的phys3dfromobject3d)将对应的初始估计的物理特征位置从object3d映射到phys3d空间来为传感器i在姿态0处所见的子物体计算物理特征位置(featuresphys3dsensor=i,pose=0)。接下来,在步骤1530中,过程1500通过从featuresphys3dsensor=i,pose=0到featuresoriginalsensor3dsensor=i,pose=0的映射来计算originalsensorxz3dfromphys3dsensor=i。然后,在步骤1540中通过传感器i的originalsensorxz3dfromphys3dsensor=i的逆来映射在originalsensorxz3dsensor=i中的单位y向量[0,1,0]计算初始运动向量。

图16示出了用于估计传感器i的初始originalsensorxz3dfromphys3dsensor=i的过程1600,其假设传感器成功地找到/识别姿态0处的任何(一个或多个)子物体。在步骤1610中,过程1600在传感器i的originalsensorxz3dsensor=i中测量特征位置(featuresoriginalsensor3dsensor=i,pose=0),其发现/识别在姿态0处的校准物体的任何一个或多个物体。在步骤1620,该过程然后通过(使用姿态0处由用户提供的phys3dfromobject3d)将对应的初始估计的物理特征位置从object3d映射到phys3d空间,来为传感器i在姿态0处发现/识别的一个或多个子物体计算物理特征位置(featuresphys3dsensor=i,pose=0)。然后,在步骤1630,过程1600通过从featuresphys3dsensor=i,pose=0到featuresoriginalsensor3dsensor=i,pose=0的运动向量引导映射来计算originalsensorxz3dfromphys3dsensor=i。相反,在图17中,过程1700估计传感器i的初始originalsensorxz3dfromphys3dsensor=i,其中在姿态0处没有找到或识别到子物体。在步骤1710中,过程1700由于在姿态0处的初始估计或者来自较早的非零姿态的估计而识别姿态p(p≠0),其中传感器i的originalsensorxz3dfromphys3dsensor=i是未知的,同时存在另一个传感器(j),其originalsensorxz3dfromphys3dsensor=j是已知的。在步骤1720中,过程1700然后基于传感器j就姿态p估计object3dfromphys3dsensor=j,pose=p。该步骤包括:(a)在传感器j的originalsensorxz3dsensor=j中测量特征位置(featuresoriginalsensor3dsensor=j,pose=p),其在姿态p处找到/识别任何校准物体的子物体;(b)通过使用传感器j的originalsensorxz3dfromphys3dsensor=j的逆,将测量特征位置从originalsensorxz3dsensor=j映射到phys3d空间,计算物理特征位置(featuresphys3dsensor=j,pose=p);以及通过从featuresphys3dsensor=j,pose=p到与在姿态p处与传感器j所见的一个或多个子物体相关联的校准物体物理特征位置的子集的刚性映射,计算object3dfromphys3dsensor=j,pose=p。在步骤1730中,过程1700然后在传感器i的originalsensorxz3dsensor=i中测量特征位置(featuresoriginalsensor3dsensor=i,pose=p),其在姿态p处找到/识别校准物体的任何一个或多个子物体。过程1700然后在步骤1740中收集(在object3d中)校准物体物理特征位置featuresobject3dsensor=i,pose=p的子集,其与在姿态p处由传感器i找到/识别的一个或多个子物体相关联。在步骤1750中,过程1700通过映射featuresobject3dsensor=i,pose=p与object3dfromphys3dsensor=j,pose=p的逆来计算物理特征位置(featuresphys3dsensor=i,pose=p)。然后,在步骤1760,通过从featuresphys3dsensor=i,pose=p到featuresoriginalsensor3dsensor=i,pose=p的运动向量引导映射来计算originalsensorxz3dfromphys3dsensor=i。

图18详述了用于估计姿态p的初始object3dfromphys3dpose=p的过程1800。在步骤1810中,过程1810测量在姿态p处找到/识别校准物体的任何一个或多个子物体的每个传感器(传感器i)的originalsensorxz3dsensor=i中的特征位置(featuresoriginalsensor3dsensor=i,pose=p)。然后,在步骤1820中,过程1800收集(在object3d中)校准物体物理特征位置featuresobject3dsensor=i,pose=p的子集,其与在姿态p处由传感器i所见的一个或多个子物体相关联。接下来,在步骤1830中,该过程通过使用传感器i的originalsensorxz3dfromphys3dsensor=i的逆,将测量特征位置从originalsensorxz3dsensor=i映射到phys3d空间来计算物理特征位置(featuresphys3dsensor=i,pose=p)。然后,在步骤1840中通过从featuresphys3dsensor=i,pose=p的并集到所有传感器上的featuresobject3dsensor=i,pose=p的并集的刚性映射来计算object3dfromphys3dpose=p。

在替换实施例中,通过估计originalsensor3d变换,然后从originalsensor3d变换估计originalsensorxz3d变换来计算与originalsensorxz3d变换对应的粗略参数值。在各种实施例中,通过使用x轴和z轴的叉积来替换该变换的y轴,从这些originalsensor3d变换计算originalsensorxz3d变换。在进一步的实施例中,通过就多个传感器平均originalsensor3d变换的y轴来估计运动向量估计。图15a详述了用于估计传感器i在姿态0处找到任何一个或多个子物体的初始运动向量的过程1500a。在步骤1510a中,过程1500a测量在传感器i的originalsensor3dsensor=i中的特征位置(featuresoriginalsensor3dsensor=i,pose=0),该传感器足以找到/识别姿态0处的校准物体的任何一个或多个子物体。在步骤1520a中,过程1500a然后通过(使用在姿态0处由用户提供的phys3dfromobject3d)将对应的初始估计的物理特征位置从object3d映射到phys3d空间来为传感器i在姿态0处所见的子物体计算物理特征位置(featuresphys3dsensor=i,pose=0)。接下来,在步骤1530a中,过程1500a通过从featuresphys3dsensor=i,pose=0到featuresoriginalsensor3dsensor=i,pose=0的映射来计算originalsensor3dfromphys3dsensor=i。然后,在步骤1540a中,通过就多个传感器平均originalsensor3dsensor=i变换的y轴来估计运动向量估计。在替代实施例中,通过传感器i的originalsensor3dfromphys3dsensor=i的逆映射在originalsensor3dsensor=i中的单位y向量[0,1,0],在步骤1550a中计算初始运动向量。

图16a示出了根据替代实施例的用于估计传感器i的初始originalsensor3dfromphys3dsensor=i的过程1600a,其假设传感器成功地找到/识别姿态0处的任何(一个或多个)子物体。在步骤1610a中,过程1600a测量在传感器i的originalsensor3dsensor=i中的特征位置(featuresoriginalsensor3dsensor=i,pose=0),该传感器足以找到/识别姿态0处的校准物体的任何一个或多个子物体。在步骤1620a,该过程然后通过(使用姿态0处由用户提供的phys3dfromobject3d)将对应的初始估计的物理特征位置从object3d映射到phys3d空间,来为传感器i在姿态0处发现/识别的一个或多个子物体计算物理特征位置(featuresphys3dsensor=i,pose=0)。然后,在步骤1630a,过程1600a通过从featuresphys3dsensor=i,pose=0到featuresoriginalsensor3dsensor=i,pose=0的运动向量引导映射来计算originalsensor3dfromphys3dsensor=i。通过将originalsensor3dfromphys3dsensor=i的y轴替换为originalsensor3dfromphys3dsensor=i的z轴和originalsensor3dfromphys3dsensor=i的x轴的单位长度叉积,在步骤1640a中从originalsensor3dfromphys3dsensor=i导出originalsensorxz3dfromphys3dsensor=i。替代地,在图17a中,示例性过程1700a估计传感器i的初始originalsensor3dfromphys3dsensor=i,其中在姿态0处没有找到或识别到子物体。在步骤1710a中,过程1700a由于在姿态0处的初始估计或者来自较早的非零姿态的估计而识别姿态p(p≠0),其中传感器i的originalsensor3dfromphys3dsensor=i是未知的,同时存在另一个传感器(j),其originalsensor3dfromphys3dsensor=j是已知的。在步骤1720a中,过程1700a然后基于传感器j就姿态p估计object3dfromphys3dsensor=j,pose=p。该步骤包括:(a)在传感器j的originalsensor3dsensor=j中测量特征位置(featuresoriginalsensor3dsensor=j,pose=p),其在姿态p处找到/识别任何校准物体的子物体;(b)通过使用传感器j的originalsensor3dfromphys3dsensor=j的逆,将测量特征位置从originalsensorxz3dsensor=j映射到phys3d空间,计算物理特征位置(featuresphys3dsensor=j,pose=p);并且通过从featuresphys3dsensor=j,pose=p到与在姿态p处与传感器j所见的一个或多个子物体相关联的校准物体物理特征位置的子集的刚性映射,计算object3dfromphys3dsensor=j,pose=p。在步骤1730a中,过程1700a然后在传感器i的originalsensor3dsensor=i中测量特征位置(featuresoriginalsensor3dsensor=i,pose=p),其在姿态p处找到/识别校准物体的任何一个或多个子物体。过程1700a然后在步骤1740a中收集(在object3d中)校准物体物理特征位置featuresobject3dsensor=i,pose=p的、与在姿态p处由传感器i找到/识别的一个或多个子物体相关联的子集。在步骤1750a中,过程1700a通过映射featuresobject3dsensor=i,pose=p与object3dfromphys3dsensor=j,pose=p的逆来计算物理特征位置(featuresphys3dsensor=i,pose=p)。然后,在步骤1760a,通过从featuresphys3dsensor=i,pose=p到featuresoriginalsensor3dsensor=i,pose=p的运动向量引导映射来计算originalsensor3dfromphys3dsensor=i。

图18a详述了根据替换实施例的、用于估计姿态p的初始object3dfromphys3dpose=p的过程1800a。在步骤1810a中,过程1810a测量在姿态p处找到/识别校准物体的任何一个或多个子物体的每个传感器(传感器i)的originalsensor3dsensor=i中的特征位置(featuresoriginalsensor3dsensor=i,pose=p)。然后,在步骤1820a中,过程1800a收集(在object3d中)校准物体物理特征位置featuresobject3dsensor=i,pose=p的子集,其与在姿态p处由传感器i所见的一个或多个子物体相关联。接下来,在步骤1830a中,该过程通过使用传感器i的originalsensor3dfromphys3dsensor=i的逆将测量特征位置从originalsensor3dsensor=i映射到phys3d空间来计算物理特征位置(featuresphys3dsensor=i,pose=p)。然后,在步骤1840a中通过从featuresphys3dsensor=i,pose=p的并集到所有传感器上的featuresobject3dsensor=i,pose=p的并集的刚性映射来计算object3dfromphys3dpose=p。根据本领域技术,预期本文所采用变换可以不同于图15-18和15a-18a中描述的变换。

iii.用户界面

在描述3d传感器校准程序的进一步细节之前,参考图19a-19m,其示出了根据说明性实施例的用于3d(例如位移)传感器校准程序和相关视觉系统的各种功能的示例性gui屏幕显示。注意,这些屏幕显示是可以呈现给用户的各种可能的屏幕和功能的示例,并且已经被简化以描述整个系统和程序的特定功能。因此,可以为本文所考虑的其他功能提供另外的界面屏幕显示,包括但不限于校准改进、系统错误、文件上传、下载和存储、联网、传感器设置、传送设置以及任务和命令的确认。可以根据本领域技术实现这些另外的gui屏幕和相关功能。通常,gui举例说明了校准的“自动”特性,其中要求用户输入最少的实质数字或参数数据,并且在整个校准程序中基本上由系统引导。

参考图19a,所描绘的gui屏幕显示1910表示设置阶段(标签1912),其中用户被提示(按钮1914)以开始新设置。假设已经安装多个3d传感器以对场景成像并且其通过适当的有线或无线连接与视觉系统处理器(例如pc)互连,以及传送器可以适当地传输运动数据(例如,通过编码器点击或脉冲)到处理器。

在图19b中,在用户执行并保存设置或依赖于先前加载的设置之后呈现欢迎屏幕1920。图19c中的屏幕1926(在窗口1928中)识别作为设置的一部分的位移传感器。请注意,传感器使用离散ip地址通过lan连接与系统通信。图19d中的屏幕1930通过允许用户经由单选按钮1932和1934选择传送类型来继续设置程序(例如分别为线性运动台和传送带)。可以适当地提供其他类型的传送器(例如,机器人操纵器、移动摄像机门架等)。在该示例中,传送器被选择为移动线性平台。

在图19e中,屏幕1936提示用户在传送装置上设置校准物体,并在窗口1938中描述物体相对于传送器和传感器的期望方向(这里称为“水平”);其中,校准物体上间隔开的子物体的细长长度沿横向/垂直于传送运动方向延伸。

一旦用户启动扫描,图19f中的屏幕1940报告(框1942)传送器正在第一遍通过。该通过确定了运动阶段的限制,通常计算编码器脉冲。该信息在图19g的屏幕1946中作为注释1948报告。该屏幕还在框1949中指示已启动第二扫描以确定系统的采集参数。通常,如图所示,校准物体水平放置,使得传感器能够找到/识别所有子物体(例如,平截头体)。如果找到所有,则在屏幕1950内的注释1952处报告。在屏幕区域1953报告轴的比例。用户有机会通过按钮1954基于另外的扫描或用户定义的参数来调整各种设置。否则,如图所示,设置被认为是完整的。参考图21和下面的过程2100,提供对设置过程的进一步描述。用户现在可以切换校准标签1955以启动校准阶段,通常使用与设置中使用的校准物体相同的校准物体,或者使用不同的物体。

参考图19i和gui显示屏幕1956,系统在设置(或者新建/保存或从已保存的文件加载)之后进入校准模式。如窗口1958所示,提示用户将校准物体放置在传送器上的垂直位置。垂直对齐应允许其中一个传感器对所有子物体进行成像。一旦物体被对准,则提示用户按下继续按钮1959,并开始扫描。在图19j和屏幕1960中,系统报告所有子物体(平截头体)由单个传感器测量(注释1962)。用户可以通过(使用重复按钮1963)重复该程序以提高精确度,以便从多次扫描/测量中获得平均测量。完成后,用户按下继续按钮并移至下一个校准步骤。因此,图19k中的屏幕1966提示用户将校准物体定向在水平面上,如窗口1968所示。这将允许每个传感器扫描离散的子物体。当对齐时,用户可以按下继续按钮1969以开始校准。

当启动校准时(通常通过单独的屏幕(未示出)启动,其中用户切换校准按钮1972),图19l中的gui显示屏幕1970然后通过框1973报告校准扫描和计算正在进行。该程序可以重复,如图19j中的(垂直)测量,以使用重复按钮1974来提高精确度。屏幕注释1975报告校准程序中的当前数字或垂直和水平扫描。

当校准完成时,向用户呈现图19m中的gui显示屏幕1980,其中在注释1982中报告扫描总数和rms误差(例如以微米为单位)。用户可以通过校准按钮1984将校准结果保存到适当的文件中,或者通过按钮1986退出而不保存。保存的校准可以在随后的运行时操作中加载,其中系统将(使用高达传感器阵列的完整校准宽度的)运行时物体测量结果提供给其他应用,例如质量控制应用、表面检测应用、机器人操纵应用程序等。

iv.热校准

预期温度的变化可影响如上所述校准的精确性。在说明性实施例中,在各种温度下执行多次场校准,使得可针对给定的运行时温度内插整体校准。在另一实施例中,针对低于预期运行时(环境)温度和高于运行时温度的校准,该内插包括线性内插两个变换。温度可以根据外部条件的自然变化或施加外部加热/冷却而变化。在另一实施例中,该内插包括用于校准的变换之间的非线性内插,并且非线性内插是运行时温度和校准时温度的函数。在又一个实施例中,该内插包括在motionvectorinphys3d之间使用线性内插而进行内插,并且使用本领域已知的实现方式(例如,通过万维网上在url地址为http://www.engr.colostate.edu/ece555/reading/article_8.pdf处的有用背景信息,或通过使用如下等式在r0和r1之间插入数值的技术:ri=(r1*(inverse(r0)))^a*r0,其中r^a定义为通过a*theta给出了一个关于向量[kx,ky,kz]的旋转)在3d刚性变换(诸如对于sensor3dfromphys3d)之间进行内插的操作。

图20详述了考虑到温度变化的校准的一般过程2000。在步骤2010中,用户根据上述过程执行一次或多次3d传感器校准。这些都通过gui存储在系统中。在步骤2020中,在运行时测量温度(和/或在整个运行时操作期间的平均温度)。然后,在步骤2030中,使用来自步骤2020所记录的校准值(基于上述实施例中的至少一个(例如,插值等))计算适合于运行时温度的3d传感器校准。

v.系统设置

3d传感器校准依赖于适当配置的传感器以提供可用数据。示例性位移传感器包括仔细设置的多个参数(例如,曝光、检测区域、采集速率、摄像机方向、采集长度和分辨率)以产生有效数据。如果采用多个传感器,这些参数中的一些也应该在传感器之间保持一致。如果未正确选择任何这些参数,则数据不精确性可能会损害场校准或完全不兼容。根据说明性实施例,自动设置是导出这些参数的可选两步程序,而无需任何针对任意组位移传感器的设置或传送器的先验知识。它的构造和布置是为了克服传感器功能的某些限制。现在参考图21,其示出了设置过程2100。如上所述(图6),可以组装校准物体,使得每个传感器在步骤2110中配准至少一个子物体。在步骤2120中,该过程检测传送器的距离、速度和运动方向。系统可以通过硬件编码器信号识别传送器。对于仅支持预定义采集(例如,不支持滚动采集)的编码器驱动的位移传感器,其需要该步骤。举例来说,传送器的特征在于编码器刻度/脉冲随时间的变化。编码器刻度的总变化捕获传送器的遍历距离。编码器刻度的速率捕获传送器的运动速度。编码器刻度变化的极性捕获传送方向。这些特性允许为所有传感器采集图像,而不管其功能如何。

接下来,在过程2100的步骤2130中,系统优化每个传感器的采集参数。每个传感器(同时或串行地)使用一组默认参数来获取校准物体的3d数据(在一个示例性实施例中是距离图像,在另一示例性实施例中是具有灰度图像的距离,在另一示例性实施例中是3d点云数据,并且在又一示例性实施例中是包括灰度信息的3d点云数据)。在获取图像之后,系统首先计算并校正clientfromimage变换的yscale。一种方法是利用方形平截头体的对称设计和在x轴上的精度来搜索距离图像中的矩形斑点并将它们校正为正方形。由于所有传感器共享相同的传送器和驱动器,因此每个传感器可以共享校正的yscale。

接下来在步骤2140中,使用来自每个传感器的所获取灰度图像来校正曝光。通过利用曝光和灰度像素值之间的相关性以及传感器模型的最佳灰度值的知识,可以调整每个传感器的曝光以避免饱和,同时最小化丢失的像素。这可以纠正传感器和校准子物体的差异。假设校准物体的所有子物体具有相同的反射率(即暗度),则灰度值的差异源自传感器灵敏度(例如激光强度)的变化。否则,任何其他差异都将源于子物体之间的差异。在一个实施例中,如果要考虑子物体变化,则期望通过来隔离和表征子物体反射率的变化,在该附加采集中由单个传感器找到/识别所有子物体。

检测到的子物体形成检测区域的下界窗口,其中后续采集应该期望找到被每个传感器测量的校准物体。由于精度和视场随着到传感器的距离而缩放,因此到传感器的距离也用于优化3d分辨率和视场。在步骤2150中,目标yscale分辨率也与传送器的运动速度相平衡,以避免超出。检测到的子物体的方向用于校正图像的坐标空间,使得它们是一致的。

其他可选功能可用于支持边缘情况。在一个实施例中,如果运动不是非常一致(即,瞬时速度可以远高于平均速度),则如果位移传感器不能足够快地轮询编码器以充分读取瞬时速度(步骤2170),可以手动或自动增加公差因子。在一个实施例中,如果运动速度相对于传感器的最大采集速率显着地快,则可以减小初始检测区域以支持该更高速度(步骤2160)。在各种实施例中,可以手动或自动驱动这些可选功能。可以任选地输入附加的先验知识,例如遍历距离或运动速度,以加速该程序。

vi.附加参数改进

如上所述,粗略估计采用由至少一个传感器的校准物体的至少一次扫描,该传感器被称为基础传感器。通常,基础传感器应该能够测量该扫描中的所有子物体特征。这提供了phys3d坐标的初始定义。其假设在用于估计的传感器的originalsensorxz3d中,运动方向是(0,1,0),并且由此可以估计传感器姿态。该粗略估计扫描可以通过分析其他扫描来引导其他传感器的姿态,其中一个传感器已经具有已计算的姿态而另一个传感器尚未具有,并且扫描包括来自两个传感器的数据。由于系统知道特征位置之间的关系,因此可以推断该知识以确定每个其他传感器的姿态。这种引导方法一直持续到系统随后估计所有传感器的姿态为止,对于每次扫描,之所以系统可以估计扫描姿态,是因为它已经为每个传感器生成估计以及校准物体特征的估计。

给定校准物体的一组测量特征位置,其位于不同的姿态并由不同的传感器捕获(其中术语“捕获”表征物体已被测量),图22描绘了用于提供以下初始参数的初始值估计的框图2200:校准物体物理特征位置(方框2210);motionvectorinphys3d(方框2220),originalsensorxz3dfromphys3d(方框2230和2240);和object3dfromphys3d(方框2250)。这些初始参数的估计通常如图14-18中所描述的过程执行。在这种情况下,用于估计校准物体物理特征位置的测量特征位置与所选传感器相关联,而使用姿态0处的所选传感器估计motionvectorinphys3d。利用同组测量特征位置,随着两个所选传感器中的任何一个变化,估计的参数将改变并产生不同的特征预测误差。通过多次扫描进行的场校准可以有多个传感器,其在不同姿态处看到所有校准子物体。因此,根据图22,存在各种可用选项以确定所选传感器中的一个以用于估计。存在这样的选项,其中多个传感器在姿态0处找到/识别子物体。

在一个实施例中,选择性地应用多个传感器作为基础传感器,并且为该传感器再次执行计算。然后比较由每个基础传感器的计算所产生的平方和误差。选择引起最小平方和误差的基础传感器,并用于选择其相应的位移传感器场校准。在另一实施例中,指定子物体特征位置,在这种情况下,跳过估计子物体特征位置的初始参数估计步骤(并且使用指定的特征位置)。

估计初始参数值的质量直接影响位移传感器场校准的性能,例如,它是否可以通过改进收敛到最小值,以及如果收敛,它有多快。因此,在另一实施例中,为了克服可能由初始估计参数的不确定性引起的在最终校准结果中的差异,在图23中提供了高级初始参数估计过程2300。该高级过程2300首先通过是否取反与每个传感器相关联的x或y值,来尝试测量特征位置的四种可能的修改中的每一种。这允许每个传感器在其独立于其他传感器和独立于扫描运动方向上的采集方向(“激光到镜头”或“镜头到激光”)是可配置校准的。为了补偿可能的修改特征,采用后处理以确保最终校准结果(在改进之后)从对测量的特征所做出修改的效果中恢复。过程2300还尝试(循环)所有可能的传感器候选者,其测量特征位置用于估计校准物体物理特征位置的初始值,和motionvectorinphys3d以搜索最佳结果。然后在步骤2320中,过程2300在传感器上循环,这些传感器以任意姿态找到/识别校准物体的所有子物体,以执行下面的步骤2330至2360。在步骤2330中,该过程循环在传感器上,这些传感器在姿态0处找到/识别任何校准物体的子物体以执行下面的步骤2340至2360。然后在步骤2340,过程2300对所选择的传感器进行基本初始参数估计,该所选择的传感器在由传感器获取的距离图像中找到/识别所有一个或多个子物体(其中术语“查找/识别”表征已发现/已识别子物体的状态,在换句话说,“看到”子物体),并且该所选择的传感器根据过程2200确定运动向量。然后在步骤2350中,过程2300计算与当前估计的初始参数相关联的特征位置预测误差。接下来,在步骤2360中,过程2300保持跟踪估计的参数和传感器指定的特征x,y修改状态,其导致在所有级别循环上的最小误差。

有利地,上述一个或多个过程授予最佳的可能初始参数估计,其导致给定测量特征位置的最小特征预测误差。它们确保关于传感器的采集方向和运动方向的正确配置状态,这使得后一个改进程序收敛于测量特征位置(可能被修改)。一个或多个过程还克服了针对给定的一组测量特征位置的估计初始参数值的不确定性,并且即使校准扫描的顺序改变,也进一步导致确定性校准结果。此外,无论每个传感器在采集方向和运动方向上的配置如何,初始参数估计都自动修复由不同传感器测量特征位置之间所存在的不一致性,确保场校准算法在收敛的小预测误差方面达到传感器之间的一致性。一个或多个过程还增强了多个位移传感器的设置/安装以及待捕获移动物体的运动的灵活性,这减少了配置应用于广泛应用的位移传感器的工作量。另外,有利地,一个或多个过程支持传感器的校准,该传感器捕获的3d数据(诸如距离图像或点云)所导出的特征位置由于各个传感器被不同配置而被左手性或右手性地表示。

说明性地,该系统和方法采用levenberg-marquardt梯度下降过程来改进参数估计。根据另一实施例,系统可以(a)归一化输入数据,以便调节输入数据(b)平移输入位置,使得每个扫描的平均位置是(0,0,0);(c)缩放所有输入位置,使得输入位置的标准差为1.0;以及(d)在针对梯度下降重归一化数据后,撤消平移并升高估计的参数。为了鲁棒性,一个实施例可以包括使用数值计算的导数来改进参数(例如levenberg-marquardt梯度下降),而另一实施例可以包括(就数值计算的导数)使用不同的步长来增加到达全局解的概率。

参考图24,(针对levenberg-marquardt)可以采用过程2400,通过改变用于计算数值导数的步长来增加梯度下降技术找到全局解的概率。在步骤2410中,选择数值导数步长s。然后在步骤2420中使用基于数值步s的梯度下降技术来改进校准参数。然后,在步骤2430中,调整步长s。对于不同的步长(通过判定步骤2440)重复步骤2410-2430,直到所有步长都已用尽(注意,这可以是用户定义的或预编程的值)。然后完成改进(步骤2450)。

为了鲁棒性,实施例可以包括尝试多个(至少两个)系列的数值导数步长(步骤2510和2520)并且基于它们各自的e(...|m)误差(步骤2530)比较最终参数估计,选择具有对应最低e(...|m)误差的参数估计(步骤2540)的过程(图25中的2500)。在指定3d物体特征位置的替代实施例中,可以采用类似的过程,其比较引起e(...|m,f)误差的参数以选择具有对应最低e(...|m,f)的参数估计。

vii.灰度渲染

再次参考图6的通用校准过程600,系统可以可选地采用校准以实现检查物体的物理精确测量(步骤660)。这种测量的一个用途是生成渲染的、物理上精确的3d(距离)图像,其可以包括物体的3d表面特征的灰度表示。渲染例程可以将3d点数据、3d分面数据、3d(距离)图像(其表征每个(i,j)像素位置处的z高度)或峰值数据作为输入,在其转化到物理坐标之前作为位移传感器的原始输出。输入峰值数据具有某些优点,包括最小化渲染步骤的数量,因为每次渲染涉及量化(并且因此引入量化误差),并且峰值数据允许采用有意忽略人工特征的几何启发式方法。在一个实施例中,通过(例如)左上、右上和左下顶点以及右上、左下和右下顶点来表征四路连接的邻点(neighbor)被分解成两个三角形面。

现在提供使用校准数据渲染物理上精确的3d(距离)图像的说明性过程的描述。作为背景,机器视觉系统通常适于处理2d图像,因此生成校准的(具有物理上精确坐标和z测量的)3d(距离)图像有时是有用的。渲染场校准数据包括将测量的传感器数据与场校准结合以生成场已校准数据,然后从这些数据渲染3d图像。对于单独渲染的距离图像,用户指定目标客户端坐标空间,例如,目标客户端坐标空间可以是sensor3dsensor=i,其与特定传感器i对齐并且是物理上精确的坐标空间。用户还指定(在x和y中)期望的像素尺寸和期望的z级量化。在替代实施例中,用户还指定期望的灰度级量化。3d(距离)图像渲染功能可以基于测量的3d数据、目标3d图像坐标空间以及3d图像像素尺寸和量化来自动确定3d图像的距离。或者,用户可以通过(例如)gui指定3d图像的期望距离。当使用多个传感器时,将其所有单独的3d(距离)图像渲染到相同的坐标空间中可能是有利的,因为这简化了将各个3d图像合并成复合距离图像的任务(因为,系统因此仅需要处理相应的像素值并且可以避免在合并步骤中执行任何重采样)。

现在参考图26,其示出了程序2600的示意图,该程序将根据说明性系统和方法生成的校准应用于来自一个或多个3d传感器的测量,以便产生物理上精确的3d数据,然后从那些物理上精确的3d数据渲染3d(距离)图像。如图所示,物理物体2610被一个或多个传感器2620成像(其中术语“成像”表征物体已经被测量)为图像2630。执行上述校准过程2640(术语“传感器校准”可以参考上述校准过程)。如上所述,这生成3d数据2650。然后,该数据用于渲染(2660)原始3d表面2610的精确渲染2670。在一个实施例中,通过面部化3d数据生成3d图像,然后通过期望距离图像的像素的中心沿着线(沿着期望距离图像的z轴)对该面部进行采样。

进一步参考图27的过程2700,每个传感器获取在传感器的originalsensor3d坐标中的3d数据(步骤2710)。然后,在步骤2720中,过程2700使用3d传感器校准的client3dfromoriginalsensor3d将3d数据变换到client3d坐标中。在一个实施例中,用户指定phys3dfromclient3d变换,其由(针对每个传感器)计算的originalsensor3dfromphys3d变换组成,以导出每个传感器的client3dfromoriginalsensor3d变换。在另一实施例中,用户为其中一个传感器指定client3dfromoriginalsensorxz3d变换,并且计算的motionvectorinphys3d向量和计算的originalsensorxz3dfromphys3d变换用于导出每个传感器的client3dfromoriginalsensor3d变换。用于指定期望距离图像坐标的其他用户提供变换对于本领域技术人员应该是清楚的。然后,步骤2730确定3d数据的连通性,而步骤2740枚举相连的3d数据的3d面。然后,在步骤2750中,将期望的目标3d(距离)图像初始化为不可见图像。在这种情况下,像素值设置为0,相应的掩码设置为不可见。接下来,在步骤2760中,过程2700在期望的3d(距离)图像中渲染3d面。注意,在一个实施例中,渲染3d面涉及在面重叠的每个距离图像像素位置处计算每个面的z高度值和对应的灰度级。在一个实施例中,z高度值和灰度级在每个距离像素的(x,y)中心处被内插。在另一实施例中。在另一个实施例中,z高度值和灰度值被计算为加权平均z高度值和与距离像素的(x,y)距离重叠的面部分的灰度值。说明性地,当多个3d面在相同的3d(距离)图像像素中产生值时,可以采用启发法来确定要保留哪个z高度值。在另一实施例中,在相同3d(距离)图像像素中与多个3d面相对应的z值(其中简化术语“z”和“z值”指的是z高度值)进行平均。在一个实施例中,灰度级值遵循z值,对于保留的任何z值,同样保留相应的灰度级值(其中术语“保留”也表征用于进一步处理保留一个或多个数据值的步骤)。在替代实施例中,对应于相同3d(距离)图像像素的灰度级值被平均。在上述渲染过程中使用的这种启发法、平面化和其他技术对于本领域技术人员来说应该是清楚的。值得注意的是,校准数据的使用允许多个3d(例如位移)传感器用于在校准时和运行时高效且精确地渲染3d表面的灰度图像。

viii.双侧校准目标

图28描绘了具有至少两个视觉系统摄像机组件2810和2820的视觉系统2800,其定位成对场景的相对侧成像,即定位成使得相关联的光轴2812和2822相对于彼此(例如)180度布置(或另一相对角度,例如160度-220度)。如上所述,传感器2810和2820的每一个分别经由适当的有线或无线连接2814和2824将来自图像传感器s的图像数据传输到视觉系统处理器2840,该视觉系统处理器在结构上和/或功能上类似于如上所述的处理器170(图1)。该示例中的图像数据被场景中的物体2830的每个相对表面2832和2834上由传感器2810和2820的相应激光“扇形”2816和2826生成的激光线信息组成。在该示例中,物体2830是下面详细描述的新颖的双侧校准物体或目标。处理器2840可以是所示的独立pc2850的一部分,或者是定制计算设备的任何其他通用目的,具有适当的用户界面控件(例如显示器和/或触摸屏2852、键盘2854和鼠标2856)。处理器2840可以包括各种功能模块和/或程序/处理器,包括但不限于如上所述的视觉工具2842、校准程序(处理器)2844以及灰度渲染程序(处理器)。校准目标2830和/或传感器2810、2820可以相对运动(双箭头2860)以获得物体表面的完整3d轮廓。可以通过传送器、运动台、机器人操纵器或任何其他可接受的传送装置来提供运动。运动数据2862(通过编码器或其他机构)可以被发送到处理器2840,用于沿着坐标系2870(例如,y轴)配准图像数据(由相应图像帧中的一系列线组成)。

注意,这里采用的3d传感器的类型和数量是高度可变的。在替代实施例中,3d传感器可以是基于立体摄像机、lidar、飞行时间感测或提供期望的图像分辨率和精确度的任何其他技术。

校准目标2830是单件式、单一式或整合式结构,其包括基部2831,该基部通常由相对的基本平坦的表面2832、2834限定。基部2831围绕一系列三维元件,在该示例中,三维元件包括分别在每个相对的面2832、2834上的一个或多个平截头体2835和2836,如上面所一般性描述。进一步参考物体2830的横截面,如图29所示,在基部2831的每侧上的一个或多个平截头体2835和2836分别限定平坦的顶部表面2910和2920。该表面相对于成角度的侧壁2930和2940限定至少四个角2932和2942。这些角提供了在上面一般性描述的校准程序中所解决的一些特征。

注意的是,校准目标2830可以由任何在正常环境温度(例如,华氏20至120度之间)下具有尺寸稳定性的可接受材料构成。作为非限制性实例,此类材料可包括铝、钛、钢、镁、镍和/或其相关合金、玻璃、某些可加工聚合物和/或复合材料,和/或可经受本说明书的程序的任何其他材料。该结构可以例如通过模制、铸造、加工坯料来形成。它可以是单一的或整合的,例如通过适当的连接机构(例如焊接、粘合、铆钉、螺钉、搭扣配合等)将单独的平截头体连接到基部上。值得注意的是,基部2831包括印刷的、粘附的或整体形成的(冲压的、模制的、铸造的等)标记2950和2952,其位于每个平截头体2835和2836附近。每个标记都是独立的。也就是说,目标2830的每个相对面2832和2834上的标记是离散符号,例如,阿拉伯语、罗马语、拉丁语、希腊语等字母数字系统中的连续字母、数字等。在所示的示例性实施例中,前两个相对的标记2950和2952是凸起的数字(例如分别为0和1)。这些标记一体地形成在基部2831中。在一个实施例中,基部2831的每一侧上的其余标记2838可以应用具有适当的离散值的(平面印刷或凸起字母)贴花。这些贴花可以根据用户的需要而变化。如上所述,贴花允许用户将各种平截头体与由摄像机组件获取的图像相关联,并将目标的图像配准在公共(全局)坐标系统内,在该实施例中,公共坐标系统可以是360度坐标系统。

特别参考图29的校准目标2830横截面图,目标可以相对不精确的方式形成,但是通过提供高度精确平行的相对平截头体顶部2910和2920来解决相对的摄像机组件之间的z轴校准。相对的平截头体顶部2910和2920之间的高度尺寸ht是恒定的并且是精确已知的。在该实施例中,相对的平截头体(或其他三维校准元件)2835和2836在尺寸和形状上相对相似或相同,并且以相对于垂直穿过一个或多个基部平面的中心线c为中心。在替代实施例中,在相对侧上的多个三维校准元件可相对于彼此不同和/或相对于中心线c未对准。

图30描述了根据示例性实施例的用于构建校准目标(例如,目标2830)的过程3000。在步骤3010中,目标最初通过适当的制造技术形成,包括但不限于模制、铸造加工等。目标可以是整体结构(即由单件材料形成)或可以是整合的(即,由连接在一起以形成最终目标结构的单独多份材料形成)。一个或多个标记的形成可以结合到步骤3010中。在步骤3020中,将形成的目标安装在合适的加工设备中(通常为本领域技术人员所知的),并且至少一个顶部表面用作对准设备的参考(例如夹紧装置和/或专用夹具)加工设备。例如,加工设备可以是具有高精度(例如微米级精度)的cnc刨床或平面磨床。然后操作该设备以将暴露的顶部表面磨平或研磨成相对于配准的相对的顶部表面已知高度的平行取向。由于cnc设备可以被编程以实现给定的高度值,因此相对的顶部表面之间(沿着z轴)的厚度是已知的并且是可重复的。该值可以作为校准参数提供给用户(步骤3030)。然后可以在步骤3040中将不变形的表面处理施加到在一些或所有3d元件表面(例如,平截头体表面)和基部上目标,以确保照明光(例如ds传感器的激光线)到摄像机组件的精确反射,从而为视觉系统提供可测量和可重复的特征。这样的表面处理可以包括喷砂、磨砂、化学蚀刻、化学涂覆、阳极氧化、发蓝等。注意,在步骤3020中的加工之前,用于配准的相对的顶部表面最初可以刨平、磨削或以其他基本上平面/平坦面方式呈现,以确保在目标的每一侧具有一致的尺寸和表面特征。

更一般地,校准目标可以两个相对的3d元件相对于彼此不精确的方式装配,但是通过适当的加工技术完成,以包括尺寸精确、平行表面的两个相对的平行表面(即,定义z间隔平行的平面),其中通过加工工具的设置和/或随后的计量操作(例如使用卡尺、千分尺、坐标测量机(cmm)等)知道z轴间距。作为非限制性示例,参考图31,其示出了根据另一实施例的校准目标3100。目标包括在基部3130的每个相对侧上对准的3d元件3110和3120(例如,平截头体)。如上所述,可以在每一侧提供一个或多个3d元件。每个相应3d元件的顶部3112和3122可以是平坦的并且相对于另一个相对的元件相对平行。在该实施例中,这些表面不被认为是高度精确的、平行的或具有已知的间距。基部3130还可以在其每一侧上包括标记3114和3124,其可以整体形成或随后施加。基部还包括具有相对表面3142和3144的延伸突缘或板3140。使用上述技术和/或其他技术(例如cnc铣床中每侧的精密铣削)对这些表面3142和3144进行加工(例如,研磨、刨平等),以在它们之间的准确(例如,微米内)z轴间距tp限定高度平面和平行的关系。因此,在操作中,视觉系统采用每个相应元件(平截头体)3112和3114的3d角位置3116、3118、3126和3128来校准x和y中的两个(或更多个)传感器,并基于突缘3140的厚度tp建立绝对z。完成的目标3100的表面可以增强光学性质(例如,砂/磨砂、阳极氧化等)的方式选择性地或完全地完成,如上所述。

在由可选的虚线3150示出的又一示例性实施例中,目标可以被制造为复合校准物体,其中3d元件(例如,平截头体)3110和3120中的每一个被单独构造,然后使用本领域技术人员已知的适当的连接机构,包括但不限于粘合剂、焊接、钎焊、紧固件、摩擦配合等粘附到在基部3130上的预定位置。基部可包括上述精确且平行的突缘/板3140,或者基部可以省略这样的突缘,并且在将3d元件附接到其相对表面之前,使用适当的加工(或其他形成)技术可以将其本身精确地形成为精密厚度板。

现在参考图32,其示出了使用根据上述实施例构造的双侧校准目标的场校准的整个过程3200。在步骤3210和3220中,双侧校准目标以两个(例如180度相对/翻转)取向中的每一个定位在场景中,例如右侧向上和上下配置。在这些取向的每一个中,由目标上方和下方的摄像机组件获取一幅或多幅图像。以这种方式,所有摄像机组件对目标的两侧成像。还可以向摄像机组件呈现附加的取向并成像(例如,45度角等)以确保完全获取所有特征。在步骤3230中,对所获取的图像执行视觉系统工具,该视觉系统工具从多幅图像(边缘、角落等)中提取特征并导出多个特征的局部坐标。在所识别的特征中的独特的标记/标识允许视觉系统根据步骤3240将特征与校准目标上的给定固定位置(在其特定侧)相关联。注意,之所以图像传感器在单次扫描期间不需要查看所有平截头体特征(也参见上述步骤810),是因为如果组装双侧平截头体特征使得奇数编号的平截头体(如相邻标记所示)是位于偶数编号的平截头体在基部的相对侧上,并且奇数/偶数对被类似地定向(例如,沿着共同的垂直轴),然后上述步骤810简化为在单次扫描期间单个传感器仅需要查看每对中奇数/偶数平截头体特征中的一个。也就是说,对应于奇数/偶数平截头体的姿态可以从其相对侧上的奇数/偶数伴随的姿态推断。

校准过程可以从在多个方向上呈现的目标确定目标两侧的所有角位置。有利地,使用该方法,3d校准可以精确到视觉系统精度的极限。在步骤3250中操作该校准程序,并且在步骤3260中存储结果以用于后续(例如)运行时操作。在精确厚度的已知位置(例如,在每个相对平截头体的顶部)处具有平坦的平行面的优点在于用户无需在校准期间向系统输入任何值。说明性地,这些值基于平截头体尺寸是已知的,并且可以保存在校准程序内的查找表中。举例来说,平截头体尺寸ts5定义厚度a毫米,平截头体尺寸ts10定义厚度b毫米等。或者,虽然可提供过程以校准模拟的双侧校准目标和已知厚度物体,但是通常要求用户指定平面的位置并指定已知的厚度。

更具体地,在x和y坐标中的视觉系统的校准可以遵循上述过程,如通常参考上述图1-27所提供的那样。所示双侧场校准过程的不同之处在于,添加了附加的误差项/分量,其对应于平行特征之间(在特定的标称直通点处)的估计距离与平行特征(即相对的平截头体顶部突缘板表面之间的厚度等)之间的预期距离之间的距离的平方。注意,在使用突缘的实施例中,平截头体特征检测器被增强以测量突缘特征,使得该信息也被提供给场校准过程。特征检测器可以测量在突缘上中心点的3d位置,并且可以使用该中心点与突缘相对侧之间的距离(和/或在相对侧上到中心点的距离取平均值)。或者,在相对的平截头体顶部精确平行的情况下,可以使用每个顶部的中心点。另一种替代方案是通过分析各个3d点的全体(或子集)将突缘或平截头体顶部信息结合到场校准误差函数中,并估计突缘/顶部的两个平行面之间的单位长度方向向量,然后根据突缘或相对顶部的已知厚度对其进行缩放,并(基于传感器姿态)将各个点映射到单个平面。然后计算单个拟合平面的平面拟合残差。在另一个替代方案中,一个或多个过程避免分析所有点,而是,(b)基于点集计算足够的统计数据;(c)根据方向向量在数学上更新足够的统计数据,然后(d)再次计算点的并集的平面拟合残差。

作为使用双侧目标的特定校准过程一部分,可以在第ii部分中添加以下附加术语。定义如下:

图33示出了根据一个实施例的视觉系统3300和相关视觉系统处理器3310的侧视图,其中一对摄像机组件3320和3330被定位成对双侧校准目标3340的顶部平截头体3342和底部平截头体3344成像。该目标3340包括精密加工的顶部表面3352和3354,用于在摄像机系统内建立z轴距离。如图34所示,每个摄像机3320和3330观察在相对于phys3d坐标空间3450平移的局部坐标系3410和3420中的相应平截头体3342和3344。注意,示出了每个平截头体顶部3352和3354的中心点3462和3464,并且这通过用于校准摄像机系统的过程来建立。在下面进一步描述在该双侧实施例中用于校准摄像机系统相对于phys3d坐标空间的过程,并且重复与上述相似的步骤以帮助读者理解。

再次参考图10的描述,其中通过背景技术中的方式,平截头体和摄像机是并排的。然而,下文的原理也适用于本实施例的顶部和底部平截头体,其中至少两个所示传感器将定向在顶部和底部。传感器110、112、114各自示出具有相关联的相应坐标空间originalsensor3dsensor=0、originalsensor3dsensor=1、originalsensor3dsensor=2(即轴1010、1012、1014)。物体830包括在object3d空间中的示例性特征校准物体物理特征位置(例如,在每个子物体(840、842和844)上的角),即子物体840的f00-f07、子物体842的f10-f17和子物体844的f20-f27。如图所示,对于每个传感器将这些变换(虚线箭头1040)成相应的测量特征位置(例如)m0100-m0107、m0110-m0117和m0120-m0127。在一个实施例中,特征检测工具/程序检查子物体的相同块以用于测量特征位置。特征检测程序估计与测量的平截头体的每个面相对应的3d(距离)图像的部分。基于在距离图像中每个面的预期区域,特征检测程序计算距离图像像素的数量,该距离图像像素用于实际估计该面的平面。然后,特征检测程序计算用于测量每个面的距离图像像素的比例,其等于用于估计平面的距离图像像素的数量除以对应于该面的区域中的距离图像像素的数量。将用于估计平截头体的每个平面的预期测量区域的比例与比例公差进行比较,使得仅几乎完全测量的特征用于校准计算。这使得3d传感器校准对于每个子物体的平面性/非平面性是不变的。由于在位移传感器校准的所有扫描期间使用相同的平面区域并由此使用3d特征点来测量每个平截头体平面,因此实现了这种不变性。在另一实施例中,当为了忽略角而计算比例使用比率时,这些角是最有可能延伸到相关3d传感器的测量区域之外,此时针对每个子物体测量的区域忽略底部特征(并因此导致说明性公差检查失败)。期望实现测量一致性,可以通过在该程序中省略某些3d图像像素来更有效地实现。

在所示双侧(顶部和底部)校准实施例中,其中平截头体顶部是精确形成的,特征检测器还对多个子物体中的一个或多个特定区域进行测量,该区域是相对于测量子物体特征而指定的。在另一实施例中,测量可包括通过将平面(即,每个平截头体顶部3352和3354的平面)拟合到区域内的数据以及该区域内数据的平均位置而计算的平面估计。在另一实施例中,该区域可被指定3d体积,其已相对于测量子物体特征配准到标称位置。在又一实施例中,测量可以是平面拟合到测量子物体特征(例如角)mxx00、mxx01、mxx02、mxx03,并且平均位置将是测量子物体特征mxx00、mxx01、mxx02、mxx03的平均值(参见图34并且还参考上面的图10)。

在另一实施例中,测量的平面和位置与特定平面之间的指定距离结合使用,以确定多个传感器的相对位置。

参考上面的定义,在originalsensor3d坐标中测量测量特征位置mscan,sensor,subobject,feature。这些是由特征检测器针对每个扫描的每个3d传感器检测到的校准子物体的测量特征位置。

然后,系统可以通过估计传感器配置参数来同时就所有传感器计算位移传感器校准(即“场校准”)。基于给定的测量特征位置mscan,sensor,subobject,feature,3d传感器校准涉及估计以下参数:

校准物体物理特征位置ffrusta,feature

object3dfromphys3dpose=p

originalsensorxz3dfromphys3dsensor=i

motionvectorinphys3d

注意,对于每个传感器i,通过将originalsensorxz3dfromphys3dsensor=i的x轴和z轴与motionvectorinphys3d的y轴结合来计算originalsensor3dfromphys3dsensor=i。具体如下:

phys3dfromoriginalsensorxz3dsensor=i*(x,y,z)=

(a*x+b*y+c*z+tx,d*x+e*y+f*z+ty,g*x+h*y+i*z+tz)

motiondirectioninphys3d=(mx,my,mz)

phys3dfromoriginalsensor3dsensor=i*(x,yz)=

(a*x++mx*y+c*z+tx,d*x+my*y+f*z+ty,g*x+mz*y+i*z+tz)

originalsensorxz3dfromphys3dsensor=i=phys3dfromoriginalsensorxz3dsensor=i-1

originalsensor3dfromphys3dsensor=i=phys3dfromoriginalsensor3dsensor=i-1

注意,在一些实施例中,对于所选传感器,其中所选传感器的x和z坐标轴的向量叉积具有测量的y坐标运动方向的负点积,motiondirectioninphys3d的负值被用于一些传感器的originalsensorxz3d中作为y轴。校准物体物理特征位置ffrusta,feature由每个特征的3d点(x,y,z)表征。除前三个特征位置外的所有特征都以三个数字为特征。注意,这里的前三个特征位置说明性地定义了正则坐标空间,并且因此,它们的值受到约束。特征点定义正则坐标空间,以便phys3d坐标空间约束特征位置;否则,如果特征位置不受约束,则phys3d坐标空间相对于物体坐标空间将是多余的,因为phys3d坐标空间可以与特征位置进行折衷。说明性地,前三个校准特征顶点位置受到约束(使得没有冗余自由度)。例如,第一个顶点位置是(0,0,0)。第二个顶点位置是(x1,0,0),第三个顶点位置是(x2,y2,0)。以这种方式,校准特征物体说明性地定义了用于进一步校准计算步骤的参考平面。

除了第一个姿态p==0,每个物体姿态object3dfromphys3dpose=p都有六个自由度(因为它们表征3d刚性变换)。每个物体姿态object3dfromphys3dpose=p由三值四元数、标识和3d向量表征,该标识指定哪个四元数值为1(或-1)的标识,该3d向量表征3d平移。第一个姿态被约束为识别变换,因此phys3d坐标空间不是多余的(其中,说明性地,当存在冗余自由度时,梯度下降求解器是困难的)。三值四元数表征四个四元数值中的三个,其中表征还包括一个标识,该标识表示哪个四元数是固定的(+1或-1)(如同以上所述,四元数通常由四个齐次值表征,其中p2+q2+r2+s2==1,更一般地,单位四元数用于表示3d旋转,如本领域所公知的==1)。使用三个四元数值和标识来表征3d旋转对于技术人员来说是已知的。

每个传感器姿态originalsensorxz3dfromphys3dsensor=i都由八(8)个值表征,包括x标度和y标度,以及刚性变换。在一个实施例中,每个3d传感器姿态originalsensorxz3dfromphys3dsensor由针对x轴的3d向量和针对z轴的2d向量表征(其中一个系数是从x轴和z轴的两个分量导出的,以使得点积为0,标识表示z轴缺失的值),并且y轴计算为z轴和x轴的单位长度叉积,而平移是由三个数字表征的三维向量。在另一个实施例中,每个3d传感器姿态originalsensorxz3dfromphys3dsensor由三值四元数、标识、3d向量以及两个附加数字(针对x标度的一个数字和针对z标度的一个数字)表征,该标识指定哪个四元数值为1(或-1),该3d向量表征3d平移。另外,3d向量motionvectorinphys3d具有三个独立的自由度,并且由三个数字表征。

在本文的双侧校准实施例中现在又再参考图11。该图描绘了示意图1100,示出了与由至少三个子物体840、842、844组成的物理校准物体830相关联的参数。

在一个实施例中,可以通过最小二乘分析来估计3d传感器校准参数。在替代实施例中,可以通过绝对差的总和来估计3d传感器校准参数。在另一实施例中,通过最小化最大误差来估计3d传感器校准参数。用于估计校准参数的其他数值近似技术对于本领域技术人员应该是清楚的。对于针对每个测量特征位置使用最小二乘分析来估计校准的实施例,系统基于参数计算其估计的特征位置,然后计算估计的特征位置与对应的测量特征位置之间的差异。然后,系统计算该差异长度的平方(例如,通过将该差异向量与其自身进行点积)。然后对所有平方差进行求和以计算平方差的和(包括来自所有测量特征位置的贡献)。该方法假设导致平方差的和最小的参数是最佳3d传感器校准。最小二乘分析假设有一组特定的参数可以引起最小平方误差。对于采用绝对差之和的实施例,总误差被计算为绝对差之和,并且导致绝对差的和最小的参数提供最佳3d传感器校准。对于采用最小化最大误差的实施例,导致最小最大误差的参数提供最佳3d传感器校准。

参数估计的实施例结合了平行平面特征之间的指定距离与平面特征之间的相应测量距离之间的差异。一个实施例测量在相同姿态期间观察到的平行平面特征对的两个面之间的距离。一个实施例结合来自数据集的至少一个这样的距离测量;另一个实施例结合来自数据集的所有这样的距离测量。一个实施例计算测量平面之间的距离作为两个距离的平均值,前者距离是第一平面上的标称点与估计的第二平面之间的距离,后者距离是第二平面上的标称点和估计的第一平面之间的距离。使用最小二乘分析估计参数的一个实施例结合在测量的平行平面距离与指定的平行平面距离之间的差的平方和。使用最小最大差异估计参数的一个实施例结合测量的平行平面距离与指定的平行平面距离之间的差的绝对值之和。

最小二乘分析通过给定测量特征点的参数误差函数来表征和平方误差,即e(...|m)=e(校准物体物理特征位置ffrusta,feature[0..x1],object3dfromphys3dpose=p,[0..x2],originalsensorxz3dfromphys3dsensor=i[0..x3],motionvectorinphys3d|mscan,sensor,subobject,feature)(命名为[0...numx]表示误差函数包含每组变量的多个实例,每个未知数和命名为“|m”表示误差函数是测量特征m的函数,但这些测量不是变量)。迭代方法用于找到最小化e(...|m)的参数。导致最小误差的参数表征3d传感器校准。

如上面在图12中所描述的,用于改进校准参数的基本过程1200可以采用梯度下降技术。在步骤1210中,系统初始化地估计校准参数。然后使用如本文所述的适当梯度下降技术在步骤1220中改进参数。为了鲁棒性,说明性实施例包括使用数值计算的导数来改进参数(例如levenberg-marquardt梯度下降)。另一实施例可包括(针对数值计算的导数)使用不同的步长执行改进以增加到达全局解的概率。另一个实施例可以包括以迭代的方式不止一次地执行改进,并且对于每次执行,采用不同的步长集合,然后比较由估计的参数引起的误差e(...|m),并选择导致最小误差e(...|m)的参数。

在各种实施例中,用户指定(在一个实施例中,使用gui指定;在其他实施例中,经由存储文件指定;以及在其他实施例中,经由在场景中编码的信息指定,该信息在扫描中从3d数据提取)校准物体特征位置,并且这些值被使用,但不估计。在这些实施例中,误差函数取决于测量特征位置和指定的特征位置,但那些测量不是变量。e(…|m,f)=e(object3dfromphys3dpose=p,[0..x1],originalsensorxz3dfromphys3dsensor=i[0..x2],motionvectorinphys3d|mscan,sensor,subobject,feature,ffrusta,feature)。

可以根据以下说明性步骤计算估计的特征位置。给定与扫描姿态p和传感器i的特征对应的3d特征位置ffrusta,feature,(在object3d坐标中指定),第一步是通过使用object3dfromphys3dpose=p变换的逆来计算在phys3d坐标中的特征位置以计算fphys3dfrusta,feature:

fphys3dfrusta,feature=(object3dfromphys3dpose=p)-1*ffrusta,feature

在下一步中,系统计算phys3d中的交叉平面,其中包括将sensorxz的原点映射到phys3d坐标并将其y轴(垂直于其平面)映射到phys3d坐标。

sensorxzphys3dorigin=(originalsensorxz3dfromphys3dsensor=i)-1*(0,0,0)

sensorxzphys3dyaxis=(originalsensorxz3dfromphys3dsensor=i)-1*(0,1,0)-sensorxzphys3dorigin

交点的y坐标对应于必须将多少个motionvectorphys3d实例添加到特征位置以便与传感器平面相交。沿着方向motionvectorphys3d行进的3d点以(motionvectorphys3d点乘(sensorxzphys3dyaxis))的速率更改其与sensorxzphys3dyaxis的点积。起初,点fphys3dfrusta,feature与平面sensorxzphys3dyaxis在点积上相差的值为((fphys3dfrusta,feature-sensorxzphys3dorigin)点乘(sensorxzphys3dyaxis)),因此3d移动了以下数量的motionvectorphys3d实例以与平面相交:

numinstances=((fphys3dfrusta,feature-sensorxzphys3dorigin)点乘(sensorxzphys3dyaxis)))/motionvectorphys3ddot(sensorxzphys3dyaxis))

在这些实例之后,特征位置在intersectionpoint处与平面相交,

intersectionpoint=fphys3dfrusta,feature+numinstances*在phys3d坐标中的motionvectorphys3d。

可以通过变换originalsensor3dfromphys3dsensor=i来映射以计算originalsensor3d坐标中的交点。请注意,对于给定的参数集,此映射是线性的,因此映射originalsensor3dfromphys3dsensor=i是线性变换,可从originalsensorxz3dfromphys3dsensor=i和motionvectorphys3d计算。对于给定的参数集,乘法因子1/motionvectorphys3d点乘(sensorxzphys3dyaxis)是常量。图13是基于上述numinstances的测量特征位置的图1300。

总误差函数e(...|m)表征在测量特征位置与估计的特征位置之间的差的平方和。每个测量特征位置(mscan,sensor,subobject,feature)在其各自的传感器的originalsensor3d坐标中测量。每个校准物体特征位置最初在object3d坐标中指定。为了比较每对相应的位置,必须首先将它们转换成一致的坐标。对于在每个传感器的originalsensor3d坐标中测量误差的实施例,通过phys3dfromobject3dpose=p变换的映射将特征位置(最初在object3d坐标中指定)变换为originalsensor3d坐标,该变换是object3dfromphys3dpose=p变换的逆,并通过变换originalsensor3dfromphys3dsensor=i映射。

e(…|m)=eoriginalsensor3d(…|m)=sum|(mscan,sensor,subobject,feature–(originalsensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)|2

在位移传感器场校准过程的另一个实施例中,平方和误差包括测量的平行平面特征与指定的平行平面特征之间的差的平方。

e(…|m)=eoriginalsensor3d(…|m)=sum|(mscan,sensor,subobject,feature–(originalsensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)|2+sum|((originalsensor3dfromphys3dsensor=i)-1*pplanescan,sensor=i,parallelplanarfeature,top).pointtoplanedistance((originalsensor3dfromphys3dsensor=j)-1*ppointscan,sensor=j,parallelplanarfeature,bottom-parallelplanarfeaturedistanceparallelplanarfeaturepair|2

注意,3d平面通过变换映射,变换的旋转部分映射平面的法线并通过变换(旋转和平移)映射在平面上的点。pointtoplanedistance()函数表征从点到平面上最近点的距离,该函数是平面法线与在平面上的点和点相减向量的点积的绝对值。

在每个传感器的originalsensor3d坐标中测量误差的实施例中,测量每个传感器的originalsensor3d坐标中的误差的优点是坐标未被缩放,因为它们与测量特征位置相关联。每个传感器的originalsensor3d坐标中测量误差的缺点是坐标不一定是物理上精确的或正交的,因此originalsensor3d坐标中的测量值可能受到校准物体的显示姿态偏差;对于每个传感器的originalsensor3d坐标,y坐标对应于传送的幅度(motionvectorinphys3d),而x坐标和z坐标由工厂校准限定,并且传送幅度的比例是位移传感器场校准估算项目之一。

在位移传感器场校准过程的另一个实施例中,在估计motionvectorinphys3d并进行补偿之后,重复位移传感器场校准计算。因此,减小了originalsensor3d坐标的非正交性,从而减少了由于计算非正交坐标空间中的误差而产生的偏差。或者,在每个传感器的sensor3d坐标中测量误差的实施例中,通过坐标变化变换phys3dfromoriginalsensor3dsensor=i,将测量特征位置变换成每个传感器的sensor3d坐标,该坐标变化变换是originalsensor3dfromphys3dsensor=i的逆。然后,该过程通过变换sensor3dfromphys3dsensor=i进行映射。通过phys3dfromobject3dpose=p变换的映射将(最初在object3d坐标中指定)特征位置转换为sensor3d坐标,该变换是object3dfromphys3dpose=p变换的逆。然后,该过程通过变换sensor3dfromphys3dsensor=i进行映射。

e(…|m)=esensor3d(…|m)=sum|((sensor3dfromphys3dsensor=i*(originalsensor3dfromphys3dsensor=i)-1*mscan,sensor,subobject,feature)–(sensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)|2

在位移传感器场校准过程的另一个实施例中,平方和误差包括测量的平行平面特征与指定的平行平面特征之间的差的平方。

e(…|m)=esensor3d(…|m)=sum|((sensor3dfromphys3dsensor=i*(originalsensor3dfromphys3dsensor=i)-1*mscan,sensor,subobject,feature)–(sensor3dfromphys3dsensor=i*(object3dfromphys3dpose=p)-1*ffrusta,feature)|2+sum|((originalsensor3dfromphys3dsensor=i)-1*pplanescan,sensor=i,parallelplanarfeature,top).pointtoplanedistance((originalsensor3dfromphys3dsensor=j)-1

*ppointscan,sensor=j,parallelplanarfeature,bottom-parallelplanarfeaturedistanceparallelplanarfeaturepair|2

在phys3d坐标中测量测量误差的实施例中,通过坐标变化变换phys3dfromoriginalsensor3dsensor=i,将测量特征位置变换到phys3d坐标中,该坐标变化变换是originalsensor3dfromphys3dsensor=i的逆。通过phys3dfromobject3dpose=p变换的映射将(最初在object3d坐标中指定)特征位置转换到phys3d坐标中,该变换是object3dfromphys3dpose=p变换的逆。

(…|m)=ephys3d(…|m)=sum|(((originalsensor3dfromphys3dsensor=i)-1*mscan,sensor,subobject,feature)–((object3dfromphys3dpose=p)-1*ffrusta,feature)|2

注意,在每个传感器的sensor3d坐标中测量误差的实施例和在phys3d坐标中测量误差的实施例可以是相同的,因为在3d刚性变换下保持距离并且sensor3d和phys3d通过3d刚性变换相关联。

用于双侧校准物体的场校准过程的其他方面可以根据上述原理进行。

ix.结论

应该清楚的是,上述系统和方法有效地同时提供多个3d(例如激光位移)传感器的自动设置和校准(即,不是一次一个或以串行方式),其方式可扩展到任意的、期望数量的传感器和fov的宽度。有利地,说明性校准技术不需要精确制造(或精确测量)的校准物体。这种方法不需要精确制造(或精确测量)的校准物体的一个原因是因为3d传感器配置可要求校准子物体处于特定位置,以便3d传感器可以观察它们。此外,由于增加的成本或时间直至可用,制造这样的特定校准物体可能是不可接受的。同样地,这里使用的预期的3d传感器非常精确,从而避免了对精确制造校准物体的需求,否则这可能证明成本过高或时间过长。

有利地,本文的教导还提供了一种系统,以克服在对相对面成像时的挑战,因为(例如图)虽然双侧校准目标的3d角位置可用于校准至少两个传感器在x和y轴中的尺寸,但如果没有关于双侧目标厚度的准确信息,则无法建立绝对z轴测量。通过提供直接制造,直接分析的校准目标来克服该缺点,其结合了可测量且可重复但不一定准确的3d特征,例如具有一对准确且可测量特征的双侧平截头体,例如,由精确的指定厚度分开的平行面,以便提供给对向视觉系统(例如ds)传感器的直接场校准。这些平行面可以加工成已知的、可重复的、平行的并精确的尺寸,并且可以驻留在目标基部或3d元件(平截头体)上,例如在其相对的顶部表面上。

更具体地,说明性系统和方法明显不同于所谓的“简单”位移传感器校准方法。例如,可以通过执行第一次扫描来实现这种简单的方法,其中使用单个位移传感器测量校准物体的特征(其中一个位移传感器配准校准物体的所有子物体),并且在第二次扫描中,基于那些测量特征位置计算位移传感器的模型。然后,简单的位移传感器校准方法可以使用3d仿射变换对位移传感器测量进行建模。不利的是,这种示例性的简单位移传感器校准方法没有最佳地利用所有可用数据,并且不限制所有位移传感器就传送或运动向量使用单个估计(术语运动向量用于表征传送器的模型估计)。

相反,用于多个3d传感器校准的说明性系统和方法有利地通过将所有数据合并到一个整体表达中来同时采用所有可用数据,然后使用单个整体表达来计算校准。该表达式包括对所有位移传感器的传送的单个估计,而不是需要每个包括对传送器单独估计的位移传感器测量模型,如在简单校准方法中那样。

前面已经详细描述了本发明的说明性实施例。在不脱离本发明的精神和范围的情况下,可以进行各种修改和添加。上述各种实施例中每一个的特征可适当地与其他描述的实施例的特征组合,以便在相关的新实施例中提供多种特征组合。此外,虽然前面描述了本发明的装置和方法的许多单独的实施例,但是这里所描述的仅仅是对本发明原理的应用的说明。例如,如本文所使用的术语“程序”和/或“处理器”应广义地包括各种基于电子硬件和/或软件的功能和组件(并且可替代地称为功能“模块”或“元件”)。此外,所描绘的程序或处理器可以与其他程序和/或处理器组合或者分成各种子程序或处理器。根据本文的实施例,可以不同地组合这样的子程序和/或子处理器。同样地,明确地预期本文中的任何功能、程序和/或处理器可以使用电子硬件、由程序指令的非暂时性计算机可读介质软件、或硬件和软件的组合来实现。另外,如本文所用,各种方向和倾向性术语,例如“垂直”、“水平”、“向上”、“向下”、“底部”、“顶部”、“侧面”、“前部”、“后部”、“左侧”、“右侧”等仅用作相对惯例,而不是相对于固定坐标空间(例如,例如重力作用方向)的绝对方向/布置。另外,对于给定的测量、值或特性采用术语“基本上”或“近似”时,虽然它指的是在正常操作范围内以实现期望结果的量,但是包括由于系统允许的公差范围内的固有不精确性和误差(例如1-5%)的一些变化。作为另一示例,在描述相对运动的情况下,其可以指仅移动物体、仅移动图像传感器或移动物体和移动图像传感器两者。因此,在某些实施方式中,相对运动可以是可预测的旋转运动,例如位于移动的圆盘传送带上的多个物体。因此,该描述仅旨在通过示例的方式进行,而不是以其他方式限制本发明的范围。

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