基于Plant Simulation和MATLAB的六轴机器人联合仿真运动优化研究

2021-08-19 03:51邰思铭王红平张乂文
机械工程师 2021年8期
关键词:调用表格姿态

邰思铭,王红平,张乂文

(长春理工大学 机电工程学院,长春 130022)

0 引言

Plant Simulation(以下简称为“Plant”)是一款面向对象、图形式集成的离散型生产系统建模仿真软件,由德国西门子公司负责开发,主要应用于生产线的模型搭构及分析研究。

目前针对Plant仿真软件大多文献都致力于解决生产线平衡、生产系统布局、作业排序与调度、物料配送等相关问题[1-4],且其中大部分仿真项目都是基于二维模型来进行设计和实验的,即使涉及到三维仿真也只通过软件自带的对象库中的模型来进行转换,目前还没有针对Plant中三维设备仿真进行精细化操作的相关文献研究。这就造成了两点缺陷:1)虽然Plant主要以工厂仿真的数据分析为主,但自定义模型导入和精确的模型控制更能贴合实际产线的运转,能够给予工厂搭建更多的实际性参考意义;2)由于Plant本身的算法封闭不予以用户展示,无法针对内置算法进行参考分析来实现三维模型的精确调控,这就造成实际设备模型在导入后的驱动过程中无法保证平稳运行且极易产生干涉现象,使其整体展示性并不形象直观,不能够搭建更为真实的“数字孪生工厂”。

本文针对现有三维仿真的不足,以其中结构较为复杂的六轴机器人三维模型作为研究对象,针对此机器人在复杂环境中无法有效避障及平稳运行的问题提出了一种新的研究方法及解决思路,从实际机器人模型设备的导入到精细化建模及运动控制都做了相应的分析及仿真实现。

1 机器人建模及优化思路

直至最新版本,Plant中工具箱中自带的原始机器人模型仍为四轴机器人。虽可替换官方自带的3种六轴机器人模型的文件,但仍非产线中的实际设备,且由于不可控的原因,以机器人的取件置件操作为例,针对每个物料的拾取点,实际机器人都存在多组逆解所形成的多组姿态进行抓取,然而软件默认只会给予一种姿态形式;在机器人取件到置件的运动过程中,运动路径的形式也是固定的,无法对机器人各个关节加以调控来进行优化,极容易导致干涉现象的发生,原始机器人也无法在量程范围内实现精确抓取,甚至容易出现隔空抓取的操作,与实际的生产线的设备运动相差甚远。

针对仿真中机器人而言,一般有以下2种产生干涉的情况:一是机器人在取置件时由于自身结构或关节角选取问题自身姿态同上下料的设备产生干涉;二是机器人在运动过程中由于路径的优化问题同周围设备产生碰撞,具体干涉情况以图1某区域为例。

图1 原始机器人运动时的干涉现象

针对以上问题,本文以实际产线处的六轴机器人模型为例,通过逆解运算达成机器人多种取置件姿态并取其中一组最优的关节角解实现最短路径驱动,针对运动过程易于产生干涉的问题,通过对干涉现象进行分析并以内置的Simtalk语言编程的方式来对各关节进行运动角度及运动顺序调整,保证机器人的平稳运行及避障的效果,优化的流程步骤为:1)针对此六轴机器人进行运动学建模及逆解运算;2)通过Matlab对解析式编程及ActiveX接口完成数据交互;3)将实际产线的机器人模型导入Plant中进行建模;4)通过Simtalk语言编程实现运动控制及路径优化;5)驱动自定义导入的机器人实现避障等操作。

2 六轴机器人正逆运动学建模

本文以生产线的某区域处的六轴机器人为研究对象,此机器人实际型号为德国库卡机器人KR210-R3100-ULTRA型,是六轴均为旋转关节的串联机器人,针对此机器人进行D-H运动学建模。

2.1 创建D-H坐标系及确定D-H参数表

首先采用由Denavit和Hartenberg提出D-H建模法进行运动学建模,D-H建模方法主要有两种:标准D-H方法和改进的D-H方法,这两种方法的主要区别于连杆坐标系建立的位置不同,因为标准D-H方法的转换矩阵只涉及到一个连杆的相关参数,更方便MATLAB 编程语言的实现[5]76-88。本文采用标准D-H方法进行建模。

通过标准D-H方法,建立的连杆坐标系如图2所示。

图2 Kr210r3100机器人的D-H坐标系

其中PTarget表示为末端执行位置坐标、Oc表示腕关节的腕心位置坐标。建立好D-H坐标系后,根据相邻连杆之间坐标系变换规则来确定各连杆的D-H参数,如表1所示。

表1 Kr210r3100机器人的D-H参数表

其中括号内的值为机器人初始状态下所对应的初始值,关节角范围为官方提供的各关节旋转轴相对初始状态的最小和最大旋转角度范围。

2.2 逆运动学求解

根据Pieper准则[6],六轴机器人存在解析解共有2个充分条件即:1)3个相邻关节轴线交于一点;2)3个相邻关节轴线互相平行。此机器人满足Pieper准则的第一个充分条件,故可通过几何法对解析解进行求解,因为机器人末端的3个关节轴线相交于同一点,该点通常称之为腕点Oc,因此腕点存在,故可以通过对关节解耦的方式来极大地简化求解过程。即前3个关节变量影响腕点的位置,后3个关节变量影响腕点的姿态[7]。

由于腕点和4、5号关节的坐标原点重合,而D-H坐标系中Z5和Z6轴共线,因此可以将Oc沿Z5轴平移d6个长度单位来获取机器人末端位置的坐标PTarget,即有:

综上,关节角θ1、θ2、θ5均存在两组解,此解耦型六轴串联机器人共有2×2×2=8组解。

2.3 逆运动学正确性验证

通过MATLAB对上述运动学解析式进行编程后,再进行逆解正确性验证。将求解出来的末端执行器的位姿矩阵的关节角代入进MATLAB的机器人工具箱(Robotics Toolbox)中,对比工具箱自动求解后的末端位置X、Y、Z和末端姿态所代表的RPY角是否和原始输入的位姿矩阵一致,若一致则说明逆运动学无误。

MATLAB 输入的末端姿态矩阵TTarget如图3所示。

图3 输入的姿态矩阵

设定机器人工具箱基本参数并进行验证,在MATLAB中输入的代码内容如下:

设定初始参数后开启机器人工具箱的示教窗口,将逆运动学求出来的解值输入到示教栏各轴的关节角q1~q6中,验证后的结果如图4所示。

图4 机器人工具箱逆运动学验证

通过观察可知,将示教栏中的X、Y、Z值乘上缩放系数1000,将其值对比输入的位置矩阵即TTarget中第4列的前3行所构成的3×1矩阵可知无误,将RPY角值通过矩阵转换公式jiRxyz(γ,β,α)=R(Z,α)R(Y,β)R(X,γ)[5]66可以转换成一个3×3矩阵对比输入的姿态矩阵,即前3行、前3列所构成的3×3矩阵可知无误,通过以上完成了逆运动学正确性的判定。

3 通过ActiveX构建通信

因为Plant的复杂函数运算和矩阵运算等能力较为薄弱,无法实现对上述解析式的编程表达,故需借助MATLAB强大的计算能力来实现,然后再与Plant进行数据交互,为了实现MATLAB和Plant之间的通信,就必须借助相应的通信工具,ActiveX是微软公司提出的一种使用基于COM/DCOM通信,可以在本地环境中进行一种数据交互的技术,能够使应用程序相互共享数据和共享功能[8],对于MATLAB和Plant软件而言,均自带COM端口,故可通过ActiveX进行通信和数据传输。

Plant需要从管理类库的功能中找到信息流对象栏添加自带的ActiveX插件,并要在打开此对象的窗口的类名栏中输入MATLAB.application作为呼叫值,具体的添加方法如图5(a)所示,呼叫方法如图5(b)所示。

图5 ActiveX插件添加与呼叫

在安装时MATLAB 会自动注册成COM 服务器,MATLAB可作为自动化服务器窗口(MATLAB Command Window)直接调用。

具体调用程序通过Plant内置的Simtalk语言进行编程,并将调用程序(Method)命名为calmat,主要通过以下几个函数实现本地姿态矩阵数据的传递及MATLAB中关节角变量值的提取:1)Excute函数。将Plant中相应的参数传递到MATLAB自动化服务器窗口并执行指定语句。如activex.execute ("run 'D:Program FilesMATLABR2014ain6dofmain.m'")—运行存储在硬盘中的主函数文件。2)GetVariable函数。获取MATLAB自动化服务器执行语句后求解出来的工作区变量值。如ThetaTab [i,1]:=activex.Getvariable (thetaX,"base")—把求解的关节角值存储在Plant中的ThetaTab表格中。

两款软件具体的数据交互示意图如图6所示。

图6 ActiveX接口的数据交互

4 在PLANT中实现六轴机器人的运动仿真

4.1 对机器人数模进行基础参数设定

虽然针对自定义模型的导入及驱动控制,西门子开发了这个方向的一定解决办法,但更多的也仅限于关节少、运动简单的三维设备,对于机器人这种多关节的复杂运动构件实现驱动较为麻烦,要从模型入手和编程角度加以实现,数模设定主要通过以下3点:1)模型导入先前的设定和格式转换。首先对要导入的模型通过相关CAD软件建立各关节坐标系,然后将模型文件转化成.JT格式进行输出保存,并在Plant中通过Import Graphics的命令选取该.JT文件进行导入,并设定好模型的对象属性类别后以.s3d格式进行保存。2)建立模型的层次结构。通过Make Animatable Object命令对实体设置可动节点,从机器人第一轴至第六轴构建好模型装配体的结构关系,创建完成的装配结构,如图7所示。3)设定各关节轴参数。以第五轴(Y5轴)为例,开启其3D属性栏,由于为旋转关节,故只需设定旋转轴(Rotation axis)、运动副类型(Joint Type)及关节角运动范围,若导入模型前坐标系建立无误,旋转中心(Rotation center)默认为原点,角速度取默认值1°/s值,第五轴具体参数设定如图8所示。通过以上3点,即完成了对该机器人整体模型的基本参数设定。

图7 机器人装配体结构创建

图8 第五轴关节参数设定

4.2 MU运动设定

实现运动仿真共有两个方面:一是MU运动;二是机器人自身运动。前者较为简单,可以直接从机器人模型内部进行属性设定,后者则要通过Simtalk语言及相关函数进行实现。MU(MobileUnits)为可移动单元对象,包括实体、容器和运输工具,本文中参与生产的MU为软件内置的托盘对象,具体设定过程如下:开启机器人的第六轴的3D窗口,添加托盘当MU对象,编辑、创建并更改运动路径中的位置、角度和轴等3个参数,并通过测定路径功能来调节红色箭头位置来将MU放在机器人法兰盘的合适位置上,在机器人初始的3D属性窗口中,在运动对象栏中添加机器人第六轴的层级结构名,以此机器人创建的装配结构为例,第六轴的层级结构名即为Z1.Y2.Y3.X5.Y5.X6,并选择MU的所在附加侧,具体MU运动属性设定如图9所示。

图9 设置MU运动属性

4.3 机器人运动设定

Plant里提供机器人自身运动设定共有3种方法:一是通过Self Animation功能栏对路径点进行设定来实现机器人运动;二是通过Pose功能栏对各关节运动副参数进行设定来实现运动;三是主要通过语言编程的方式来实现运动。对于前两种只能通过手动来调试路径,且只可以设定机器人一个固定的运动姿态,在取料或下料位置发生改变后,无法实现机器人的自动寻径操作,故不作考虑。以下采用第三种方法来实现机器人的运动控制。

1)Plant内部的所有设备的位置和姿态数据都是相对于原点而言,主要通过以下2个关键语法来获取机器人末端执行器取置件时的位置和姿态:a.<Path>._3D.Position。获取由Path指定对象的当前位置,返回值为一个1×3矩阵(由于Plant在目前版本中并不支持Z方向投影长度,需要人为给予一个Z向的值)。b.<Path>._3D.transformationMatrix。获取由Path指定对象的4×4的转换矩阵,其中前三行三列即为对象的3×3姿态矩阵。

2)通过以下关键语法来执行机器人各关节的运动。

3)为了实现可移植性、便携性和封装性,在编程过程中应遵循可替换原则和便于移植原则,即:a.将语法中能使用匿名标识符的地方统一使用,使用相对地址尽量不使用绝对地址;b.将全部程序、标志位以及相关表格都封装在对象的内部属性中,机器人的前后设备可根据具体工艺来进行替换,不用对程序代码做过度改动。

4.4 封装程序及执行思路

4.4.1 涉及机器人运动的3个对象的封装程序

1)机器人(kr210r3100)封装的内容如下,具体封装如图10所示:

图10 机器人的封装程序一览

a. 程 序(Method)对象。执行加载/卸载具体运动所涉及到的程序,包含机器人复位程序(reset)、机器人加载程序(loading)、机器人卸 载 程 序(unloading)。

b. 表 格(Table)对象。存储机器人初始、加载、卸载等3个状态的关节角值(CurPos)。除了初次机器人加载卸载需要调用MATLAB获取关节角外,后续直接通过该表格进行获取,防止多次外部调用拖累仿真运行速度。

c.标志位(boolean)对象。通过3个布尔量来设定标志位,执行程序运行过程中判断操作,其中包含:判断是否为第一次加载过程(first_load);判断是否为第一次卸载(first_unload);判断是否处于卸载状态(unloaded)。

2)取件位置。传送带(Line)封装的内容为程序(Method)对象:输出传送带上的传感器相对于机器人的位置矩阵PTarget和姿态矩阵RTarget,并调用机器人加载程序(OnSensor)。

3)置件位置。缓冲区(Buffer)封装的内容为程序(Method) 对象:输出缓冲区相对于机器人的位置矩阵PTarget和姿态矩阵RTarget,并调用机器人卸载程序(unloadPOS)。

除了3个设备内部封装好的表格、布尔量和程序外,外部还有6个信息对象,其中包括2个程序,reset程序用于对3个表格进行复位,clamat程序用于同MATLAB进行通信,详情可看第2节;3个表格中Ptab和Rtab等2个表格分别用于记录末端位置及姿态矩阵,ThetaTab表格用于记录和展示MATLAB返回的关节角值;一个通信接口对象ActiveX。这6个对象用来与MATLAB 构成外部通信,具体布置如图11所示。

图11 外部通信接口程序及表格

4.4.2 具体执行流程

1)加载系统调用。MU进料后,在传送带上运动并触发传感器,调用传送带上的程序OnSensor,输出当前的MU相对于机器人的位姿矩阵到Ptab和Rtab表格中,并调用机器人加载程序loading,在加载过程中通过first_load标志位来判断是否处于初次加载状态,若为初次加载则调用calmat程序返回MATLAB计算后的一组关节角值到ThetaTab 表格中,并且机器人内部表格CurPos 读取ThetaTab表格中的数值,若非初次加载则直接调用内部CurPos表格取件时的关节角值并完成加载运动,再将卸载标志位unloaded置为真,此时若还有MU进料亦无法呼叫加载程序,防止机器人加载和卸载过程中产生冲突。

2)卸载系统调用。由于是先取件后置件操作,故在机器人加载完成后,机器人开始执行卸载程序,首先调用缓冲区的程序unloadPOS,输出当前缓冲区相对于机器人的位姿矩阵到Ptab和Rtab表格中,并调用机器人的卸载程序unloading,在卸载过程中通过first_unload标志位来判断是否处于初次卸载状态,若为初次卸载则调用calmat程序返回MATLAB计算后的一组关节角值到ThetaTab表格中,并且机器人内部表格CurPos读取ThetaTab表格中的数值,若非初次卸载则直接调用内部CurPos表格中置件的关节角值并完成卸载运动,再将卸载标志位unloaded置为否,MU出料并执行下一次加载循环。

以上就是机器人加载和卸载的循环执行流程,具体流程图如图12所示。

图12 程序调用流程图

5 机器人的姿态及路径优化

5.1 机器人姿态寻优

机器人的姿态寻优涉及到关节角最优解选取,首先将图1区域处的原始四轴机器人替换到实际的六轴机器人来进行分析研究,针对上述章节流程进行建模和编程后开始仿真的运行,在Plant中可以自动计算出机器人在加载和卸载状态下的末端位置矩阵表格Ptab和姿态矩阵表格Rtab,分别如图13(a)和图13(b)所示。

图13 加载/卸载时的末端位置和姿态表格

通过表格即可得到末端执行器的位姿矩阵,再通过ActiveX接口将其值传递到MATLAB进行解算得到8组关节角值,如图14(a)和图14(b)所示。

图14 加载/卸载时解算出的八组关节角弧度值

从8组解中寻求机器人的最优关节角,主要通过以下几点进行选取:1)解算后的机器人关节角要在值域范围内,对于角度值在[-180°,180°]之外的值进行加减360°运算来补偿出值域内的其他可行解并可避免大关节运动,最后通过rad2deg函数将该解由弧度值转化成角度值;2)尽量避开奇异点,因为奇异位形大多都是某些关节共线或者产生运动抵消的情况,会导致机器人的自由度个数下降,从而产生无数组解和无法求解的情况;3)机器人取件和置件时的姿态不能同上下料设备进行干涉。满足以上三点后,再采用机器人取最优逆解的通用原则,即“最短行程”原则[9]:对于此机器人满足前3个关节大而后3个关节小的特点,根据“多移动小关节,少移动大关节”策略,以机器人初始状态的各轴关节角初值为基准,选取求解出的关节角与该初值距离最近的可能解为最优解,具体求解顺序为:先取关节角1与上一状态最接近的关节值作为最优解进行选取,再取的关节角2的值,依此类推直到关节角6,最后所得的这组解即为最优关节角,并可调用MATLAB输出图形进行各关节位姿判断(如图15(a)和图15(b)),可以保证机器人的快速响应。

图15 加载/卸载时最优执行姿态及图像输出

5.2 机器人的路径寻优

根据最优关节角得到最佳姿态后,由于没有对机器人路径进行寻优操作,在仿真运行的过程中仍会同周围设备产生干涉。利用MATLAB通过蒙特卡洛法[10]对此机器人进行工作空间区域分析可知,参考图16(a)、图16(b)、图16(c)的3种二维平面投影和图16(d)的三维投影图,如果机器人保持逆时针运动,不论以何种姿态都必然会与路径中的单处理器进行碰撞,故必须针对机器人的关节角度进行优化,使其进行顺时针运动,Plant中针对机器人的默认旋转方向是负角度逆时针、正角度顺时针运动,故只需将机器人卸载状态下的一轴关节角减去360°,即可实现顺时针运动且卸载姿态保持不变,优化后的加载及卸载角度如表1所示。

表1 优化后的机器人加载/卸载角度 (°)

图16 机器人的工作空间分析

在关节角度优化后,机器人会保持逆时针运动,虽不会与右侧的单处理器发生碰撞,但由于关节顺序的影响,反而会与左侧的2个buffer之间产生碰撞,具体原因是机器人在加载到卸载运动过程中二轴及三轴的动作顺序过于超前,导致机器人会快速保持一个俯身位进行运动,相反机器人在卸载到加载的运动过程中,机器人二轴和三轴动作顺序则过于迟缓,亦会以俯身位状态同左侧buffer 进行碰撞。针对以上问题,优化后的关节顺序如图17所示。

图17 机器人的运动优化流程

6 结论

本文针对系统仿真软件Plant Simualtion中自定义导入的实际产线处六轴机器人的复杂三维模型,提供了一个新的控制策略及驱动方法。即通过ActiveX接口与MATLAB联调的方式对此机器人进行姿态解算,提供相应运算及图形技术支持,再应用本身自带的函数程序及Simtalk语言编程来实现机器人模型的驱动,对运动具体参数的细节化调整实现了避障等效果。相比原始默认的四轴机器人模型而言,实现了各关节的优化选取和具体运动路径的操作控制,对于今后搭建更为真实的3D化数字工厂具有重要的参考意义。

猜你喜欢
调用表格姿态
《现代临床医学》来稿表格要求
《现代临床医学》来稿表格要求
攀爬的姿态
统计表格的要求
核电项目物项调用管理的应用研究
LabWindows/CVI下基于ActiveX技术的Excel调用
全新一代宋的新姿态
跑与走的姿态
基于系统调用的恶意软件检测技术研究
本刊表格的要求