一种视觉辅助机器人离线编程去毛刺系统
2021-09-23赖增亮刘冠峰
赖增亮,刘冠峰
(广东工业大学,广东 广州510006)
1 引言
部分铸造工件由于铸造工艺的问题,个体存在形状偏差,使得机器人去毛刺时出现打磨过度或者未接触的情况;另一方面,传统离线编程去毛刺也无法根据个别较大毛刺做轨迹修改,导致出现毛刺去除不全的情况。使用机器视觉提取工件轮廓,可以根据每个工件的实际情况自动调整离线编程中的实际轨迹,从而满足需求。
文献[1-4]中对工件去毛刺质量做了相应研究,总结前人经验给出了具有较高预测精度的预测模型。国内外的离线编程软件中,常见的有加拿大的RobotMaster,ABB的RobotStudio,中国华航唯实RobotArt[5]。但主流的离线编程软件一般没有视觉模块,当需要视觉辅助时,需要自己开发。文献[6]中使用3D相机及Iterative Closest Point(ICP)算法,对存在尺寸偏差的工件进行重定位,处理工件形状偏差问题。关于自动化去毛刺问题前人做了研究,有效的从自动化与误差因素上面解决上述问题,但都存一些缺陷:未将毛刺大小与加工质量综合考虑。为此,将毛刺大小及加工质量综合考虑值得进一步研究。
对于一些工件的去毛刺工艺,只需要使用普通工业相机即可完成任务,本文将使用一款CCD二维相机获取工件的边缘轮廓,计算得到加工路径和毛刺位置与大小,从而实现对每个实际工件的轮廓进行机器人轨迹调整。整个系统包含视觉辅助系统和自主开发的离线编程RobSim两部分,机器人使用日本NACHI机器人。
2 视觉辅助系统
视觉系统中使用IMAGINGSOURCE品牌的CCD相机,来提取实时工件的图像信息。为了将视觉系统和OLP系统结合起来,CCD相机通过USB接口连接到一台标准的Window系统计算机上。计算机接收传感器采集到的图像,然后OpenCV利用其功能对零件进行边缘识别和毛刺大小计算,最终发送到RobSim离线系统中。
工件的加工部分图像,如图1所示。利用OpenCV的Canny算子与HoughLinesP算子获取工件边缘的位置并计算边缘上毛刺的高度。
图1 带毛刺的炉灶架工件Fig.1 Raw Image of Workpiece
Canny边缘检测是一种非常流行和有效的边缘特征检测算子,在许多计算机视觉算法中用作预处理步骤。经过阈值处理后,使用Canny算子检测得到边缘,如图2(a)所示。在此边缘中,可清楚看见毛刺的投影。
图2 Canny与HoughLinesP算子的处理Fig.2 Process of Canny and HoughLinesP
在此具体去毛刺过程中,使用了简单好用的霍夫(Hough)变换来识别图像中的直线。因此根据概率霍夫变换算法,利用OpenCV中的现有HoughLinesP算子进行直线检测。最终在过滤同一边缘上的重复线条后,将这些直线首尾相接。HoughLinesP的处理结果,如图2(b)所示。
经过相机标定,物体在世界坐标系下的表示为:
式中:—物体和相机坐标系间的转换;—指相机和世界坐标系之间的转换。
为了计算CCD相机相对于世界坐标系的精确位置,已经利用此单元中的六自由度机器人对进行了标定。根据相机标定和图像处理,可以计算出线条和毛刺信息:每条线条的起点和终点位置;毛刺的长度、高度和位置。OLP将用上述信息生成沿边缘的轨迹,并去除所有毛刺。
3 离线编程RobSim
RobSim离线编程系统是去毛刺系统的主要部分,它是对SolidWorks三维设计软件的二次开发,RobSim离线编程的界面如图3所示。通过在SolidWorks中构建零件加工的工作站模型,仿真机器人加工运动,导出机器人程序,使实际机器人完成符合要求的动作。通过UDP套接字通信,集成RobSim系统和视觉系统。RobSim向视觉系统发送采集请求,接收与边缘和毛刺相关的数据,然后保持监听状态。完成识别和计算后,视觉系统将发回允许指令,允许RobSim完成任务剩余部分。
图3 RobSim离线编程界面Fig.3 The Interface of RobSim
同时,结合去毛刺的实际工艺,离线编程的去毛刺模块需要考虑去毛刺的工艺参数:主轴转速,进给速度,打磨深度等,根据毛刺的大小自动修改机器人运动轨迹。
4 离线轨迹生成
经过视觉标定,可以把图像的坐标从像素空间转换到实际坐标空间。再经过离线编程的去毛刺模块的一系列处理,即可生成机器人加工的程序。
4.1 目标点位姿计算
由于零件的特性,加工路径在同一平面内,且都为直线。在生成直线轨迹时,我们对直线轨迹的定义如下:设定直线的起点坐标(x0;y0;z0),直线的方向=(m;n;p)和步长ti。因此,直线上任一点在直线上的描述如下:
对于一个目标点,除了位置,还需要点的姿态。此处,以路径平面的法线方向定义姿态的一个方向n1=(μ1;ν1;ω1)。以直线自起点至终点的方向定义姿态的另一个方向。于是,第i个目标点pi的位姿可以用下面的齐次矩阵表示:
4.2 轨迹调整
根据机器人运动学理论[7],目标点的位姿经过机器人逆运动学转换成机器人各关节位姿,并赋予轨迹上各目标点初始速度。由于毛刺高度各异,应根据去毛刺工艺调整机器人的加工速度。文献[8]中涉及Tipnis提出的去毛刺质量,即打磨面粗糙度Ra的数学模型:
式中:K,k1,k2,k3—铸铁材料对应的常数;V—主轴转速(mm/s);f—进给速度(mm/s);a—切削深度(mm)。
根据第二节所述的边缘检测可以计算毛刺的高度。此外,通过检测多个工件图像得出毛刺的平均高度和标准偏差,并根据毛刺高度和平均值间的比较,毛刺高度可划分为若干个等级范围。参考相关的去毛刺过程,根据不同的毛刺高度分配机器人的加工速度。因此,可以通过在RobSim系统中应用去毛刺程序包完成去毛刺任务。
4.3 生成程序
在RobSim中,我们可以利用视觉系统,根据记录的目标点生成机器人的可执行代码,机器人的离散运动以点对点的方式表示。其他运动参数通过定义指令的自变量来指定。具体而言,包括位置数据(与结束位置相对应的机器人目标)、速度数据(期望速度)、工具数据(如TCP位置)和工作对象数据(如当前坐标系)。创建路径阶段后,所有的SolidWorks对象和指令均转化成NACHI编程语言,并自动生成代码。部分运动指令,如图4所示。
图4 机器人轨迹代码Fig.4 Robotic Code of Trajectory
图中,MOVEX表示机器人运动插补方式,括号内为机器人关节转动角,s即为轨迹需要调整的速度参数。在视觉检测到的毛刺较大位置,需要降低速度。
5 实验验证
我们开展了若干项实验,以验证去毛刺系统。实验使用的装置为NACHI MC20-01型号的工业机器人和IMAGESOURCE品牌的CCD相机。在本文中,我们预先并不知晓工件轮廓相关信息,所有数据均采集自图像,并且依赖于相机校准的精确度。
比较边缘检测和边缘检测得到的直线,可以发现线条与边缘检测所得轮廓高度吻合,如图5所示。然后,由于基线已经确定,我们能够得出毛刺的位置、宽度和高度。
图5 工件边缘与提取直线的对比Fig.5 Comparison of Edges and Lines
标准边缘和目标轮廓间的距离以像素为单位计算。像素单位表示每个毛刺的大小。为了规划机器人的速度,我们获取了五份工件视觉样本及其相应的平均值和标准偏差,如图6(a)所示。为了提高去毛刺效率,我们定义了四个高度等级,每个标准偏差都被划分到一个与最佳去毛刺速度相对应的等级。机器人的加工速度可根据计算得出的平均值和标准偏差随后分配。毛刺高度越高,去毛刺时,机器人的速度就越慢,如图6(b)所示。实验结果表明,通过识别的毛刺尺寸进行去毛刺速度调节,可以有效地去除所有毛刺。
图6 毛刺高度分析及速度分配Fig.6 Analysation of Burrs Height and Speed Assignment
调节每个目标点的方向和速度后,机器人运动的轨迹就已确定。首先,在RobSim系统中模拟机器人的运动。一旦完成模拟,就将此类路径数据转化为可执行的代码,导入到机器人中,由其付诸实施。未做速度修改处理的去毛刺结果,如图7所示。纵轴表示残余毛刺高度,横轴表示工件边缘路径。明显看出,部分边缘位置依然存在较大毛刺。本次离线编程进行轨迹调整实验的去毛刺效果,如图8所示。
图7 未做轨迹调整的毛刺残余Fig.7 Residual Burr without Trajectory Adjusted
图8 轨迹调整后的毛刺残余Fig.8 Residual Burr by Trajectory Adjusted
经过打磨前与打磨后的工件对毛刺高度的分析,在毛刺较厚的位置,未经过轨迹调整的打磨,工件依旧存在部分毛刺,且毛刺高度较大;毛刺已去除宽度与工件边缘路径的占比,即毛刺去除率约为90%,打磨效果较难满足生产要求;经过本次实验的离线编程轨迹调整之后,毛刺高度基本未超过0.1mm,毛刺基本去除,毛刺去除率接近99%,边缘光滑,基本满足生产要求。
6 结论
(1)结合视觉辅助,可以自动识别工件的边缘信息和毛刺信息,从而利用离线编程自动生成路径并调整,不再需要手动示教等繁琐操作并排除了因铸造引起的形状偏差带来的影响。
(2)利用去毛刺的数学模型,根据毛刺高度调整机器人末端的进给速度,可以去除干净较大毛刺,从而提高去毛刺去除率,去除率提高将近9%。
实验证明,视觉辅助的离线编程去毛刺系统是一种有效的去毛刺方法。