激光视觉同步三维扫描系统的设计研究
2022-03-25程万里许德章
程万里,程 军,许德章
(1.安徽工程大学 机械工程学院,安徽 芜湖 241000;2.安普机器人产业技术研究院有限公司,安徽 芜湖 241007)
近年来,随着传统的制造技术越来越走向智能化,对于检测技术的自动化水平和精度要求越来越高。目前检测技术主要分为两大方向:接触式测量,这类检测由于人员参与的成分很多,存在测量精度不确定、效率低下、细小缺陷无法检测等情况;非接触式测量,随着光学、自动化技术和计算机技术的发展,出现图像法检测和结构光测量两大主流方向,光源的选择对图像法的结果影响较大而且深受周围环境的影响,系统搭建比较繁琐;以线结构光技术的光学测量精度高、效率高、易于操作[1-6],尤其是激光轮廓传感器的出现,可以便捷地多角度实时检测。如李雯提出的基于激光轮廓传感器的钢轨外形检测系统,采用4个激光轮廓传感器的组合扫描钢轨,利用坐标系转换原理获得了完整的钢轨端面数据[7]。
PCL库是一个跨平台的开源C++点云库,基于Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull等第三方库,涉及点云数据滤波、配准、分割、特征提取、曲面重建、可视化等相关算法和数据结构,是激光视觉领域不可或缺的技术方法[8-10]。
光学测量要获得高质量的轮廓数据,需要数据信息与物体空间位置一致,且要保持目标物体运动与传感器点云采集的时间一致[11]。由于在电机的周期运行过程中有加减速阶段,在此段时间内不能得到准确比例的点云数据,鉴于此,本文基于线激光轮廓传感器、编码器、STM32嵌入式微处理器,Visual Studio软件提出一种同步三维扫描系统。该系统将编码器的输出脉冲作为传感器的采集时钟,消除了位移台速度变化对采样间距的影响以及物体运动与采集时钟不一致造成的数据扭曲问题,提高了数据的质量。
1 线轮廓激光传感器工作原理
线激光轮廓传感器体积小、测量视野宽、测量范围大,其工作原理是基于激光三角法,利用激光发射器对物体发射一字激光线,通过相机捕获从目标物体反射回来的激光,再根据光的反射原理和相似三角形的性质,不同高度的表面反射形成的光斑位置不相同,从而得到目标物体的高度信息(见图1)。
图1 激光三角测量法
如图1所示,入射光线与基准平面法线的夹角为0度,反射光线与基准平面法线之间的夹角是α,反射光线与相机成像面之间的角度是β, B点对应探测器上的成像点E,C点对应探测器上的成像点D,B点与接收透镜之间的距离为L1,E点到接收透镜的距离为L2,f为接收透镜焦距,根据三角形几何关系有:
(1)
根据图1,将(1)式改写为:
(2)
根据高斯图像公式计算出x为:
(3)
2 系统架构设计
2.1 机械结构设计
该系统采用激光传感器固定,工件运动的方式,由位移台带动工件完成一次扫描。考虑到线结构光传感器有净距离、视场、测量范围等基本参数要求,而且激光三角法对倾斜角比较敏感,若入射光与物体表面法线方向存在角度,会造成物体表面激光光斑增大而且能量分布不均匀,降低检测的精度[12-13],所以本系统采用激光正射入的方案。为了能够灵活快速地调试好设备,设计一个多位姿调节支架,通过齿轮齿条的啮合以及角度调节块实现高度、角度调节,如图2所示。
图2 多位姿支架
根据材料力学原理建立数学模型:
(4)
其中M1为传感器与弧形导轨以及附属件的等效质量,L1为齿条伸出的最长距离,M2为底座的质量,L3为底座的长度。质量M2可表示为:
(5)
2.2 上位机软件开发与设计
上位机软件负责与控制器、传感器建立通信,控制电机的运动,保存传感器采集的数据,数据的格式转换、数据的可视化(见图3)。
图3 上位机主界面
软件的工作程序流程如图4所示,利用C++语言面向对象的特性,将软件子系统划分为5个对象进行封装,包括CSerialPoint类、CThreadcomm类、CGocator类、CPcl类、CDisplay类。通过MFC框架来融合各个类的功能进行UI设计。CSerialPoint类实现串口的基本功能,包括串口的打开与关闭,输入输出缓冲区大小的设定,波特率、奇偶校验、数据位、停止位设定,读写串口,目的是给控制器发送运动指令;CThreadcomm类封装了线程的开启与停止,线程回调函数,析构函数,目的是获取运动状态,及时处理错误信息;CGocator类根据厂家的软件开发包初始化传感器,包括构造SDK、查找传感器、链接传感器、开启数据通道、注册回调函数;CPcl类实现对点云数据进行数据转换、初始化可视化视窗、创建VTK交互器、数据可视化;CDisplay类与模态对话框绑定,调用CPcl类成员函数对处理后的数据进行显示。
图4 程序流程图
2.3 同步运动
由于电机在一个运动周期内必定经历一次加速、匀速、减速的过程,若采用传感器内部时钟作为采集信号,触发频率在三个阶段是固定的,在加速、减速阶段不能实现与工件运动同步,会导致采样点与工件的实际位置发生错位,还会导致采样不均匀、遗漏检测点的现象。而编码器与电机通过轴连接,光源通过码盘上的透镜完成聚光,当电机转动时,光栅盘与电机同速转动,当光敏元件接收到光源时输出一个脉冲信号。
根据编码器的工作原理,电机每旋转一周编码器输出的脉冲数是不变的[14],所以单位时间内的脉冲数量仅与电机的运动状态相关。采用编码器的脉冲信号作为传感器的采集控制信号,虽然在三个阶段的脉冲频率不一致,但是映射到工件上,取样频率是固定的,取样的均匀性和有序性可以更有利于提高采集数据的质量,同时也可以最大可能地展现工件的实际空间表现。
综上,同步运动表现在,通过编码器的脉冲反映出电机的运动状态,将采样频率随动于工件运动状态,实现工件运动与采集的同步性,提高采样点的质量。
3 系统实现
同步传动轮廓采集系统硬件包括多功能调节架、运动控制和数据获取三个核心部分。运动控制部分包括基于STM32嵌入式微处理器开发的控制器、电机驱动器、同步位移台;数据获取模块部分包括编码器、信号转换卡、传感器。上述三个部分与上位机软件一起构成了同步扫描系统。通过调节架,固定传感器,使得位移台上的目标物体处在有效的视野范围内,保证没有遮挡。上位机与控制器间采用串口通讯方式,发送运动命令,通过以太网通讯,接收传感器的采集数据,并且以帧为单位存储。采用信号转换卡把编码器的输出脉冲信号转换为传感器工作的时钟脉冲信号,保证传感器能够同步获取均匀间距的点云数据,系统概况如图5、图6所示。
图5 系统结构
图6 系统实物图
如图7所示,设位移台运动长度为S2,传感器有效视野为S1,为了不丢失装配法兰的特征信息,将X,Y方向设置相同的分辨率F,以保证采集的矩阵点云数据与装配法兰的实际位置一一对应。生成m行n列的Z方向数据:
图7 点云网格图
(6)
(7)
线激光传感器采集高度数据的同时也可以收集采集点的灰度信息,因此可以获取一个(m*n)维的灰度值矩阵。灰度值矩阵是按x,y坐标值寻址,初始化一个(m*n)像素的灰度图像,像素值初始化为0,然后通过遍历灰度值矩阵给像素赋值,生成一幅清晰的2D图像,用图像算法就可以分析轮廓信息。
4 实验结果与分析
本实验以装配法兰为例,如图8所示,四个装配孔编号分别为1、2、3、4。图9为原始点云图,由于采用传感器固定激光正射入的方案存在一定的视觉盲区,因而形成这种片式结构。图10为转换后的灰度图。
图8 零件图
图10 零件灰度图
图像阈值分割方法是把像素点按灰度级分成若干类,从而实现图像分割,常用的有灰度直方图法,最大类间方差阈值选择法;再根据各个区域的面积、圆度、矩形度等特征进行区域选取。
最大类间方差阈值选择法[15]是以最佳阈值将灰度直方图分割成两个部分,使两部分的方差最大。假定灰度级为[1,L],取阈值为T,T将像素分成两个区间C1:[0,T-1]和C2:[T,L];C1类像素占有Q1,平均灰度为G1,C2类像素占有Q2,平均灰度为G2,那么:
Q1+Q2=1
(8)
(9)
首先对图10进行分割,把零件部分提取出来,然后通过最大类间方差阈值选择法,获取一个最佳阈值分离更多的干扰区域。如图11所示,四个孔的特征依然很完整。再结合灰度直方图用阈值分割算子、提取圆孔,再通过最小外接圆获取圆孔直径,同时把内部时钟采集的数据做横向对比分析。
图11 Otsu处理图
如表1所示,从整体上看,外部时钟采集的数据最大误差为1.4%,相对于内部时钟采集的数据,误差值分别减小90.6%、70.2%、74.1%、77.8%。如表2所示,检测孔的空间位置也显著提高,误差值分别减少37.5%、72%、94.5%,且最大误差为0.7%,进一步表明同步三维扫描系统有效提高了数据质量。
表1 孔径检测
表2 孔相对位置
5 结论
本研究提出并研制了基于激光视觉的同步三维扫描系统,分析了线激光传感器的工作原理,阐述了系统架构的软硬件组成、工作流程。该系统操作简易、调试方便,使用多功能支架方便调整传感器的姿态,通过上位机软件一键获取物体的点云数据和灰度数据。把编码器输出的脉冲信号作为传感器的工作时钟,解决了采样点与物体空间位置不一致的问题,并且保证数据均匀间隔,客观地展现物体轮廓。通过对外部时钟与内部时钟采集数据的评价分析,验证了该系统的可行性。