SolidWorks二次开发在工业机器人砂带磨抛离线编程中的应用
2018-05-25王汝艮,傅高升,陈鸿玲等
0 引言
离线编程是利用计算机图形学知识建立起工业机器人的工作环境,附以智能、高效的优化算法收集并处理相关数据,进而自动生成代码,再利用三维图形动画仿真,选取最为合理的运动方案,最终将编程语言传至机器人控制器,完成相应工作[1,2]。用于离线编程的仿真软件主要有三类:一是各个机器人厂家自带的离线编程系统,这种模式下的编程软件可以与机器人良好的接合,但CAD/CAM功能不强;二是通过对三维图形软件二次开发完成的具有离线编程功能的软件,这种模式下的编程软件特点是系统过于庞大[3];三是通用的离线编程软件,这种软件的具体应用针对性不强。无论是通用的还是专有化的离线编程软件,这些商品化的软件大都成本高昂,并且在实际加工过程中的路径和刀位点的设置等具体环节中存在不足。
SolidWorks是一套基于Windows的CAD/CAE/CAM/PDM桌面集成系统,它采用的是全面非约束建模,可以在任何阶段修改设计[4];功能强大,组件繁多,可为用户提供更多高质量的不同设计方案。SolidWorks有成千上万个API(Application program Interface,应用程序接口)函数供用户选择[5],用户可通过二次开发完成建模、装配等相关功能模块。目前,SolidWorks二次开发技术广泛应用于机械设计行业,提高了设计效率,缩短产品开发周期,还可以满足我国国内工程设计标准的特殊要求[6]。本文通过SolidWorks二次开发技术完成了在砂带磨抛环境下磨抛工件路径信息提取过程,实现了在自由曲面下样条曲线“目标点”位姿矩阵的确定与在离线编程环节中磨抛加工轨迹“目标点”的工业机器人运行代码的自动生成。其中生成的位姿矩阵文件可用于逆运动学的计算分析及验证从而对磨抛路径再次优化,而生成的RAPID代码可直接上传至仿真软件进行仿真操作。
本文将SolidWorks二次开发生成的RAPID代码首先在Robotstudio上进行初步仿真,无碰撞干涉后,以ABB IRB4400工业机器人和砂抛机为平台,进行铜合金水龙头现场磨抛试验。
1 砂带磨抛系统建模及分析
智能化、柔性化、集成化是现代化工业生产的发展趋势,同时在工业机器人磨抛领域发展前景更为可观。文献[7,8]分别针对复杂曲面的机器人磨抛系统进行了研究。由工业机器人、砂抛机以及控制柜配合使用,可以形成一个完整的砂带磨抛系统,进一步取代传统的手工磨抛作业。工业机器人磨抛作业一般流程如图1所示。
图1 工业机器人磨抛作业流程图
磨削过程中机器人通过夹具夹持水龙头首先在安全位置调整水龙头的姿态,再将待加工作业点与砂带表面贴合,砂带磨削是一种弹性磨削,磨抛过程可看作面与面接触的加工方式,此时工具坐标系与待加工点坐标系是重合的,如图2、图3所示。为便于在离线编程中更准确的描绘出机器人磨抛时的运动关系及介绍轨迹信息提取的方法,这里引入5个笛卡尔坐标系和4个相应的位姿转换矩阵[9]:
图2 砂带磨抛系统坐标系
图3 仿真和现场环境下局部坐标系对比
Base坐标系:基座标系,机器人安装所在位置的坐标系,也可认作大地坐标系。Tool0坐标系:工业机器人末端法兰盘坐标系,其坐标系位姿矩阵的n、o、a、p值完全由机器人关节转角和各个杆长决定,末端可连接相应的工件或工具,此次磨抛试验连接的是工装夹具。Wobj坐标系:为工件坐标系,为便于计算,可建立在工件与夹具交界圆心处。Work坐标系:待加工点坐标系,磨抛过程中与工具坐标系重合。Tool坐标系:工具坐标系,砂带上用于磨抛的位置。
实现磨抛加工作业时各个坐标系间的关系为:待加工点坐标系(Work坐标系)的确定成为离线编程过程的关键任务,Work坐标系的选取直接关系到水龙头磨抛效率和磨抛后的表面质量。将水龙头的原点设在tool0位置处,可减少在提取轨迹信息位姿矩阵转换时的计算量,从而使SolidWorks二次开发程序更加简洁,运行效率也得以提高。
2 RAPID指令分析
就RAPID的主程序而言可分为声明部分、主程序和例行程序。此次SolidWorks二次开发过程主要以RAPID代码的声明部分的工件刀位点声明指令来叙述,其他的工具、工件数据可通过标定得到,这里不再加以论述。
下面为3路径第2刀位点的目标点数据:
其中[Px,Py,Pz]为刀位点Wobj坐标系下的位置常量,[S,O,P,Q]为四元数,表示与砂带接触时姿态,[cf1,cf4,cf6,cf0]为轴配置参数,[9E9,9E9,9E9,9E9,9E9,9E9]为无外伸轴情况。
位置常量可通过GetSketchPoints2()函数直接获取目标点位置信息,四元数则需满足以下条件四元数中选择第一列最大者作为四元数最终结果[10]:
此次SolidWorks二次开发过程主要采用第一列或第四列四元数生成的代码,其结果满足在磨抛前路径规划的设计需求。
工业机器人以某一姿态运动到同一位置时有多种方式,因此为消除机器人运动的歧义性,就必须增设轴配置加以约束。IRB4400型工业机器人的轴配置参数为[cf1,cf4,cf6,cfx],cf1、cf4、cf6代表1、4、6轴关节角所在象限,cfx由5轴的关节角度判定,这里cfx默认为零,只需确定前三者的取值。
由:
可得:
即:
通过式(3)可得到θ1、θ4、θ6,再根据θ1、θ4、θ6的大小来确定所在象限值即为轴配置参数,轴配置参数的选取宜遵循两个相邻刀位点角度值之差最小的原则。
3 轨迹信息提取
笛卡尔坐标系下的磨抛路径可由约束函数、直线或者空间曲线构成,磨抛路径可离散成一系列点,相邻刀位点用直线或圆弧插补,刀位点的数量与曲率有关,曲率越大刀位点的数量越多[11,12]。信息提取过程需要对三维零件模型添加点、线、坐标系等元素,因此整个操作在草图(3DSketch)环境中进行。刀位路径和刀位点可通过面部曲线函数(SketchConvertIsoCurves())和均匀分布(InsertReferencePoint(2,2,2,k))的方式初步建立,根据加工设计的需求还可以在刀位路径上新增或删除刀位点,函数(GetLength2())可以得到待加工路径的长度,函数(GetSketchPoints2())用于获取的x,y,z可作为位置矩阵的(px,py,pz,1)T,刀位点坐标系的建立有以下两种方案。
3.1 创建等距曲线
分别创建待磨抛路径的两条等距曲线,两条曲线可视为无数个x点、z点的集合,将曲面外的曲线z点作为z轴所在方位,将曲面内的曲线上x点作为x轴所在方位。三点法确定的刀位点(wobj1)与砂带贴合时,z轴方向垂直于砂带,y轴方向为走刀方向,在点(wobj1)时,y轴与该条磨抛路径相切,x轴方向则为砂带宽度方向。为减少砂带粗磨抛后表面条纹的形成,实际加工过程为砂带在沿y轴运动的同时,机器人挟持水龙头有少量的x轴方向的运动,如图4所示。
图4 三点法建立的刀位点坐标系
等距曲线法可以更为便捷的获取y与z的坐标值,确定缺点是建模复杂,适合平面、圆柱面、球面等较为规则的曲面,曲线与刀位点之间的间距不宜过大,通常设为1mm。水龙头为对称实体,表面部分曲率分布情况如图5(a)所示。在不规则曲面上创建1mm范围内的等距曲线,y与y'间有小的夹角,z与z'间夹角较大如图5(b)所示,在曲率较大位置随机获取40个刀位点,并进行初步统计,结果如图5(c)所示,夹角大小均分布在25°以内。课题组成员之前采用“三点法”确定的位姿矩阵和加工路径,水龙头经磨抛后表面均无棱角、过磨现象,面与面之间过渡平缓,表面质量基本符合加工要求。但采取该方案获取刀位点信息步骤繁琐,对SolidWorks二次开发较为困难,且不适合表面曲率大、曲率变化快的工件。
3.2 建立曲面垂线
第二种方案是直接创建加工面垂线和磨抛路径切线,垂线作为z轴,切线为y轴。与等距曲线方法相比,第二种方案的z与z'、y与y'间完全重合,与曲面曲率无关,加工效果仅与加工点数量有关,刀位点数目需根据曲率变化做相应调整,因此,采用第二种方案对SolidWorks二次开发。以水龙头为例,图6为不同加工面上7个刀位点处的曲面垂线与磨抛路径的切线,分别作为z轴和y轴,oy和oz轴的长度为刀位点到原点的距离。
图5 水龙头加工路径曲率分布
图6 刀位点切线(y轴)、垂线(z轴)
获取轨迹信息过程可以与建模同时进行,即确定一个坐标系输出一个相应的刀位点位姿矩阵和一条相应的RAPID代码;也可以将两过程分开进行,即先建立整条加工路径上所有的刀位点坐标系,再确定每一个刀位点的位姿矩阵和代码。通过边建模边获取路径信息,可以更大程度利用程序的二次开发完成任务,但程序运行效率不高,且随着程序的复杂化,程序容错率也会降低;分开进行可以使程序大幅度简化,从而保证了运行效率,且刀位点坐标系在需要修改时可以先进行修改,修改后的坐标系不影响位姿矩阵与RAPID代码的生成,选用分开进行的方案更佳。由于建模过程使用了Extension.SelectByID2函数,因此需要先选中一加工轨迹为走刀方向。
建模与路径信息提取同时进行的主要程序和思路如下:
以上为通过SolidWorks二次开发来获取路径信息的实现方法,其中省略的API函数可通过宏录制或查阅手册得到。
4 砂带磨中的应用效果验证
以上生成的RAPID代码的正确性和磨抛效果需要仿真和现场磨抛验证。 试验样品为已经过粗抛的铜合金水龙头,水龙头通过气动夹具固定,砂带选用600#鹿牌砂带,速度为25m/s进行磨抛试验,如图7(a)所示。磨抛后的水龙头表面,每个面都磨抛均匀,刀位点间过渡圆滑,均无棱角和过度磨、未磨现象,效果基本满足磨削要求。由于不同面之间的磨抛路径数量不同,每个面的磨抛时间存在差异,因此面与面间的过渡仍需优化,如图7(b)所示。
图7 磨抛试验及磨抛效果
5 VB二次开发平台
离线编程操作步骤多,为了便于用户操作,可将各部分功能整合在一起形成一个.exe的执行程序。SolidWorks本身提供了宏录制功能,宏代码的语法与VB语法相似,采用VB对SolidWorks二次开发具有天然优势。VB是一种面向对象的可视化程序设计语言,VB引入窗体和控件等概念,以“画”程序代替编程序,
【】【】开发周期短,代码效率高。为了在获取刀位路径信息操作方便,可利用VB编写成可执行程序(.exe程序),如图8所示,这样以SolidWorks为服务器,通过调用API函数操控SolidWorks,同时也避免了.dll程序可能引起的SolidWorks崩溃等问题。
图8 离线编程(.exe)整体界面
基于VB平台的SolidWorks二次开发,需要加载如“SolidWorks2016 Type Library”等相关库。SolidWorks二次开发过程中定义宜采用早绑定的方式,早绑定可以增加代码的可读性,代码编写过程可以检查代码的正误,并且可以提升程序的运行效率[5],因此在定义对象或变量时,应尽量避免使用Object、Variant。
6 结论
1)本文对工业机器人砂带磨抛系统进行了模型分析,阐述了各个坐标系之间的转化关系。
2)采用直接创建切垂线的方案,得出的位姿矩阵更为精确,对于处于压缩状态的零件建模和分析更为方便;通过砂抛机的磨抛效果对比,单条磨抛路径间略有改善。
3)通过VB对SolidWorks二次开发并生成可视化界面,离线编程更为直观、便捷。
参考文献:
[1]卢正君.基于CAD离线编程与仿真系统设计[D].南京:东南大学,2010.
[2]S.Mitsi, K.-D.Bouzakis, G.Mansour, D.Sagris and G.Maliaris.Off- line programming of an industrial robot for manufacturing[J].The International Journal of Advanced Manufacturing Technology,2005,26(3):262-267.
[3]刘楚辉,姚宝国,柯映林.工业机器人切削加工离线编程研究[J].浙江大学学报(工学版),2010,44(3):426-431.
[4]江洪,魏峥,王涛威,等.SolidWorks二次开发实例解析[M].北京:机械工业出版社,2004.2.
[5](美)SolidWorks公司,杭州新迪数字工程系统有限公司.SolidWorks高级教程:二次开发与API[M].北京:机械工业出版社,2009.
[6]熊文波,刘宇,谢侃,廖慧.SolidWorks二次开发在燃面计算中的应用[J].航空动力学报,2008,23(8):1536-1540.
[7]洪云飞,李成群,贠超.用于复杂空间曲面加工的机器人磨削系统[J].中国机械工程,2006,(Z2):150-153.
[8]王瑞芳,徐方.机器人研磨抛光工艺研究与实现[J].新技术新工艺,2008,30(9):19-22.
[9]齐立哲,甘中学,贠超,汤青,孙云权.机器人砂带磨削系统作业精度分析与误差补偿[J].机器人,2010,32(6):787-791.
[10]郑军.四元数和旋转矩阵相互转化的算法实现[J].阴山学刊:自然科学版,2012,26(3):11-14.
[11]王伟,贠超,张令.机器人砂带磨削的曲面路径优化算法[J].机械工程学报,2011,47(7):9-15.
[12]王卫忠,赵杰,高永生,蔡鹤皋.机器人的平面曲线轨迹规划方法[J].哈尔滨工业大学学报.2008,40(3):389-392.