基于视觉传感器的去毛刺加工路径生成方法研究
2022-02-19王春韩德元高鹏
王春,韩德元,高鹏
(1.大连交通大学 机械工程学院,辽宁 大连 116028;2.大连德控电气技术有限公司,辽宁 大连 116028)①
去毛刺作业是工件加工过程中的重要一环.目前很多去除毛刺的方法都是手工操作,效率不高,在去除的过程中还会损坏零件,对零件精度产生更大影响[1].随着工业机器人的普及,去毛刺的工作逐渐由工业机器人来完成.当前在使用工业机器人进行去毛刺作业时,其加工轨迹的路径规划多数为现场手动示教或是在离线编程软件中对工件模型进行手动编程.编程的具体做法是在现实场景中操作机器人移动,或者在离线编程软件中操作机器人模型移动,并在此过程中记录机器人移动的相关数据,之后让机器人根据这些记录的数据重复运动.但是当路径较为复杂的时候,手动示教不仅繁琐,而且容易出现错误,导致效率低下.这时加工路径的自主生成就显得尤为重要了.
去毛刺的路径规划是机器人编程的基础,比如在人工使用工具进行去毛刺作业的时候,是通过眼睛的观察和大脑的判断来进行毛刺的去除作业,其中眼睛是视觉传感器,大脑是控制系统,而肢体则是执行机构.
在不考虑机器人本身特性的前提下,对毛刺加工路径首先进行自主规划,然后以此作为机器人编程的前提,可以使机器人的编程具有一定的智能性.在不远的将来,传统的示教编程将只在很少的场合得到应用,并且会与CAD/CAM、视觉技术、传感技术,互联网、大数据、增强现实等技术深度融合,自动感知、辨识和重构工件和加工路径等,实现路径的自主规划,自动纠偏和自适应环境[2].
本文提出一种通过使用视觉传感器对工件进行轮廓识别与检测,进而自主生成去毛刺加工路径的方法.由于现实中影响视觉传感器的因素太多,并且目前多数的离线编程软件仍然是需要人工识别加工边缘.因此本文选用在VREP平台下,建立与实际应用状况下对应的场景模型,通过添加平台自身的视觉传感器,对工件进行轮廓边缘检测,之后使用相应的编程函数获取边缘像素点的相关数据,根据所获取的数据进行路径生成,为机器人智能化编程提供一定的数据参考.
1 工件轮廓识别原理
工件在进行机械加工的过程中,毛刺主要产生于工件轮廓边缘处,因此视觉传感器需要在识别工件的过程中利用边缘检测算子提取出工件的轮廓边缘.机器人编程需要的是基于世界坐标系的坐标点位,因此在完成轮廓边缘像素点的提取工作之后,需要将其转换为世界坐标系下的坐标点位.
图像上的像素点序列用像素坐标系[uv]T表示,路径点相对于世界坐标系的坐标值用[XwYwZw]T表示.根据像素坐标系与世界坐标系的转换公式(1),建立二者的对应关系,其中相机内参的3×4矩阵由u0、v0所表示像素坐标原点和fx、fy所表示的相机焦距所组成,相机外参的4×4矩阵由旋转矩阵R和平移矩阵T所组成.
(1)
2 V-REP平台搭建
Virtual Robot Experimentation Platform,简称V-REP,是全球领先的机器人及模拟自动化软件平台.在V-REP平台下,可以根据实际应用搭建相应的场景模型,并且可以添加各种传感器,通过脚本语言对其进行程序代码的编写,从而模拟机器人系统的各项使用功能.
在V-REP平台下进行去毛刺的路径规划,首先需要搭建相应的应用场景,本文所涉及的场景模型主要分为工件模型、视觉传感器、图表.其中视觉传感器用来识别工件模型的相关数据并进行处理,然后将所处理后的数据传递给图表,使图表将所接收的数据可视化.场景布局如图1所示,三者的关系如图2所示,下面分别进行阐述.
图1 场景模型布局图
图2 场景模型关系图
(1)工件模型指的是待加工模型.建立工件
模型可在V-REP中完成,也可在外部的CAD 软件中完成然后导入V-REP,但是前者建模能力较弱且较为繁琐,远不如现在已经商用化的三维软件便捷[3].本文将所需要的工件模型直接导入至V-REP中.
(2)V-REP中视觉传感器,可以模拟现实中的工业相机,它可以检测可渲染的实体.视觉传感器有固定的、可设置的分辨率,其检测到的图像内容可以通过脚本函数访问,并且可以使用内部的图像处理过滤器对原始图像进行二次处理.V-REP中的视觉传感器可分为正交投影型和透视投影型.本文使用的是透视投影型,其视场角(FOV)设置为60°,即传感器处于透视模式下,检测体积的最大打开角度为60°.
视觉传感器中的剪切平面分为近端剪切平面和远端剪切平面,其主要作用是用于排除场景中的几何体,即只查看近端剪切平面与远端剪切平面内的场景模型,而其他部分的模型则不可见.由于本文需要图像传感器对工件模型全范围识别,因此工件模型需要全尺寸的处于图像传感器的包络范围内.
V-REP中的视觉传感器在仿真过程中对可视范围内所检测到的物体进行图像检测与处理.其具体过程就是遍历图像的每个像素进行处理,并同步生成两种数据流,即彩色图和深度图.但是根据去毛刺的加工特性,路径规划编程所需的只是工件模型的边缘部分,因此需要视觉传感器的内部过滤器来对图像进行二次处理.内部过滤器的图像处理流程主要分为输入、滤波、输出.根据本文的使用需要,这里选用的是滤波方式为工作图像边缘检测,即首先将原始图像转换成工作图像,然后对工作图像进行边缘检测,最后将工作图像进行输出,其内部过滤的流程图如图3所示.
图3 视觉传感器过滤器流程图
由于视觉传感器只在模拟运行时才能对图像进行处理,因此图像内容仅在模拟过程中可见.VREP平台下的模拟效果图中,仅存在两种颜色,其中背景色为黑色,轮廓边缘为白色,为了方便表达,这里将效果图进行取反操作,即黑白颜色互换,互换后的效果图如图4所示.
图4 经过边缘检测后的图像
由图可见,经过滤波后的图像中,黑色轮廓包含了工件模型中需要进行去毛刺的加工边缘,即需要后续数据处理的部分.
(3)V-REP中图表(Graph)主要用于记录、可视化或导出模拟数据.为了接收视觉传感器所处理的后的数据,并将数据可视化,使得能够同步生成加工路径,因此需要在场景中添加一个空图表,并将其设为显示处理(Explicit handling),用于在此基础上添加用户自定义数据流.由于加工路径是一个由三维空间中的标量点组成,因此需要分别添加X值、Y值和Z值.
3 程序编写
V-REP主要是通过嵌入式脚本对模型与仿真进行控制的.嵌入式脚本指的是嵌入在模型中的脚本,是模型的一部分,与模型一起保存一起加载.V-REP脚本类型分为非线程和线程,由于路径的规划是一个连续的过程,因此本文使用的是以级联方式处理的线程脚本进行程序的编写,添加对象分别是视觉传感器与图表,其中视觉传感器的脚本用于对图像进行数据处理与发送,图表的脚本用于接收视觉传感器的数据,并同步生成路径.
本文使用的是Lua语言作为编程的脚本语言.目前,Lua语言已经在游戏开发、图像信息处理、分布式控制与应用、生物信息学等领域中得到了较为广泛的应用[4].
脚本代码的编写,首先是通过获取对象句柄函数(sim.getObjectHandle)来获取相关的模型句柄.在使用视觉传感器对工件模型进行图像处理的时候,主要使用的是函数库中关于彩色图与深度图的函数.
使用获取像素点的彩色图函数,即获取图像的RGB值函数 (sim.GetVisionSensorImage)对经过边缘检测后的图像进行处理,其返回的数值是一个一维数表,其数据结构为视觉传感器遍历每个像素点的RGB值.例如图像像素点行列数为m×n.其数据结构与像素点的对应关系如表1所示.
表1 像素点与数表关系表
由于原始图像在经过滤波处理后只存在黑白两种颜色,因此返回的数表中也只存在0或1两种数字,其中0代表白色,即非轮廓边缘点,而1代表黑色,即轮廓边缘点.因此需要将轮廓边缘点所对应的像素点序列值提取出来,即找到返回值为1的点所对应的像素坐标.本文使用的是常规编程方法中的泛型for循环,即通过一个迭代器函数来遍历所有值,进而提取处返回值为1的数组索引值.然后将获取的像素点坐标使用矩阵变换将其转换到世界坐标,进而生成加工路径的X、Y坐标点.
与此同时,使用用于获取图像深度值数据函数(sim.GetVisionSensorDepthBuffer)来提取出的像素点的深度值,进而生成其相对于世界坐标系的Z值.函数的返回值同样是一个一维数表,此数表显示的是图像上指定点的深度数据.需要注意的是其生成的数值并不是真正的距离,而是归一化的比例关系数值,其中离传感器最近的值为0,最远的值为1,因此需要根据已知剪切平面的位置计算出真实的深度.进而再次使用矩阵变化将其转换为相对于世界坐标系的Z值.
将获取的轮廓边缘像素点转换为世界坐标值之后,使用压缩数据表函数(sim.PackFloatTable)将数据打包成字符串,通过设置字符串信号函数(sim.SetStringSignal)将字符串信号发送给图表. 同时在图表脚本中使用获取字符串信号函数(sim.GetStringSignal) 和 解 压 浮点数据表函数(sim.UnpackFloatTable)将从视觉传感器所发送的数据进行读取与解压,并同步生成3D曲线.其算法流程图如图5所示.
图5 算法流程图
4 仿真验证
在完成了平台的搭建和编写相应的程序代码之后,需要对其进行运动仿真,验证其结果,并且观察是否满足需求.为了方便显示所生成的路径,需要将工件模型与视觉传感器隐藏,所生成路径图如图6所示.
图6 路径生成图
由图可见,视觉传感器成功地将可视范围内的轮廓边缘通过图表的方式显示出来,将由图表记录的路径数据使用CSV后缀文件可以导出至Excel之中,用于后续的数据处理.
需要注意的是,其中所生成的轮廓曲线除了需要进行去毛刺加工的轮廓边缘之外,同时也存在不需要加工的轮廓边缘,并且根据所生成的路径无法判断出路径是内轮廓边缘还是外轮廓边缘,因此还需要进行后续的数据处理,比如轮廓跟踪,轮廓分割等,才可以最终生成机器人编程所使用的坐标数据.
5 结论
本文使用视觉传感器对去毛刺加工路径进行自主识别,并通过在V-REP平台下建立场景模型,并利用编程手段自主生成去毛刺的加工路径,模拟仿真验证其结果,最后生成机器人编程所需要的数据点.全过程由计算机自主完成,相比人工完成,效率得到显著提升.使用视觉传感器进行去毛刺的自主路径规划,不但可以减少手动编程的试错几率,而且还可以在此基础上,实现机器人去毛刺加工的自主编程,从而减少大量的人为工作量.