基于C#语言的ABB机器人远程示教方法
作者: 王晓忠
关键词:C#语言;ABB工业机器人;二次开发;远程示教;工业应用
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2024)18-0085-04
0 引言
工业机器人是一种在编程和控制下完成重复性工作的机械装置,已在焊接、搬运和喷绘等工业生产中得到广泛应用。伴随着工业互联网、AI技术、5G技术的推广,工业机器人正朝着数字化、柔性化、智能化的方向发展,推动制造类企业朝着数字化智能生产方向进行产业升级。
在工业机器人执行任务前,通常需要对工作任务中的关键点位进行示教,然后在工业机器人内部进行程序计算从而完成路径运动。当前工业机器人的编程方式主要有2种:示教编程和离线编程。示教编程优点是示教点位简单明了操作方便,但示教过程烦琐并且对操作人员的操作要求较高,通常需要操作人员靠近工作站进行有线示教。离线编程的优点是灵活性强,数据修改方便,但由于离线模型和实物模型之间存在误差,通常需要在部署工作站时进行二次定位,从而增加工作量[1-2]。
针对工业机器人的示教,文献[3]对工业码垛机器人示教再现技术进行了研究与改进,提出了一种新的示教再现方法,采用优化算法减少了示教点位,但仍属于传统的在线示教。文献[4]针对目前工业机器人所采用的编程方式的局限性,提出了基于视觉引导的工业机器人示教编程方式,在原有工业机器人控制系统上增加了双目视觉MicronTracker传感器进行辅助示教,虽然获得了较高的示教精度,但使用成本显著提高。文献[5]则在机器人-位姿追踪系统标定完成后,通过手持示教笔对机器人进行示教,特别适用于复杂曲面物体表面轨迹的快速示教工作,但使用成本较高,无法应用于远程示教。文献[6]采用三层结构:现场“感知层”、信息“传输层”和远程数据服务中心设计了一套数据采集系统,然而该系统仅停留在数据层面,并未考虑工业机器人本体的示教。
从上述研究可以看出,现有的示教方法多基于机器人本体加外设形式进行示教优化,且均需要操作人员现场干预。然而,在实际使用过程中,常遇到操作人员无法现场示教的情况[7-8]。针对此问题,需要利用工业机器人的远程示教完成示教任务。
基于此,文章依托ABB PCSDK工具包和C#语言设计了一套远程示教方法。该方法可以实现ABB工业机器人的远程操控,从而完成示教任务,同时增加了示教点读写修正功能以适应特殊点位示教。文章采用的控制接口为ABB通用接口,因此该控制方法适用于大部分ABB 工业机器人。最后,文章在ABBIRB120上验证了该示教方法的可行性。
1 Rapid 代码控制架构设计
1.1 ABB 中点位数据分析
Rapid语言是ABB工业机器人特有的编程语言,工业机器人通常以任务为单位进行运行,每一个任务里面包含若干个模块,而模块里存储的就是编程时的具体程序和数据。对于ABB机器人而言,其运动的依据就是目标点位的数据,而在ABB里面有两类数据是记录点位的,一个是jointtarget(接头位置数据):
Robtarget数据类型由4个部分组成:trans用于记录当前坐标系中工具中心点的位置;rot采用四元数数据记录当前坐标系中工具方位的位置;robconf用于记录机器人的轴配置;extax用于记录附加轴的位置。
这两类数据都可用于记录工业机器人的当前位置。前者主要用于绝对位置移动,例如关节轴单独运动;而后者则可以以多种不同的方式进行运动。需要注意的是,Rapid语言中包含MoveJ、MoveL等机器人整体运动指令,但不包括单独的关节轴运动指令,用户需要编辑自定义函数。
1.2 基于Rapid 循环结构刷新数据
工业机器人位置数据的记录和更新放在Rapid代码中进行从而保证远程示教时数据的实时性,文章采用CJointT和CRobT函数来分别刷新jointtarget和Rob⁃target数据,CJointT函数变元为:
CJoinT ([ \TaskRef ]|[ \TaskName ])
式中,TaskRef用来识别程序任务;TaskName用来识别程序名称。通常不指定数据,来表明读取当前任务中机械臂各轴的位置。CRobT函数变元为:
CRobT ([ \TaskRef ]|[ \TaskName ]|[ \Tool ]|[ \WObj ])
式中,TaskRef和TaskName的含义与CJoint相同,Tool用于标识工具坐标系,WObj用于返回相关工件(坐标系)的数据。通常情况下,指定Tool参数数据以对应MoveJ或MoveL指令中的Robtarget数据。
为确保远程示教功能可以独立于ABB正常工作流程之外,文章采用了TEST IF语句来单独更新TCP 数据。对应的代码运行流程如图1所示。通过这种方式,上位机软件仅需要修改ABB控制指令即可实现不同的远程示教操作。
2 上位机控制界面设计
2.1 PC SDK 开发接口
ABB工业机器人具有广泛的二次开发接口,包括RobotStudio SDK、PC SDK、Robot Web Services、IRC5OPCServer、IOT Gateway等。从这些开发接口可以看出:ABB工业机器人可以根据需求部署在绝大多数的应用平台上。文章根据实际工况,采用PC SDK 接口进行开发,并利用C#语言设计了一套远程控制的上位机软件。
在远程示教过程中inevitablel会出现一定的视觉偏差。因此在远程示教控制中加入了示教点位数据修改功能:针对特殊点,可以直接输入计算后的数据。同时,为方便调试示教点位,添加了测试示教点功能。在编写代码过程中,为确保工业机器人数据模型和控制模型的一致性,参考了ABB PCSDK中的命名空间划分。主要涉及的命名空间如表1所示。
在编写上位机软件时,通常将示教的点位数据和工业机器人配置信息捆绑成数据组以便在软件中记录和修改。
2.2 数据修改和位姿更新
机器人示教过程中,操作人员通常关心TCP相对位置X、Y、Z和以欧拉角表示的RX、RY、RZ,但是,如上文1.1所述:ABB中X、Y、Z数据可以在robtarget的trans得来,而TCP工具方位却是以四元数的形式记录在robtarget的rot中,因此需要对其进行数学转换。
四元数实质是对于基{1,i,j,k}的线性组合,也可以表示成实部与虚部的结合:
在欧拉角下,如果定义φ 为绕X轴旋转的角度,θ为绕Y轴旋转的角度,ψ 为绕Z轴旋转的角度,那么欧拉角到四元数的转化如公式(2) 所示,四元数到欧拉角的转化如公式(3) 所示:
采用这两组公式就能实现ABB 工业机器人中TCP工具方位数据的欧拉角和四元数之间的转换。为了方便用户使用,在PC SDK中的Orinet结构体提供了ToEulerAngles和FillFromEulerAngles两个函数实现欧拉角的快速读取和修改。
2.3 控制流程分析
为了实现ABB机器人的远程示教功能,上位机采取WinForm框架进行程序编写。在远程示教部分,主要设计了4个功能模块:远程示教开关:用以开启工业机器人远程示教功能;校准点位计算:针对特殊点位输入计算数据;手动调整:远程操控工业机器人6个关节轴和位姿,输入视角数据;动作测试:针对示教完毕的点位进行运动测试。
在远程示教过程中采取了事件触发方式来读写数据,从而避免了工业机器人运动报错的现象,上位机的控制流程图如图2所示。从图2可以看出:为了避免工业机器人在正常运行时进入远程示教功能而发生意外,在上位机界面采用了示教开关来作为判断依据:一方面示教开关会修改工业机器人的控制数据,一方面示教开关也是上位机界面各按钮的使能开关。图3展示了各按钮的使能状态:左侧未开启远程示教时显示灰色,按钮无任何响应,而右侧开启远程示教后,按钮转为彩色,接收响应。
值得注意的是,由于远程示教的运动指令最终还是在Rapid中进行,为了防止示教时走到奇异点,通常先采用J1~J6的关节轴调整再进行TCP的姿态调整,写入示教数据后还提供动作测试,来验证示教点是否符合工作流程。
2.4 IRB120远程示教验证
基于C#语言的ABB机器人远程示教,采用ABB 的PC SDK二次开发接口搭建上位机平台。上位机通过修改Rapid控制命令来远程操控机器人,从而对示教点数据进行读取和修改。为验证该控制方法的可行性,文章依托YL-17B实训平台,针对ABB IRB120 进行了远程示教。
图4展示的是示教前工业机器人所处在原点位置,图5展示的是通过远程示教后工业机器人运动到示教点位置。可以看到,采用此种方法可以实现机器人的远程示教,在示教过程中,可以随时对示教点数据进行修改,也可以随时退出示教任务,让工业机器人运行回基础任务中。该实验验证了所提示教方法的正确性和可行性。
3 结束语
传统的示教方法由于需要借助示教器而无法实现远程示教。文章采用C#语言并借助ABB PC SDK 工具包实现了一种远程示教方法。该示教方法可以适配绝大多数ABB工业机器人,并且提供了手动调整和点位计算功能以供不同场景使用。相比传统示教方法,采用此方法操作更为简便,可视化程度也更好。最后,在IRB120上进行了验证。采用该示教方法有助于解决特定场景的远程示教问题,对于推动工业机器人应用具有一定的实际意义。