基于Solidworks的工业机器人离线编程系统

2013-07-03 08:59宋鹏飞和瑞林苗金钟单东日
制造业自动化 2013年9期
关键词:二次开发离线对话框

宋鹏飞,和瑞林,苗金钟,单东日

(1. 山东轻工业学院 机械与汽车工程学院,济南 250000;2. 济南奥图自动化工程有限公司,济南 250000)

0 引言

工业自动化水平的高低在很大程度上受工业机器人发展水平的制约。随着现今工业领域产品的小批量多样化以及专业化趋势,使得工业机器人应用范围持续扩大的同时工作复杂程度也不断增加。工业机器人是一个可编程的机械装置,其功能的灵活性和智能性很大程度取决于机器人的编程能力[1]。

1 机器人离线编程发展现状

目前,机器人编程主要有在线示教编程和离线编程两种方式,在线示教编程为绝大多数工业机器人所采用。在线示教编程要求机器人执行新的作业任务时需停机示教,造成现场生产线停工的同时还可能使编程人员身处危险的现场坏境中。离线编程方式可以实现在远离工作现场的情况下完成机器人编程作业,实现运动仿真等一系列功能,大幅提高编程工作效率。国内外研究人员在离线编程方面做了大量研究。其中Kuka,ABB,FANUC等知名专业机器人生产厂家都有自己的一套成熟的仿真软件,可离线编程[2]。奇瑞公司机器人项目组也在离线编程方面取得一定进展,可对机器人生产过程仿真。陈焕明等完成了基于VC++的弧焊机器人离线编程系统的设计[3],可读出任务曲线作业点并生成程序。J.Swider等完成了基于DXF文件的机器人离线编程系统,实现了工业机器人对二维图形的离线编程仿真功能[4]。绝大多数的离线编程模式都不能将可视化三维仿真环境与精确地编程方式相结合。随着三维绘图软件功能日趋强大,完全可以胜任创建工业机器人及其工作环境模型的任务,在三维软件环境下完成机器人的离线编程仿真将是实现可视化离线编程简捷有效的途径。

本文在Solidworks环境下对工业机器人及其工作环境进行三维实体建模,利用Solidworks提供的VC++二次开发向导Swizard.swx,完成机器人离线编程系统的开发。

2 离线编程系统的工作模式及组成

完成机器人离线编程作业包括三个方面的内容:

1)三维建模。在Solidworks环境下建立机器人及其工作环境三维仿真模型。

2)任务点选取。根据实际任务轨迹要求选取机器人任务点(可由鼠标拖动机器人J6轴到达任务点)。

3)调用离线编程系统。由菜单栏调用此系统,通过位姿计算模块及逆运动学计算模块完成

任务点的位姿计算及各轴输入角度的计算。4)生成作业程序及离线仿真。

图1 离线编程系统的工作流程及组成

3 工业机器人及其工作环境建模

FUNAC机器人在国内工业自动化领域有着广泛的应用,本文以自动化生产线中物料搬运常用的FANUCM-900iA/350型机器人为研究对象,建立机器人及其工作环境联线控制模型,以此为基础进行离线编程系统的设计研发。

3.1 机器人三维模型的绘制及装配

通过对机器人结构及技术参数的研究,绘制机器人零部件模型,按照既定装配关系组成装配体。三维建模时,为保证离线编程系统的运行效率,在保留机器人所有关键特征及尺寸的前提下,尽量简化模型结构。如图2所示:将J1轴J2轴复杂的曲面以简单的平面模型代替。将五轴回转机构简化成“C”字形结构等。图2中前者为简化前的模型,后者为简化后的模型。

图2 机器人模型简化前后对比

完成机器人各零件的装配后,对各相对运动关节正确定义运动角属性,即确定“配合”中各转动副的转动范围。保证各关节在允许的范围内可自由运动。

3.2 机器人与工作坏境关系的建立

离线编程结果精度的高低,很大程度上取决于机器人及其工作环境的正确建模及精确的工作位置关系。本系统中,首先确认机器人与工作环境的位置关系,即机器人底座中心(基座坐标系原点O0)与工作中心(板料中心)的距离关系。其次规划机器人的工作任务,确定机器人在两工位间经过的关键位置,即准确确定机器人的任务点。建立的机器人工作环境及工作状态如图3所示。机器人将板料从右侧工作台移动到左侧,图中所示位置为两工作台之间一任务点。与初始位置相比第六轴关节坐标系O6相对于基座坐标系O0绕X0轴旋转180度,其余轴相对于基座坐标系O0均为平行移动。

图3 机器人离线编程系统工作状态图

4 Solidworks环境下的离线编程模块

Solidworks具有超强建模功能和方便的二次开发接口,通过OLE/COM技术提供强大的二次开发接口API,这些接口包含数百个函数,为二次开发提供强有力的支持。我们可以用VB,Visual C++和其他支持OLE的开发语言接口调用其API函数[5]。本文利用Visual C++通过对对象属性的设置和方法的调用对Solidworks进行二次开发,将开发的模块以DLL插件文件的形式实现与Solidworks无缝衔接。

4.1 离线编程系统对话框的建立及功能

在VC++中新建工作空间,选择工程向导SolidWorks Add-in Appwizard,新建离线仿真工程。

离线编程系统以插件的形式在菜单栏中被调用,点击“开始计算”子菜单,即可显示所设计的离线编程系统对话框。如图4所示。

图4 离线编程系统的位置与调用

本离线编程对话框可完成位姿计算、逆运动学计算以及对作业生成模块、离线仿真模块的调用。

4.2 机器人任务点位姿计算模块

位姿计算模块实现的关键在于对solidworks二次开发函数GetSelectionPoint及函数IEnumEagesOriented的调用。以获得点的位置坐标为例,通过调用函数GetSelectionPoint,得到当前所选目标点在模型空间坐标系中的三维坐标值。值得注意的是在定义对话框的时候一定要声明为非模式对话框,通过调用“Cdialog::Create”函数来启动对话框。以保证不关闭主程序的情况下,对目标点的连续选取。在定义pSelectMgr指针及retval[3]双精度数组的基础上,通过调用Selectpoint函数获得任务,并将任务点的坐标以数组的形式输出。部分程序代码如下:

void MenuItemCB(void)

{

LPMODELDOC pModelDoc=NULL;

//定义pModelDoc指针

LPSELECTIONMGR pSelectMgr=NULL;

//定义pSelectMgr指针

double retval[3];//双精度数组

long nSelCount=0;//选择数

TheApplication->GetSWApp()->get_IActiveDoc(&pModelDoc);

//获得pModelDoc指针

if(!pModelDoc) return;

//如果没获得pModelDoc指针,则返回。

pSelectMgr->Get

SelectedObjectCount(&nSelCount);

if(nSelCount!=0){

pSelectMgr->IGetSelectionPoint(1,retval);//获得所选点

}

string.Format(_T("Selected

point(%.4f,%.4f,%.4f)"),

retval[0],retval[1],retval[2]);

//输出所选点的坐标

利用string.Format(_T("%.4f"),retval[i])函数将上述得到的字符串数组以单个元素的形式输出,同时利用UpdateData(FALSE)函数将上述结果同步输出到对话框。即可完成目标点位置的读取。

4.3 机器人逆运动学模块

首先对机器人进行正运动学分析,建立如图5所示的FANUCM-900iA/350型机器人的D-H坐标系[6]。根据机器人结构参数(如表1所示),求出机器人各坐标系间的齐次变换矩阵,得到机器人正运动学方程。确定目标点位姿坐标后,得到12个常系数非线性方程。对于正交旋转矩阵P及向量u,v,利用变换矩阵中旋转子矩阵的正交特型及矢量运算矢量运算,得到含有不同未知变量的4个常系数非线性方程,最终得到机器人逆运算的封闭解[7]。按此方法生成机器人逆运算模块。

图5 机器人连杆D-H坐标

表1 FANUC M-900iA/350机器人结构参数表

4.4 运动仿真模块

Solidworks提供的运动仿真模块完全可胜任机器人的运动仿真任务。以机器人逆运算模块得到的各关节转角角度做为输入值,点击“开始仿真”按钮,直接进入Solidworks自带的Cosmosmotion运动仿真模块,根据所建机器人运行环境实际情况设置约束、速度、力等参数,实现运动仿真。

4.5 作业生成模块

利用VC++对话框Edit控件功能,在点击“生成作业”按钮后弹出子对话框显示作业文件。利用CEdit.SetSel(start,end)函数设置要插入文本的位置,用CEdit.Replace(string)函数向该位置插入字符串string[8],将作业点位置和姿态坐标以数组的形式(以备现场机器人位姿的手动快速定位)赋予任务点P[i]。“位姿计算”模块每计算一个作业点点击“生成作业”按钮手动完成i++。

生成的作业代码如下:

J P[2] 100% FINE !

P[2]=-46.58,212.46,99.55,90,0,0

其中“!”为FANUC程序注释符。此作业文件符合FANUC机器人程序格式。

5 实验验证

Roboguide是由FANUC研发的机器人仿真软件,功能强大,可靠性强。在Roboguide中建立与本研究环境相同的工作空间,并将本离线编程系统生成的作业程序导入Roboguide中,运行程序,得出仿真结果如图6所示。

由上述仿真结果可知,与Solidworks环境下运行的离线仿真结果对比,J6轴位置坐标Z向坐标值相差较大,其余值均在误差范围之内。这是由于Fanuc将底座中心线与过J1、J2轴轴线,且与底座平行的面的交点作为机器人坐标原点,而Solidworks是将底座中心点作为坐标原点,两坐标原点不重合导致两输出结果相差J1轴的高度,该值大小约为640mm。

图6 Roboguide环境下仿真结果

6 结束语

本文利用SolidworksAPI二次开发函数及VC++编程语言,在Solidworks环境下实现了工业机器人离线编程仿真系统的设计。本系统实现了工业机器人位姿坐标的精确计算,机器人逆运算及作业程序自动生成三大功能的系统集成,并对计算结果进行了运动仿真,通过与FANUC的Roboguide仿真软件仿真结果比较证明:本离线编程系统正确率,可靠性均可以达到到实际生产要求。为今后实现功能更全面的离线编程仿真系统打下良好的基础,为我国工业自动化水平的进一步提高提供支持和帮助。

[1] 郑荣.机器人离线编程系统设计与研究[J].世界制造技术与装备市场,2010,(5):90-92.

[2] 曹金学.工业点焊机器人离线编程软件的国产化开发及应用[J].计算机应用与软件,2011,28(12):99-100.

[3] 陈焕明,熊震宇.基于VC++的弧焊机器人离线编程系统设计[J].电焊机,2009,39(1):20-23.

[4] J.Swider,K.Foit,G.Wszolek,D.Mastrowski. The system for simulation and off-line, remote programming of the Mitsubishi Movemaster RV-M1 robot[J].Journal,2007,30(2):7-13.

[5] 曹岩,方舟.Solidworks开发篇[M].化学工业出版社,2010.

[6] 孟庆鑫,王晓东.机器人技术基础[M].哈尔滨工业大学,2006.

[7] 程永伦,朱世强,刘松国.基于旋转子矩阵正交的6R机器人运动学逆解研究[J].机器人ROBOT,2008,30(2):160-164.

[8] 陈焕明,胡中华,熊震宇,江淑园.MOTOMAN-UP系列机器人离线编程系统[J].机床与液压,2007,35(9):201-203,207.

猜你喜欢
二次开发离线对话框
异步电机离线参数辨识方法
浅谈ATC离线基础数据的准备
正常恢复虚拟机
西门子Operate高级编程的旋转坐标系二次开发
浅谈Mastercam后处理器的二次开发
FTGS轨道电路离线测试平台开发
Bootlace Worms’Secret etc.
What Is Beauty?
离线富集-HPLC法同时测定氨咖黄敏胶囊中5种合成色素
西门子Easy Screen对倒棱机床界面二次开发