基于MATLAB的机器人涂胶离线仿真与编程研究
2023-02-03李琰刘欢庆高建设苏宇锋
李琰,刘欢庆,高建设,苏宇锋
(郑州大学机械与动力工程学院,河南郑州 450000)
0 前言
在电芯涂胶工作单元中需要用到6R机器人,而实现机器人任务作业必然离不开机器人的编程技术,示教是工业机器人作业任务的首要前提。工业机器人的示教技术主要包括:在线示教和离线示教两种工作方式[1]。目前,工业机器人的作业任务程序主要靠在线示教编程来实现。在线示教需要机器人停机编程,影响生产,而且依靠操作员目视采点精度不高,操作人员在恶劣环境进行在线编程时,其人身安全得不到保证[2-3]。机器人的离线示教方式解决了面对复杂任务编程时传统的在线示教效率低、精度差和安全性等问题。因此离线示教在工业生产过程中得到了广泛的应用[4]。离线示教编程是通过建立机器人和周围环境的三维模型,并对该模型进行控制和变换,使机器人模型按照相应的作业轨迹进行运动并生成作业程序控制物理机器人运动[5],可以有效规避手动在线示教的上述缺点。基于此,国内外对于机器人离线编程都进行了一定研究,如日本的安川公司研发的离线编程软件MotoSimEG,可以在虚拟空间中模拟机器人作业环境,进行作业任务仿真并生成程序,然后传输到机器人控制柜中[6]。德国库卡公司研发的离线编程软件KUKASim也具有相似功能[7]。但这些软件不开源,只能用于所属公司的机器人。国内有上海交通大学机器人研究所的曾建军、杨汝清等开发的排爆机器人离线编程系统,可搭建机器人和爆炸物的虚拟环境,来增强操作者感知排爆物的能力[8];沈阳航空航天大学的屈力刚、李见等人开发的基于CATIA的机器人离线编程系统,可以快速方便地进行机器人离线作业,并按照预先规划的轨迹快速、高精度地完成飞机进气道喷涂[9]。
机器人离线编程系统具有广阔的应用前景,且国内在该技术上大多仍处于实验室阶段,因此现阶段的研究具有很大应用意义[10]。为了实现高质量、高效率自动化生产,本文作者以六自由度的KUKA KR16机器人涂胶电芯为研究实例,研究了6R工业机器人的多种任务规划方式,还将离线示教编程与自动编程进行了结合。离线自动编程不仅使涂胶作业精度和加工质量得以提高,而且还提高了生产效率。
1 虚拟工作环境建模
文中工业机器人的三维模型是通过SolidWorks三维建模软件构建的。为实现整个机器人的可视化模型运动,首先将机器人的关节模型保存为STL的数据文件,利用MATLAB中的read STL算法读取机器人关节模型的数据文件,先读取基座的数据文件,显示结果如图1中的{WORLD}所示,接着读取连杆1,此时{WORLD}坐标系与{1}坐标系重合,因此需要对连杆1平移和旋转,将连杆1调整为图中所示。按照连杆1可视化的流程,从而能够实现整个机器人的可视化。
图1 工业6R机器人虚拟可视化流程Fig.1 Virtual visualization process for industrial 6R robot
实现了虚拟机器人场景模型的建立以后,还需要在MATLAB软件的框架下实现机器人的运动控制,以便实现对机器人相应的操作和设置。
文中的机器人运动模型是根据D-H参数法建立,表1为包含关节旋转范围的D-H参数[11]。
表1 KR16-2 D-H参数Tab.1 KR16-2 D-H parameters
机器人的正运动由表1中的αi、ai、θi、di经过齐次坐标变换可得末端工具坐标系的位姿,末端执行器相对于基坐标系的总变换为
0T6=0T1·1T2·2T3·3T4·4T5·5T6=
(1)
机器人的正解是根据机器人关节角度计算工具的位姿,而机器人运动学逆解则是根据工具的位姿计算机器人的关节角度。接下来分析机器人解析式求解的过程。
(2)
由等式两边二行四列元素相等得-pxsinθ1+pycosθ1=0,变换得tanθ1=py/px→θ1=arctan(py/px)。同理经过矩阵变换可求得其他角度。最终确定θ1~θ6的解析表达式。解的排列组合共有8组,而这组解中一定有一个各关节转动角度最小的解,即一个“最短行程”的最优解。KR16机器人有个大连杆,附带个小连杆,在确定“最短行程”解时使用加权系数,使选择侧重于移动小连杆而不是大连杆。在存在障碍的情况下,为了避免碰撞,这时可以选择一个次优解[12]。
2 离线手动编程和自动编程的实现
2.1 机器人控制指令解析和创建
通过在虚拟场景下操作虚拟机器人生成虚拟作业程序,再对虚拟作业程序进行解析,从而控制虚拟空间中的机器人进行作业任务。当然,结合物理机器人运动控制器而编写的虚拟指令也能够有效控制物理机器人进行作业任务运动。
所研究的工业机器人采用的编程语言是库卡机器人编程语言(KUKA Robot Language,KRL),机器人的控制指令主要包括4大部分:程序的定义、程序的初始化、运动控制指令和结束标记符。
执行部分主要是运动控制指令。机器人的运动控制指令是由SRC 格式的程序文件和 DAT格式的数据文件共同组成。SRC程序文件中包括机器人控制指令、变量的使用、函数的调用等程序语句,SRC文件中所使用的变量定义和赋值都是在DAT数据文件中完成的。DAT数据部分是根据虚拟工作空间中机器人各关节的角度,由前述机器人运动学方程求解机器人末端执行器的位姿数据,然后由此替换程序中各点处的参数即可。
机器人指令解析和生成流程如图2所示。
图2 机器人指令解析和生成流程Fig.2 Robot instruction parsing and generation process
2.2 离线示教编程的任务规划
通过开发六自由度机器人的离线示教界面,使用户通过示教界面实现对KUKA KR16型工业机器人的运动控制,有效提高工业机器人的编程效率,保证示教过程中的安全性。为了使得示教界面具有良好的交互性和实时性,采用了MATLAB GUI建立了机器人虚拟场景和编程界面。所开发的示教界面如图3所示。
图3 离线示教界面Fig.3 Offline teaching interface
离线示教界面具有物理示教器的基本功能,整个示教界面主要由关节空间操作面板、笛卡尔空间操作面板、显示面板和程序面板组成。关节空间面板和笛卡尔空间面板主要负责对工业机器人示教运动控制,该面板是实现手动离线编程的重要前提。显示面板用来显示机器人当前状态下的位姿数据,该数据采用了两个表达方式:齐次变换矩阵和四元数。程序面板主要用来实现机器人控制程序的编辑,将控制程序保存为物理环境中机器人的可执行文件。除了机器人离线示教界面外,还需要整个机器人离线示教的底层核心算法,运动控制算法包括虚拟场景的显示、虚拟场景中三维模型的运动控制、轨迹规划插补算法以及示教程序的编译解析等。其中轨迹规划和运动控制是进行机器人作业任务的基础,程序编译器的构造为运行可执行程序奠定了基础[13]。
涂胶机器人手动离线示教的过程为:首先,拖动滑块将胶枪拖到作业任务点,在程序面板中编辑作业程序;然后,调用运动学正逆解、路径规划算法将位姿信息转化为各个关节角度信息,从而能够将作业程序生成为可执行程序。最终离线示教的过程如图4所示。
2.3 离线自动编程的任务规划
在离线示教的作业任务规划中要从二维平面采集三维空间中的点,由于视角的原因,有一些点位信息采集不准,为此本文作者研究基于离线自动编程的任务规划。
首先在电芯表面建立工件坐标系,如图5所示。然后,求取参考坐标系相对于基坐标系的变换矩阵。不妨设参考坐标系{p}绕X轴的转动角度为θ,此时坐标系{p}相对于基坐标系的姿态为
(3)
接着调节虚拟示教界面上的滑块,使得末端执行器与参考坐标系{p}重合,读取此时虚拟示教界面上机器人的位置坐标(xp,yp,zp), 最后,在参考坐标系{p}下,对电芯的表面规划涂胶轨迹。假设电芯表面的上某一任务点坐标为p1(xp1,yp1,zp1),则这一任务点在基坐标系下的位置坐标为
(4)
建立好参考坐标系,然后设定电芯的尺寸和涂胶轨迹的参数,可以自动生成前述工业机器人运动控制指令格式的可执行程序,即可控制KR16机器人按预设轨迹完成作业。
图5 参考坐标系示意Fig.5 Diagram of the reference coordinate system
3 虚拟程序对机器人的控制
离线仿真的最终目的是为了控制真实物理环境中的机器人,而控制程序的创建是实现机器人离线仿真系统应用于作业任务中的关键。控制程序的创建使虚拟场景中的机器人与物理场景中的机器人能够有效地联系在一起。
采用KUKA KR16六自由度工业机器人,在机器人末端法兰盘上安装胶枪。
根据涂胶任务,预先设计相应的编程轨迹,通过离线示教和自动编程相结合的方式生成虚拟指令程序。此时的编程的原则为:对于要求精度不高的任务点使用离线示教编程,精度高的任务点使用自动编程,既保证了编程速度也提高了加工作业精度。仿真过程如图6所示。
图6 仿真画面
将虚拟指令下载达到机器人控制柜中,运行程序。如图7所示,涂胶机器人运行至作业目标点,此时 KUKA 机器人的继电器得电,胶泵阀门打开,胶枪开始出胶。当机器人快速完成电芯的涂胶任务时,关闭胶泵阀门,涂胶机器人快速回到“HOME” 位置,可以看出,作业任务轨迹为“回”字形状。
图7 机器人涂胶流程
4 结束语
以电芯模组涂胶系统为研究对象实现了虚实相结合的6R 机器人作业任务开发。首先,对6R机器人进行了建模和运动分析;然后对KUKA机器人指令进行了解析,并介绍了离线示教编程、自动编程;最后由离线仿真系统生成相应的控制程序,使机器人按照相应的轨迹运动。避免了在线手动示教必须亲临现场、占用机器人工时和精度不稳定的缺点,提高了生产效率,而且采用离线手动编程和自动编程相结合的方法可以节约编程时间,提高编程精度。