第七章 工业机器人高级编程¶
7.1 中断与事件程序¶
7.1.1 中断与事件程序¶
上一章已讲解了Rapid语言数据结构与基本指令。但是工业机器人的实际作业场景往往比较复杂,单纯依靠运动控制语句和简单逻辑语句难以完成作业任务。此时,可通过机器人的中断、事件程序、错误处理、轨迹限速、区域监控等高级编程功能的配合使用,来满足复杂工况和工艺要求。
7.2 错误处理与轨迹限速¶
7.3 区域监控与关节轴限制¶
7.4 奇异点处理与多任务¶
7.4.1 奇异点处理¶
我们都知道六轴机器人包含六组不同位置的驱动电机,每个驱动电机都能提供绕一轴的旋转运动,从自由度的概念来看,六轴机器人已经满足三维空间中的六个自由度,理论上其末端可以到达空间中任何位置及角度,但为什么有时候六轴机器人运动会卡死呢?这是因为六轴机器人存在一些奇异点。
运动学中,六轴机器人可视为由「刚体」以及可提供平移或旋转的「关节」所组成,运动学主要探讨刚体尺寸及关节参数对应于运动链末端的位置及运动路径之关系,可再划分为两个部分:即正运动学与逆运动学。
1. 正运动学: 在给定已知的尺寸及关节参数的条件下,去求得运动链末端的位置及角度;在六轴机器人上,就是给定各轴角度,去求得末端的笛卡尔坐标。通常而言:一组给定的关节参数只对应唯一的末端坐标。
2. 逆运动学: 欲求得任何可能的关节参数,使运动链末端达到特定位置及角度;在六轴机器人上,就是从已知的末端坐标,去求得各轴角度参数的组合。与正运动学不同,一个末端位置可以由不同的机器人姿态来达成,对应不只一组关节参数。理论上,六轴机器人的一个末端位置可对应多达十六组不同的关节参数。
在逆运动学中,当末端位于奇异点时,一个末端位置会对应无限多组关节参数解。原因在于:运动学中使用Jacobian矩阵来映射关节转角与六轴机器人末端位置关系时,当六轴机器人中的两轴共线时,雅克比矩阵内各列并非完全线性独立,造成Jacobian矩阵的秩会减少,其行列式值为零,使得Jacabian矩阵无法求逆,即逆运动学无法运算,发生奇异。
在六轴机器人末端接近奇异点时,微小的位移变化量就会导致某些轴的角度产生剧烈变化,产生近似无限大的角速度,或者机器人自由度减少,而无法实现某些运算。若六轴机器人经过奇异点,运动即会停止,并出现错误讯息等提示。
奇异点错误消息界面 例如:当工业机器人机器人关节的第5轴角度为0°,同时第4轴和第6轴角度相同时,则称机器人的这个种姿态叫做奇异点。
六轴机器人的奇异点分为三种类型:
1. 腕部奇点: 腕奇异点是指轴4和轴6处于同一条线上(即,轴5角度为0度)的配置。此时,无论如何改变轴4和轴6的关节转速,都无法改变末端执行器的位置。也即会造成系统试图将4轴与6轴瞬间旋转180度。
2. 肩关节奇异: 当第1轴与腕关节中心C点(第5轴与第6轴之交点)共线时,会发生肩关节奇异。此时无论如何改变1轴与4轴的转角,机器人末端位置不会发生改变。也即会造成系统尝试将1轴与4轴瞬间旋转180度。
2. 肘关节奇异: 当腕关节中心点C与2轴、3轴共面时,即C点与A2、A3共线时,会发生肘关节奇异。此时会造成肘关节卡死,机器人无法再移动。也可以从力与运动角度理解该奇异点。
避免奇异点 通常可以用简单方式来避免奇异点。当机器人4、5、6关节轴连接成直线或者4、6轴角度相同时,就会出现奇点。因此,技术人员通过工具增加一个很小的角度,以减少机器人进入奇点的机会。
这种技术仍然是避免奇点的一种好方法。以一个非常小的角度(5-15度)安装机器人工具,通常可以确保机器人完全避免奇点。这种设计成本相对造价低,并且很容易实现。而最直接有效的方式就是把机器人运动姿态设计到没有奇点的区域。
SingArea 指令 另外机器人控制系统在软件层面也对奇异点有相关的应对设计,ABB机器人编写程序时候,可以通过“SingArea”指令帮助让机器人自动规划当前轨迹,在优化经过的奇异点时的插补方式,避免出现系统遇到奇异点而报错。
“SingArea”指令说明表
项目/指令 |
说明 |
|---|---|
SingArea |
设定机器人运动时,在奇异点的插补方式 |
SingArea\Wrist |
允许轻微改变工具的姿态,以便通过奇异点 |
SingArea\Off |
关闭自动插补 |
变元 |
SingArea [\Wrist] |
SingArea只对MoveL MoveC有效。
SingArea 变元说明:
Wrist: 允许工具方位稍微偏离,以避免腕奇异点。其适用于轴4和轴6平行的情况(轴5为0度)。同时适用于拥有不到六个轴的机械臂的线性和圆周插补,其允许工具方位出现偏离。
LockAxis4: 将轴4锁定在0或±180度,使得机器人依然可以继续运行,从而避免在轴5接近于零时的奇异点问题。如果当轴4位于0或±180度时,依然达不到编程位置,这通过四轴微动改变工具姿态来运行机械臂来达到位置,如果轴4的需要偏离锁定位置2度以上时候,则系统通过自行改变参数执行一次变元Wrist的功能来继续运动,在所有后续移动中,轴4将保持锁定,直至执行新的SingArea指令。
Off: 不允许工具方位出现偏离。当未通过奇异点,或不允许方位发生改变时,上述要求适用。如果未指定任何参数,系统默认设置为\Off。如果通过奇异点,则一个或多个轴可实施彻底的移动,从而导致速率降低。拥有不到六个轴的机械臂可能无法达到编程的工具方位。因此,机械臂将停止。
7.4.2 多任务之间数据通信¶
多任务程序最多可以支持20个不带机器人运动指令的后台并行的RAPID程序。
多任务程序最常见的应用就是任务间数据交换:任务间是可以通过程序数据进行数据的交换,在需要数据交换的任务中建立存储类型为可变量而且名字相同的程序数据,在一个任务中修改了这个数据的数值,在另一个任务中名字相同的数据也会随之更新。
操作步骤
1. 建立多任务 (1) 首先进入示教器控制面板的配置画面中,选择“Controller”主题,然后选择“Task”,添加一个新的任务;然后进入新的任务添加界面,对新任务起一个Tmp01的名字,接着对类型选项“Type”选择“NONMAL”,以及“Main entry”进行重命名为“mainTK”如图所示。
(2) 然后进行重启操作,使设置生效。重新启动后,点击示教器主页右下角快捷菜单,再点击多任务按钮,将T_ROB1前台任务取消掉如图所示。这样就可以进入到后台任务中新建主程序和例行程序。
(3) 最后在新建的后台任务中编辑程序完成后,将T_ROB1前台任务勾选,在此进入到控制面板配置的在Task的编辑画面,将前面新建的多任务的Type设定为“SEMISTATIC”,以及将TrustLevel改为NoSafety,这样设置后,重启后台程序将会自动执行。
2. 多任务之间数据通信 例: 首先建立一个并行任务,type设置为NONMAL,如图所示,在两个任务下建立好相同名称不同任务的可变量数字数据,如图所示。
将tmp01的type改为SEMISTATIC以及确保TrustLevel为NoSafety,在前台任务程序中编写赋值语句处理数据,观察后台任务数据的变化,见下面代码和如图所示。
MODULE MainModule
PERS num TX01:=881;
PROC main()
TX01 := 881;
ENDPROC
ENDMODULE