APP下载

SolidWorks二次开发曲面离线编程及运动仿真①

2017-09-15蔡奕松孙克争苏泽荣周雪峰

计算机系统应用 2017年9期
关键词:离线二次开发曲面

蔡奕松,孙克争,苏泽荣,周雪峰

(广东省智能制造研究所 广东省现代控制技术重点实验室,广州 510070)

SolidWorks二次开发曲面离线编程及运动仿真①

蔡奕松,孙克争,苏泽荣,周雪峰

(广东省智能制造研究所 广东省现代控制技术重点实验室,广州 510070)

为了解决人手动示教提取曲面轨迹困难且操作繁琐的问题,采用Visual Studio对SolidWorks软件进行二次开发的方式进行机器人的曲面离线编程,并且以DLL插件的形式自动加载到SolidWorks中.系统通过将曲面进行UV参数化进而实现离线轨迹的快速提取和机器人控制代码的生成,再以DH参数表示机器人模型,最后通过遍历关节角的方式实现机器人的运动仿真.实践证明,该系统离线编程生成的控制代码能够直接下载到机器人控制器运行并达到了实际预期的效果.上述系统对工业场合的实际开发应用和国内中小型企业快速加工多种零件具有重要的意义.

曲面离线编程;UV 参数化;DH 参数;遍历关节角

1 引言

采用离线编程的方式,可以有效的解决手动示教编程提取曲面轨迹困难,省去繁琐的重复性操作,减少编程开发和机器人停止作业的时间,仿真实际运行的效果,远离机器人工作的区间,避免工作员调试操作的危险[1].同时还可以加工多种或者更加复杂的零件,实现多机器人交互式的运动仿真.

从70年代开始,国外就开始开展了对机器人离线轨迹规划以及编程系统的研发.从80年代以后,一些发达国家例如美国、德国、日本等在大学设立了专门的研究机构开展离线编程的研发,取得了相当可观的成果[2].国外的离线编程软件有:加拿大的Robotmaster:以色列的 Robocad[3];瑞士的 Robot Studio[4];以色列的 Robot Works[5];俄罗斯的 SprutCAM;日本的WINCAPSII;意大利的 Robomove.

与国外离线编程系统在工业机器人方面的研究对比,国内研发起步较晚,最早起步于90年代.主要由各大高校自主创新研发,例如,哈尔滨工业大学基于Motoman UP20工业机器人的离线编程系统和采用基于SolidWorks的二次开发,实现解决机器人的放置的难题,焊接顺序规划和多台机器人进行离线运动仿真的功能[6];华中科技大学用C语言编写的基于微机的离线编程系统和采用C++语言编写的HOLPSS离线编程系统;南京理工大学用AutoCAD开发的HOLPS系统;北京工业大学基于OpenGL的针对焊接应用的离线编程与仿真系统;上海交通大学基于PC机利用OpenGL和Visual C++编写开发的离线编程与动态仿真系统等等.另外中国科学院沈阳计算技术研究所在2016年提出基于win7利用Qt和OpenGL的串联机器人离线编程系统[7].

近年来逐步有部分离线编程软件商业化如由北京华航唯实针对于抛光打磨行业的应用RobotArt;由佛山罗庚开发的 Logen Robot Studio.

综上所述,国内的离线编程系统功能相对国外薄弱,仍有相当大的差距.一方面,国内大部分的离线编程系统都是在单机器人系统基础上,利用相关CAD平台以及一些辅助的编程开发工具进行二次开发,虽然有少部分是基于SolidWorks的二次开发,但没有形成完整的系统,只能用于仿真而不能连接机器人本体,不能投入实际应用;另一方面,国外虽然有大量成熟完整的离线编程系统并且大部分已商业化,但普遍授权费用高昂.当然,国外也有基于SolidWorks二次开发的软件,如 Robot Works,但通用性弱并且软件授权费用高,轨迹设计能力比较弱,不适合国内中小型企业.

本系统是基于 SolidWorks 2015 利用 Visual Studio 2010进行的二次开发[8],可以在离线的情况下对机器人的作业任务进行轨迹提取、代码生成、运动仿真等.

2 系统总体架构

系统主要分为三个模块:

图1 系统总体架构

(1)Shell程序模块是基于 SolidWorks 2015 进行的二次开发,采用 Visual C++语言.SolidWorks 是一款用Windows平台开发的三维参数化软件[9],并且由Visual C++语言编写开发,本系统采用Visual C++语言进行SolidWorks的二次开发可以直接调用SolidWorks的底层函数,还可通过基于COM技术[10]用Visual Studio 2010开发的DLL程序直接嵌入到SolidWorks内部作为插件使用,便于参数的设计.这部分是本系统的重点设计程序,实现系统的功能:操作界面管理、代码生成模块设计、机器人轨迹提取、运动学分析和运动仿真等.

(2)共享内存管理模块(Shared Memory)实现进程间的通讯,主要共享内存包含指令信息、数据信息、状态信息.

(3)机器人在线控制则是基于 Robot Communication SDK,完成机器人通讯、信息交互等功能.

系统总体架构如图1所示.

3 系统开发原理简介

3.1 SolidWorks二次开发

SolidWorks二次开发包括SolidWorks的API接口和SolidWorks的API对象模型.

SolidWorks的 API接口:在 SolidWorks二次开发中SolidWorks作为OLE自动化服务器提供的属性和方法构成了SolidWorks的API[11];SolidWorks的API接口即COM接口函数,可供支持COM编程的工具如Visual Basic、Visual C++6.0、Delphi等直接调用并开发所需程序模块[12].

SolidWorks的API对象模型:最高级对象SldWorks,是所有访问SolidWorks API对象的入口,也是所有类的父类对象,因此可以由它直接或者间接地方式去访问其子类对象,进而访问到对象中的属性、事件和方法[13].SldWorks的子类对象主要有ModelDoc、Environment、Frame、SWpropertySheet、Modeler、AttributeDef等.其中一个非常重要的子类是文档模型对象ModelDoc2,ModelDoc2对象成员如图2所示.

图2 ModelDoc2 对象成员

本系统用VC++进行SolidWorks二次开发工程生成步骤流程图如图3所示.

图3 SolidWorks二次开发工程生成步骤流程图

SolidWorks二次开发基本流程如图4所示.系统利用 Visual Studio 2010 对 SolidWork2015 进行二次开发.首先,将模型曲面离散成曲线;接着,通过 Icurve 类的GetTessPts函数和Isurface类的EvaluateAtPoint函数将曲线离散成坐标点和切向法向量;另外,坐标转换到装配体坐标(机器人基坐标系)主要通过Icomponent类的get_Transform2函数和ImathPoint类的ImultiplyTransform函数实现;通过机器人运动学算法可正解算出机器人每一个关节的转角,最后将机器人进行轨迹路径的运动仿真,实现SolidWorks的二次开发技术.

图4 SolidWorks 二次开发基本流程

3.2 机器人DH参数化

机器人DH参数化主要是通过将机器人模型各个零件的坐标系统一建立在装配体基坐标系上;建立ini文件,该文件名与装配体文件名相同并放在统一后录下,并在文件中添加节:[DHPara](DH 配置参数)和[LinkName](各个关节的名称).这样即可通过获取ini文件的形式加载机器人模型配置参数.按照图5所示机器人在原点姿态的测量方法即可获得机器人的DH配置参数 a0,a1,a2,a3,a4,df.在实际加载机器人模型中,需要对机器人进行配置参数的初始化,使加载进来的机器人模型以原点姿态放置在工作站的原点位置.

图5 机器人的原点姿态

4 系统主要功能

4.1 操作界面管理

操作界面管理负责管理离线编程过程中用到的各个按钮及显示等功能,主要分成工程管理区、模型管理区、轨迹生成、仿真后处理、在线控制区、手动操作区、轨迹编辑区、项后管理区、状态显示区这九部分.操作界面管理如图6所示.

图6 操作界面管理

其中,模型管理区主要负责机器人、工具、工件和底座模型的加载.为了提高系统的兼容性,适应更多品牌的机器人,系统通过获取ini文件的形式加载各个模型配置参数.相比瑞士ABB公司推出的只针对ABB机器人Robot Studio软件,本系统具有更好的兼容性.

4.2 共享内存管理

共享内存管理模块主要是负责在人机交互界面和机器人在线控制程序之间传递控制机器人本体的各种指令信息、数据信息和状态信息.共享内存管理架构如图7所示.

图7 共享内存管理架构

在人机交互界面的程序中通过函数CreatSharedMem开辟一定的共享内存空间并设定共享内存大小,然后获取共享内存映射进而用函数ReadDataFromMem和函数WriteDataToMem实现共享内存数据的读写功能.

4.3 机器人曲面离线轨迹提取及运动仿真

加载完所需的模型以及配置相关参数后,可进行离线轨迹的设计.机器人曲面离线轨迹的提取主要解决:平面曲线轨迹的提取和空间曲线轨迹的提取.一条曲线可以看成由∞条直线构成的,直线的参数化表达式为:

式中P为直线上的点,D为点的方向,因此可以用一个点和一个方向向量来表示直线;类似地,一个曲面其实可以看成由无数矩形的结构构成的,这样曲面就有这三个方向:U、V、N(法线),即 UV 坐标系,UV 坐标系可以描述曲面上点的位置信息.通常用路径与U对应,而截面与V对应.曲面也可以看成由∞条曲线构成的,每一条曲线都有U、V这两个方向[14].这样,同样我们可以用一组U参数和V切向量的数据来表示曲线,即用U参数表示曲线的基本信息,V表示曲线某个位置的切向量参数,也是机器人工具坐标系x轴运动轨迹的方向.

SolidWorks本身提供了丰富的API接口函数可供开发者调用[15],通过实例化调用的对象接口,即可获取到模型的相关属性、事件和方法等.

对于平面曲线轨迹的提取,先是通过ICurve接口获取选取到的模型边缘曲线的起始点和终止点,再通过GetTessPts函数获取代表这条曲线细分的一组点即将曲线进行离散细分成点,并获得这些点的切向量作为机器人工具x轴的方向,再获得曲线上这些细分出来的点的U参数,这样就完成了平面曲线轨迹的提取.再将获取到的点用ISketchPoint和ISketchSegment进行重新草绘即可获得机器人的运动轨迹.最后通过正运动学解算出机器人的工具在该点的姿态即目标点的位置姿态,从而实现机器人提取的轨迹点的运动仿真.平面曲线轨迹的提取流程图如图8所示.

对于空间曲线轨迹的提取,本论文只针对规则曲面空间曲线轨迹的提取.对规则曲面空间曲线轨迹的提取,采用等参数线法[16]将曲面进行UV参数化,即将曲面分割成由若干个等距不规则平面堆叠而成即转化为提取若干个平面曲线轨迹的问题,通过循环迭代平面曲线轨迹提取的方法即可将规则空间曲线的轨迹提取出来.如图9所示为曲面UV参数化效果.

图8 平面曲线轨迹的提取流程图

图9 空间曲面 UV 参数化效果

离线轨迹点生成后,通过正运动学分析[17]即可解算出每个位置姿态轨迹点对应的机器人运动姿态,机器人每个轴的姿态角通过MFC的滑条控件在关节空间节里面实时显示出来,再通过OnTimer函数每隔一定时间遍历一次关节角更新一个轨迹点姿态,这样就可以实现机器人工具在工件模型上的运动仿真.机器人运动仿真效果如图10所示.

图10 机器人运动仿真效果

4.4 代码生成模块设计

代码生成模块负责设计并生成机器人控制代码文件.代码生成模块主要由RobProgram类负责,都是在命名空间GiaRoboticLib里实现的.生成的机器人控制代码包含工具坐标数据(ToolData类),工件坐标数据(ObjData 类),目标坐标数据(RobTarget类),控制指令数据(RobInstruct类)以及一些相应的数据名称和固定的输出格式.RobProgram类的成员关系如图11所示.

图11 RobProgram 类的成员关系

本设计中通过将生成的代码保存为机器人控制器识别的有效文件,如ABB机器人控制器所需的mod格式的有效文件直接供机器人程序下载使用.

4.5 机器人在线控制

机器人在线控制主要实现人机交互界面与Robot Communication SDK之间控制信息的交互通讯,其功能包括连接机器人本体的控制器和加载机器人代码.

5 实验验证分析

本系统以启动插件的形式调用.dll文件的方式来自动启动系统程序,即将DLL映射到进程的地址空间中[18],实现调用DLL中的可执行代码和数据模块的方法.SolidWorks每次运行时会自动装载 DLL 文件,因而操作简便,省去重复性的操作过程,进而减少开发的时间.

为了检验系统功能的可行性,采取在离线状态下利用ABB IRB4600机器人抛光打磨金属曲面的实验对系统设计功能分别进行验证分析.

本系统的功能是基于SolidWorks的二次开发技术进行研发设计的.首先,通过操作界面管理模块对机器人、工件和工具等模型进行相关配置参数并且导入工作站;接着,通过对不同曲率曲线的金属曲面轨迹的提取设计,并且将提取到轨迹点坐标通过代码生成模块生成机器人代码文件,如ABB机器人控制器支持的mod格式文件;最后,通过机器人在线控制模块将机器人代码下载到机器人本体的控制器里,机器人控制器再用相关指令控制机器人末端工具按照离线的轨迹运行.另外通过共享内存管理模块实时监控到机器人各个关节的关节角变化.

实验过程中利用打磨头沿着提取到的空间曲线离线轨迹在金属曲面进行打磨作业验证空间曲线离线轨迹提取设计的正确性.空间曲线离线轨迹的提取和运动仿真如图12所示.

图12 空间曲线离线轨迹的提取和运动仿真

空间曲线离线轨迹实际运行如图13所示.可以看到机器人实际运行中始终保持轴线垂直于曲面的法线N方向,与离线轨迹设计的轨迹点Z方向相符.

图13 空间曲线离线轨迹实际运行效果

另外在抛光打磨过程中,单单考虑离线轨迹的提取还不够,在保持恒力和恒定转速的情况下,对打磨头的选取也非常重要,图14列出了利用离线轨迹不同后数打磨头做了五组实验的打磨效果,后数从左到右分别为 80、180、800、2500、10000.

综上可得,打磨头的后数越大即打磨头的砂砾越细,可以打磨出更加精亮的效果,结合空间曲线离线的轨迹再配上适当的后数的打磨头,可以达到理想的抛光打磨效果.这样,操作人员就可以在减少手动示教繁琐操作和解决曲面复杂轨迹提取困难的同时,快速地进行相关的抛光打磨试验,提高生产和研究的速率,达到理想的效果.

图14 不同后数打磨头打磨效果

6 系统性能对比分析

与瑞士ABB公司自主研发的企业专用型Robot Studio离线编程系统相比,本系统具有与Robot Studio离线编程系统一些类似基本开发功能的同时,具有以下三点的性能优势:

(1)Robot Studio 是一款基于 RAPID 编程语言的离线编程系统,只能与ABB机器人配套使用;本系统可以直接通过获取机器人的DH参数兼容更多品牌的机器人,兼容更多编程语言的离线编程系统.

(2)Robot Studio 在三维造型方面功能薄弱[19],而本系统由于是在SolidWorks软件上进行的二次开发,具有强大的三维参数化建模功能.

(3)由于 Robot Studio 是 ABB 公司配套的软件,系统没有开放,用户难以做二次开发;本系统用户可以在此基础上进行相关的二次开发和升级,更适应中小型企业的用户需求.

7 结束语

通过在离线状态对不同曲率曲线的曲面轨迹点的提取和生成、自动生成机器人代码,并对机器人进行轨迹点的运动仿真,最后通过利用机器人在线控制程序实现了离线编程与机器人本体的通讯,完成了整一套离线编程系统.通过利用ABB IRB4600机器人对本系统设计的功能进行验证,实践证明,该系统稳定可靠,操作简便,可以省去繁琐的重复性操作,解决了手动示教编程提取曲面轨迹困难的问题,另外可以用于实际工业场合的应用开发,对国内中小型企业快速加工多种零件具有重要的意义.

1 宋鹏飞,和瑞林,苗金钟,等.基于 Solidworks 的工业机器人离线编程系统.制造业自动化,2013,35(9):1–4.

2 曹林攀.多层多道焊离线编程技术及应用研究[硕士学位论文].厦门:厦门理工学院,2016.

3 黄晓霞.用于焊接机器人离线编程系统的运动学分析及仿真[硕士学位论文].广州:华南理工大学,2015.

4 孙斌.六轴工业机器人的离线编程与仿真系统研究[硕士学位论文].太原:太原理工大学,2014.

5 高鹏.六自由度果蔬采摘机器人离线编程系统设计[硕士学位论文].杭州:浙江理工大学,2013.

6 岑洎涛.跨平台工业机器人离线编程系统研究与开发[硕士学位论文].广州:广东工业大学,2016.

7 王光道.串联机器人控制器离线编程系统设计与实现[硕士学位论文].北京:中国科学院大学,2016.

8 王洪雨.基于SolidWorks的工业机器人离线仿真系统分析.企业导报,2016,(13):190.

9 吴清龙.基于三维交互的发动机远程在线监测及分析技术研究[硕士学位论文].济南:山东大学,2015.

10 何西阳.基于SolidWorks的齿轮设计计算及三维建模造型系统的开发[硕士学位论文].青岛:青岛大学,2015.

11 章双全,刘敬波,员一泽,等.基于 SolidWorks 二次开发的风机塔架参数化设计.机械制造与自动化,2015,44(2):143–145.

12 魏先让,丁康,唐红涛.基于 Solidworks 二次开发的组合铣鼓轮两斜面夹具设计研究.山东工业技术,2015,(15):236–238.

13 薛美荣,林建邦,张世龙.基于 SolidWorks 二次开发的自动建模技术研究.科技创新与应用,2016,(17):48–49.

14 刘殿海.基于UG的不规则曲面运动轨迹生成研究[硕士学位论文].哈尔滨:哈尔滨工程大学,2012.

15 张彬.基于SolidWorks的旋风筒参数化设计二次开发.水泥,2016,(8):36–38.

16 杨宇航.基于砂带磨削工艺的航空发动机叶片数控加工自动编程方法研究[硕士学位论文].重庆:重庆大学,2015.

17 Craig JJ.机器人学导论.貟超,译.3 版.北京:机械工业出版社,2006.

18 朱英翔,陈燕,余启志.基于 SolidWorks 的焊件参数化自动建模研究.微型机与应用,2016,35(22):84–87,91.

19 王纯祥,程茁,陈杨.基于 Robotstudio 的弧焊机器人离线编程.重庆科技学院学报(自然科学版),2014,16(5):153–156.

Off-Line Programming and Motion Simulation of the Curved Surface Based on Secondary Development of SolidWorks

CAI Yi-Song,SUN Ke-Zheng,SU Ze-Rong,ZHOU Xue-Feng
(Robots and Automation Equipment Team,Guangdong Institute of Intelligent Manufacturing,Guangzhou 510070,China)

To tackle the problem that the extraction of the curved trajectory is difficult and the operation is complex in manual teaching,this paper uses the way that Visual Studio makes the secondary exploitation for the SolidWorks software to make the off-line programming of the curved surface of robot,and loads it automatically into SolidWorks in the form of DLL plug-in.By using UV parametric curved surface,the system realizes the rapid extraction of off-line trajectory and the generation of robot control code and finally implements the motion simulation of the robot with the model of the robot showed by DH parameter by means of traversing the joint angle.Practice has proven that the control code generated by the off-line programming can be directly downloaded to the robot controller which reaches the expected effect.Such a system is of great significance in the actual development and application of the industrial situations and domestic small and medium-sized enterprises for the rapid machining various parts.

off-line programming of the curved surface;UV parameterization;DH parameter;traverse the joint angle

蔡奕松,孙克争,苏泽荣,周雪峰.SolidWorks二次开发曲面离线编程及运动仿真.计算机系统应用,2017,26(9):75–81.http://www.c-sa.org.cn/1003-3254/5937.html

①基金项后:国家自然科学基金(51405091);广东省重大专项(2014B090919001);广东省应用专项(2015B090922010);广州市珠江新星专项(201610010054)

2016-12-15;采用时间:2017-01-16

猜你喜欢

离线二次开发曲面
基于卷积神经网络的离线笔迹鉴别系统
异步电机离线参数辨识方法
新版Windows 10补丁离线安装更简单
浅谈CAD软件二次开发的方法及工具
参数方程曲面积分的计算
参数方程曲面积分的计算
第二型曲面积分的中值定理
关于第二类曲面积分的几个阐述
例谈课本习题的“二次开发”
ANSYS Workbench二次开发在汽车稳定杆CAE分析中的应用