夏 康 洪汉玉 章秀华
(1.武汉工程大学光学信息与模式识别湖北省重点实验室 武汉 430205)(2.武汉工程大学电气信息学院 武汉 430205)
现如今随着科技和制造业的快速发展,对于零件的加工精度需求的提高,人们对微小器件尺寸的测量精度以及非接触式自动化测量的要求越来越高。
针对微小机器盲孔尺寸的测量问题,传统的接触式手工测量有卡尺、直尺、三坐标测量仪法[1]等工具;而现代非接触式测量常用的包含结构光、双目相机测距以及激光三角测量等方式[2]。若采用接触式的三坐标测量仪法对盲孔的尺寸进行测量,由于尺寸问题,三坐标测量机的探头难以进入盲孔内部进行测量并且测量过程中需要与被测对象反复接触,不仅对测量仪器的损耗会增加,测量精度也会不断的降低。双目相机测距法在较大的场景中的测量精度可以达到毫米级别,但由于相机的精度有限并且运用到特征点匹配的算法,具有一定的计算量,所以会导致三维坐标集合得到三维点云数据精度丢失,对小器件难以实现精度测量。若采用激光三角测量的方式来获得机器盲孔的尺寸信息,由于激光线本身具有一定的线宽,激光线越细成本越高,并且在采集过程中需要先转换成二维图像数据进而通过光线的粗细和凸起程度来换算为高度值[3],转化过程中会带来一定的精度损失。点阵光谱共焦利用复色光的色散后不同光的焦距差值来测量物体的微表面到光谱共焦下方紫色光焦点的距离[4~5],然后结合三轴移动平台的XY平面坐标来进行三维数据进而转化为三维点云数据。通过对点云数据进行去噪等处理后对其进行尺寸测量,不仅可以在三维上实现交互对其进行局部的处理,还可以获取其横纵向的切线数据在二维上进行数据观测。
光谱共焦传感器是一种光学系统装置,由复色光源、色散透镜组、共焦探头以及光谱仪等原件组成[6]。其测量原理如图1所示,首先探头内部光源发射一束宽光谱的复色光(呈白色)穿过小孔S照射在色散透镜组L上,白光在色散镜头经过光谱色散分解成不同波长的单色光,每一个波长对应一个固定的距离值。当被测物体出现在测量区域的时候,一个特定的单色光正好照射在其表面,并且反射进光学系统。此反射光通过一个小孔S″,只有完美聚焦在被测表面的光才可以穿过这个小孔,由波长识别系统(光谱仪)识别其波长,从而换算得到所代表的精确距离值。
图1 点阵光谱共焦测量原理图
盲孔是连接零件表层和内层但是不贯穿材料的导通孔,简单来说就是不通的孔。有的盲孔零件尺寸大至几毫米,小至零点几毫米,更为精密的零件尺寸可能会达到微米级别。因此本文选用点阵光谱共焦来进行盲孔尺寸的信息获取,点阵光谱共焦传感器的测量精度可以达到0.1μm,形成的光斑尺寸最小不足2μm,其量程最大可以达到24000μm,能够满足盲孔的测量精度要求。本文设计使用三轴运动控制器配合点光谱传感器,在三轴运动控制器XOY平面上设置采集平台。通过将机器盲孔零件固定在采集平台上,控制三轴运动控制器移动来对盲孔进行“扫描式”数据采集。其中机器盲孔零件的相关图示如图2所示。
图2(a)为机器盲孔的实物图,其中编号1~5分别代表五个小盲孔。图2(b)为1号小孔的局部剖面结构示意图,其中r表示小孔的孔径,h表示孔深。测量要求则为根据采集得到的点云数据输出r和h的值并与其真实值做对比。
系统的测量原理主要是点光谱传感器的测量原理和三轴运动控制器的结构配合,其要点在于准确的获取点光谱传感器返回的数据以及采集过程中三轴运动控制的运动程序设定和数据的相互转化整合,由于本文选择的点阵光谱共焦传感器的精度为微米级,因此选用的三轴移动平台的移动的步距必须也要达到微米级。
图3所示为本文所设计的三维测量系统的原理图,将待测物体即机器盲孔稳固的放置在采集平台上的采集区域内(该区域可以根据移动光谱传感器的位置而定,并非固定的),通过移动Z轴先使点光谱在盲孔的内部形成光斑并返回稳定的数据,接着将其移至盲孔的上表面,若此时仍能返回稳定的数据则可进行采集,若返回0值则需要在孔内重新进行聚焦。
图3 点光谱三维测量系统原理图
根据测量精度和速率,本文设计了两种采集模式,停轴采集和连续采集。因此根据系统的测量原理和设计的采集模式则可以编写相应的程序使系统按照一定的步骤进行采集和检测,其主要的步骤为以下几点:
1)连接三轴移动平台和点阵光谱共焦传感器,并对点阵光谱共焦进行暗处理实现数据矫正。
2)将机器盲孔放置在采集平台上,设置好采集区域后记录采集的起点和终点,调节Z轴使光谱传感器同时在盲孔的上下表明返回稳定的数据。
3)选择采集模式并设置好相关参数后开始采集数据,确保采集过程中机器盲孔零件在采集平台上不会产生相对滑动。
4)存储采集过程中运动控制器和点阵光谱共焦的数据并将其转化成三维点云数据,待采集完成后显示在点云窗口观察若形状与实物不符则舍去,修改采集参数后重新采集;若相符则保存。
5)对存储的三维点云数据进行使用pcl[7~8]实现点云去噪、平滑等处理。处理完后在三维上进行尺寸信息提取的同时并通过鼠标交互获取小孔的横纵线切线数据。
6)将测量值与实际值进行对比分析,计算精确度。
本文三维测量系统是基于Qt进行设计的,Qt一个跨平台的C++图像用户界面应用程序框架[9~10]。根据上述的系统的测量步骤可以基本确定系统的相关功能,因此系统的界面设计就是结合了软件的功能,提供给用户以良好的操作体验的设计。本文系统是以功能实现为基础的交互性界面设计,系统的主界面如图4所示,图中对各个功能区进行了标注。
图4 系统主界面
系统软件主界面主要分为基本的标题栏、菜单栏、工具栏、状态栏、实验列表栏、运动轴控制栏以及主窗口。标题栏主要显示标题。菜单栏由文件、传感器选择、采集控制、数据处理、窗口显示和设置几方面组成。工具栏主要显示常用的功能按钮。状态栏主要显示实验精度和系统时间。实验列表栏显示打开的实验并显示相关信息。运动控制栏主要是三轴移动控制器的相关操作。主窗口主要是显示点云和采集界面。
本文在系统中设计了点光谱线程类,该类主要是为了开启一个线程用于传输点光谱的数据,并且在采集数据时可以同时访问点光谱传感器和三轴移动平台的数据。初始化连接点光谱时就可以启动该线程,为了数据的准确性,在采集过程中需要同时存储当前位置的X、Y坐标和光谱数据,因此设计了一个结构体CurPoint,其包含的数据成员注解如表1所示。
表1 CurPoint结构体数据成员表
在采集过程中先将某一点的相关数据都存储在该结构体中,然后将所有点的数据都存储在容器中待采集完成后再进行后续的操作。获取到三维数据后,由于Z数据都是光谱仪返回的距离数据,因此产生的点云图的高低情况实际上是与实物相反的,需要将点云数据做翻转处理。数据取反方法如式(1),distzeros是光谱共焦采集到的零平面的距离,disttarget是采集目标点的距离数据,height就是目标点的高度数据。
其中采集到的完整的五小孔点云数据如图5所示。
图5 五盲孔点云图
4.5.1 点云数据的滤波处理
在采集过程中由于测量环境、采集过程中轴的移动速率以及光斑在盲孔上下表面的突变的过程都会产生噪声点,因此需要对点云数据进行滤波处理[11~13],如图5所示,本文所采集的盲孔数据的噪声主要产生于盲孔的上表面和孔底之间,因此使用pcl直通滤波和条件滤波去除中间噪声点即可。本文针对上述采集的五小孔的数据以及其中一个小孔的致密点云数据进行滤波处理,处理的前后结果如图6所示。
图6 盲孔数据滤波前后对比图
4.5.2 点云数据的横纵向切线数据提取
在本文三维测量系统中不仅需要三维显示,有时也需要二维上的显示,因此实现简便有效的二维显示也是至关重要的。Qt中虽然有自带的绘图模块,能够基本实现二维图表的绘制,但是为了实现更加美观的效果和简便的操作便引入了QWT[14~16]。而要实现获取某一点的横纵向切线的前提是使用VTK[17]窗口中的vtkActor实现交互来拾取一点并存储与横纵坐标相同的点来得到切线。最后将获取的二维数据Qwtplot中进行显示,并且利用高斯平滑模板(0.05,0.2,0.5,0.2,0.05)将切线数据平滑,然后利用向后差模板[3,-1,-1,-1]分处理平滑后的数据,根据差分值最大波峰和最小波谷来初步确定纵向切线的孔径的边界位置。使用QWT来绘制点云数据的横纵向切线数据如图7所示,其中深色箭头表示定位的小孔的位置,纵向切线中浅色箭头表示差分值的最大最小位置。
图7 五小孔某点的横纵向切线
在4.2中曾提到,本文设计了两种采集模式,停轴采集和连续采集。停轴采集就是对采集的方向(本文默认Y方向为采集方向)也设置对应的步长,使轴运动一段步长后停止等线程在该点取完数据后再接着移动。这种采集方式因为轴有停顿所以相对比较耗时并且取的数据点较少,但是能够保证数据采集位置的对应性,数据相对准确。连续采集则是不设置步长,使轴在起点和终点中一直运动,过程中不停的存储数据。上述两种采集方式各有其优点,因此本文针对五小孔中某一小孔设置相同的参数进行了采集试验,其中都设置x方向的步长为30μm,停轴采集y方向也设置了步长且为30μm,采集过程中轴的运动速度为2000μm/s,起点和终点保持一样。采集的点云数据结果的俯视图如图8所示。
图8 不同采集模式下的点云数据显示
其中停轴采集的点云数据很规整,而连续采集的点云很凌乱,但停轴采集所耗时间是连续采集的数倍,而且这只是一个小孔的数据采集。当前的连续采集是使用平均化的方式来实现数据的分配因此会造成X、Y坐标相对凌乱,经过在线程中同时取XY轴坐标和光谱数据的改进后,连续采集的五小孔点云如图6所示,不仅点云没有之前的散乱而且耗时也没有相应的增加,因此实验结果表明针对不同的情形时上述两种采集模式都可以适用并且能呈现良好的结果。
根据上述滤波后的结果,就可以在点云中对机器盲孔的尺寸信息进行信息的提取,本文在对五小孔的点云进行数据提取时是分别在VTK窗口中对每一个小孔数据进行框选出来后进行单独计算的。本文使用PCL中的RANSAC算法来进行孔径的计算。而孔深的计算本文主要是使用平均值的方法,对每一个小孔的孔底的点云数据进行求均值得到Hbottom,然后对对应孔的表面也进行求平均值得到Htop,最后根据式(2)得到小孔的孔深Hdeptℎ。
最终五个小孔的孔深和孔径的尺寸信息的测量值Vmeasured以及与真实值Vtrue对比的如表2所示,其中4号小孔由于其中杂物的原因在滤波后孔底剩余点较少,所以得到的孔深结果较小。
表2 五小孔的尺寸信息与真实值对比
在表中可以看出孔径的精确度(η)都高达99%以上,其相对误差最大不超过0.92%,说明本文系统采集的盲孔点云数据非常真实,接近实物的形状,说明该三维测量系统有很大的实用性,可以进一步的发展。从表中还可看出,除了4号小孔的孔深准确度为94.66%,其他的精确度都高于95%,相对误差最大不超过5.34%。经过反复试验,以上精度能够满足实验室测量精度要求,说明了本文三维测量系统的可靠性和准确性。其相对精确度的计算公式如式(3)所示,相对误差则为1-η。
经过大量试验的测试,实验结果表明,本文设计的基于点光谱的三维测量系统以及针对机器盲孔的三维测量方法能够实现非接触式的自动化三维测量,测量结果精确度高达99%以上,具有很高的实用价值。