基于UG/Open的机器人复杂曲线离线编程系统设计
2012-07-03赵凤申
赵凤申
(南通航运职业技术学院 机电系,南通 226010)
0 引言
工业机器人以其高效、焊接质量稳定等特点,在工业生产中代替人力完成焊接、搬运、喷涂等繁重、重复性劳动工作。为提高作业效率,多采用在线示教编程,该方式主要针对圆弧、直线等简单作业轨迹,对复杂曲线(如相贯线等)只能通过人为设定多个控制点实现运动轨迹的近似拟合,其实际运动轨迹与理论曲线的重合度受控制点数量和插补方式的影响,而较多的控制点则需要较多的设备调整和程序录入时间,造成实际焊接效率低下,且焊接质量受到操作人员主观因素、技术水平的影响。为解决在线示教对复杂曲线等作业任务适用性一般的问题,需要借助离线编程方法,即由计算机完成工件、机器人的三维模型构建,并采用适当的算法完成路径规划并生成作业文件,传送至计算机执行,提高作业质量和效率。
本文在UG中利用UG/Open二次开发功能,建立安川工业机器人和工件的三维模型,通过在UG中拾取关键点并获取精确坐标,计算出曲线的解析式,然后经由通讯协议驱动机器人连续运转,完成焊接过程。
1 UG中虚拟模型的建立及运动实现
UG软件功能强大,能够接受多种格式的三维工件模型,并提供了高效的UG/Open二次开发接口,因而对于工件与机器人模型建立和虚拟仿真十分方便。
UG/Open有外部和内部两种运行模式,内部模式在程序被加载到UG系统分配内存后,作为子进程长驻内存,并可以通过UG的交互界面获取和创建模型,通过图形窗口查看运行结果,外部模式则为一个独立的可执行程序,多用于数据管理而非几何操控。本设计采用内部模式,在Visual C++中利用向导建立输出为DLL的工程文件,并修改入口函数名为ufusr()作为入口函数[1]。
1.1 用户界面的建立
用户界面采用可视化工具UIStyler模块,UIStyler提供了强大的UG风格界面设计,系统可以自动生成与对话框对应的C语言模板文件,方便用户调用,实现UG与用户程序的无缝衔接。
通过UG的用户界面编辑器进入UIStyle模块,点击添加各种控件图标并修改其位置参数即可完成用户界面的构建。通过设置控件的标识符并在控件属性对话框中设置回调函数,即可实现在控件的各种事件响应。保存该用户界面后,系统自动生成对话框、模板和头文件(.dlg、.c和.h文件),使用UF_STYLER_create_dialog()函数完成对话框调用,并修改、补充.c文件中的对应函数,实现控件事件响应。
1.2 机器人模型装配
在进行机器人运动仿真前,必须进行实体模型的装配,在装配模式下,由于机器人逆向运动学的多解性等原因,实体模型只能作UG 的Motion Simulation动力学分析, 无法实现给定路线运动仿真,造成视觉效果偏差。因此,本文按照装配体的形式用“实体移动法”将各个部件装配在一起组成一个整体[2],通过程序进行坐标变换改变每个关节连杆的位姿,实现当前关节及其后续关联关节的旋转,最终形成一个整体上视觉效果和实体机器相似的虚拟机器人,实现二者的同步运转。
首先使用UF_PART_new()生成装配文件并获得该装配文件的标识(tag),然后利用UF_ASSEM_add_part_to_assembly()函数将各部件添加到装配体中并获得各部件实例(Occurrence),由于部件添加时是以各自部件的工作坐标系为基准,为保持各关节的相互关系有两种方式:一是若各个关节旋转中心与其工作坐标系坐标原点重合,在使用前述函数添加部件时,设定形参origin[3]和csys_matrix[6]数值改变部件在装配文件的初始位置和姿态;二是在UG中建立部件文件时,以实体机器人的基座坐标系作为UG中各部件的工作坐标系,各部件模型与工作坐标系的相互位置关系依据其在实体机器人中与基座坐标系的关系而定,只要添加各部件即自动“装配”成了工业机器人。本文采用第二种方式,实际装配效果如图1所示。
图1 “装配”出的虚拟机器人
机器人各关节及其后续关节的运动采用UF_ASSEM_reposition_part_occurrence()函数并引用该部件的实例完成,其参数xform[4][4]即为部件绕着绕旋转中心点各个轴旋转特定角度对应的变换矩阵。由于旋转中心和旋转轴线方向受前级各关节运动的影响,因而必须计算出前级各关节旋转后新的旋转中心和轴线方向。根据机器人正向运动学和UG/Open的API函数,按照如下流程实现矩阵生成和关节运动:根据机器人DH参数、旋转中心和旋转角度,由UF_MTX4_rotation()生成旋转矩阵,然后利用UF_MTX4_multiply()将该旋转矩阵与平移矩阵相乘,得到单关节最终变换矩阵,然后将该变换矩阵与前级关节最终变换矩阵利用UF_MTX4_multiply()函数相乘,得出该关节的最终变换矩阵,以供后级关节运动变换使用。由于某关节的最终变换矩阵影响了次级所有关节的运动,因而需要在函数UF_ASSEM_reposition_part_occurrence()中依次引用各次级关节的实例,完成关节位姿变换。
对于复杂曲线,本设计中采取提取若干关键点坐标,根据曲线解算出未知几何参数,进而构建曲线方程。其中关键点坐标的获取采用uc1616()函数,在弹出点构造器后选取关键点,其最后一个参数的返回值即为该点在工作坐标系的坐标值。
2 实体机器人的通讯控制与运动实现
2.1 机器人通讯协议及控制流程
实体机器人型号为安川SSF2000,该机器人主控制器与PC机遵循MotoCom32协议,可通过以太网或RS485总线进行通讯,用户只需要调用其动态连接库(DLL)文件中的相应函数即可与主控制器通讯,实现机器人的状态读取和命令发送。
在示教盒切换至远程(REMOTE)模式下,PC机依次使用BscOpen()、BscSetEther()建立通讯文件、设定网络参数,通过函数BscConnect()完成与主控制器的连接,由BscServoOn()、BscServoOf()完成伺服上电、断电操作,由BscIsLoc()读取机器人关节码盘数值,使用BscPMovj()指定机器人以关节运动方式运动到特定位置,或使用BscImov()使机器人在直角坐标系下以增量方式运动。通过BscWriteIO()函数完成对主控制器的IO操作,利用BscSelectJob()和BscStartJob()调用焊接文件实现起弧、收弧以及焊接参数设定[3]。
2.2 复杂曲线的模型构建
由于复杂曲线参数较多,因而需要根据其未知参数数量指定若干关键点,通过使用uc1616()函数,获取特征点的坐标值,作为已知量,带入曲线方程,进而解出曲线的未知数。本文以工程中常见的相贯线为例进行说明,一个典型的正交相贯线如图2所示,其中水平圆柱体直径为R,垂直圆柱体直径为r,两圆柱体轴线相交于点O(x0,y0,z0),则在图示坐标系下,相贯线的方程为:
图2 相贯线示意图
因而,只需要在UG中获得其交点O的坐标值以及半径R、r,就可以解算出该相贯线的曲线方程。采用UG Open中的uc1616()函数产生点构造器并拾取交点,获得轴线交点O的坐标值。在选定圆柱体后,由函数UF_MODL_ask_cylinder_parms()获取其直径。
2.3 插补方式的选择及偏差控制
由于机器人接受的基本运动模式指令只有点位、直线和圆弧,这三种模式都以位置坐标作为路径规划参考,因而必须采用一定的插补方式完成相贯线路径拟合。点位模式下两点之间的轨迹按照厂家预设的优化方式实现,用户无法选择,圆弧运动指令则需要较多的点才能构成圆形轨迹。为提高程序效率,本设计采用直线插补模式,即相贯线的一段圆弧之间用直线连接,因而必然产生一定的路径偏差,且该偏差与圆弧曲率半径相关,为防止偏差过大,需要根据相贯线曲率半径调节拟合圆弧端点位置,曲率半径与圆心角误差关系如图3所示,以轨迹误差为0.1为例,则对应的圆心角为:
以R=100为例,α为5.125°,整个圆周只需要将划分为约71次即可,具有较高的执行效率。以α角作为式(1)中参量t的增量值,求出各关键点的坐标。
图3 圆弧曲率半径与插补误差关系
图4 相贯线曲率半径随r/R变化图
针对实际相贯线,需要计算出其最小曲率半径值。按照文献[4]所述方法计算曲率半径解析式,由于其极值符号解较为复杂,实用性不强。本设计中,依据不同r/R比值,绘制出曲率半径图如图4所示。图中R=100,沿着图中箭头①②方向r/R的比值依次从0.10~0.95。由图4可见,根据r/R比值不同,最小曲率半径出现的位置和宽度各不相同,实际使用中只要根据r/R的比值即可估算出最小曲率半径出现的位置和宽度,在该段范围内,使用最小曲率半径值代入(2)式计算出角度增量值α。
3 实际运行效果
本实验室机器人未配备良好的工装夹具,机器人本体与工件间的相对坐标待定,而规模化、标准化设计的生产线则可避免此类问题。为克服此问题对实验效果造成的影响,在将经过线切割的相贯线接口管子放置于V型架后,调整实体机器人末端至管子定位点(本设计为切割时人为切割的中点)并获取该点坐标,在UG软件中按照实际工件位置调整虚拟工件模型,然后利用前文所述方式拾取模型上的相贯线关键点,进而生成相贯线模型,并驱动虚拟机器人和实体机器人同步运转。
图5为实际运行截图,可以看出二者姿态是一致的。图6为机器人实际焊接的焊缝,可见其轨迹重合度较高,焊缝质量较好,证实了前文方案的有效性,其结束点的焊瘤是由于收弧时人为设定的停留时间过长而造成的,可以避免。
4 结论
本文开发的基于UG/Open的离线编程系统,通过对实体机器人通讯控制,避免了复杂曲线在线示教的低效率问题,充分利用了虚拟仿真和实体结合的手段,实现了机器人的远程虚拟示教,实际运动路径与理论路径重合度较好,初步解决了复杂曲线的路径规划实现问题。
图5 虚拟、实体机器人的同步运动
图6 实际焊缝图
当然,系统还有需要进一步完善之处,如焊接参数、焊枪姿态调整和优化、避免外置焊枪与工件碰撞、焊枪与机器人自身干涉、“横焊”“立焊”策略等问题都需要进一步研究,以提高系统的适用性。
[1] 侯永涛,丁向阳.UG/Open二次开发与实例精解[M].北京:化学工业出版社,2007.
[2] 孔凡斌,姜培刚,等.基于UG Open C的FANUC M-16iB/20工业机器人动态仿真[J].计算机应用于软件,2008,25(6):169-170.
[3] MOTOCOM32 OPERATION MANUAL [Z].Japan:Yaskawa Electric Corporation,2008.
[4] 张学东.空间曲线的曲率计算方法[J].塔里木农垦大学学报,2002,14(2):39.