后置处理器在离线编程中是重要的一部分,通过后置处理器可以为各型号的机器人控制器生成合适的程序。后置处理器会根据不同的控制器定义该机器人程序的语义。
在RoboDK中,后置处理器负责将仿真程序转码为与机器人控制器型号相匹配的可读程序。在软件环境中,每台机器人模型都有指定的后置处理器(默认设置)。Generate Program(生成机器人程序)介绍了如何使用后置处理器,将离线程序转化为机器人程序(右键点击程序,选择“Generate Robot Program”生成机器人程序)。
RoboDK包含多个后置处理器,支持多种品牌的机器人控制器,这些型号在Available Post Processors(后置处理器)中列出。另外,用户可以生成自定义的后置处理器,或者修改已有的后置处理器,所有的后置处理器都安装在这个文件夹中:
C:/RoboDK/Posts/
每个后置处理器都是一个PY文件(Python脚本文件)。用户可以添加、修改或删除RoboDK Posts文件夹里的文件。所有的后置处理器(PY文件)都应该安装在Posts文件夹中,这样该后置处理器就会出现在RoboDK软件中供用户选择。
本部分介绍如何选择、编辑或者添加一个后置处理器,并在RoboDK中配合机器人使用。这个视频简单介绍了后置处理器的功能与使用:https://www.robodk.com/help#PostProcessor
为机器人选择后置处理器:
1.右键单击机器人或者RoboDK中的仿真程序
2.点击“Select Post Processor”选择后置处理器
3.在列表中选择
4.点击OK
改变已经生效,用户可以重新生成机器人程序并查看结果。
或者,通过以下步骤为机器人选择后置处理器:
1.打开机器人控制面板(双击机器人)
2.选择“Parameters”参数
3.如下图,在后置处理器下拉菜单中选择相应的机器人品牌与型号
用户可以修改已经存在的后置处理器,或者添加新的后置处理器。后置处理器文件必须放在C:/RoboDK/Posts/ 文件夹中,这样才能在RoboDK软件环境中备选。前一节中描述了如何将后置处理器与机器人连接。
每个后置处理器是一个PY文件。可以给该文件重新命名或者将文件移入或移出C:/RoboDK/Posts/ 文件夹。如果需要删除一个后置处理器,只需在该文件夹中删除它的PY文件。
可以通过任意一种文本编辑器或者使用Python编辑器(Python IDLE)来编辑后置处理器。使用Python编辑器可以快速调试并通过文件末尾的例程来评估该后置处理器。
安装Python以便更好地测试与使用后置处理器(默认设置下Python将与RoboDK一同安装)。
修改已经存在的后置处理器:
1.选择Program➔Add/Edit Post Processor
2.选择一个后置处理器
3.点击OK。后置处理器文件将在文本文档中打开。
4.选择Run➔Run module (F5)预览结果,并根据需要进行修改。
或者,用户可以手动修改后置处理器:
1.打开后置处理器文件夹:C:/RoboDK/Posts/
2.使用Python IDLE编辑器(右键选择“使用IDLE编辑”)或者其他文本编辑器打开一个PY文件。
3.根据需要进行修改
4.运行并检查结果:在Python IDLE 中选择Run➔Run module(默认快捷键为F5)
或者,用户可以使用任意文本编辑器编辑,之后双击通过Python运行。
本节通过举例,介绍如何对已经存在的后置处理器做出小的修改。
我们将对一个ABB和一个KUKA后置处理器做出修改:
● 设置一个关节运动,使用角度信息生成运动指令。
● 将速度最大值限制为500 mm/s。即使机器人仿真程序中的速度设置超过这个值,也会被后置处理器限制在500 mm/s之内。
● 为每个仿真程序分别生成文件,并且强制每个文件不超过3000行指令。较大的程序将被分割为多个子程序并依次被调用。
前面的章节介绍了如何打开并修改已经存在的后置处理器:
1.选择Program➔Add/Edit Post Processor
2.选择一个后置处理器,例如适用于KUKA KRC4控制器的KUKA_KRC4.
3.点击OK。后置处理器文件将在Python IDLE编辑器中打开。
以下部分介绍如何在文本编辑器(或Python IDLE)中修改后置处理器。
下面的步骤介绍如何修改后置处理器:设置关节角度值并强制关节运动。在这个范例中我们介绍如何将这个改变应用于ABB IRC5控制器。
1.找到机器人控制器的使用手册。在本范例中我们使用的是ABB IRC5 RAPID编程手册。
2.找到关节运动的指令。本范例中ABB的关节运动绝对值指令为MoveAbsJ。该指令使用jointtarget变量来定义关节轴数值。
3.使用Program➔Add/Edit Post Processor 选择当前的后置处理器并修改它。如果你当前使用的是自定义的后置处理器,它会被(在默认状态下)选中。
4.在后置处理器中找到MoveJ函数。该函数定义了后置处理器如何生成机器人关节运动的指令。另外, RoboDK使用MoveL定义线性运动。使用Python编程语言,修改给机器人程序添加轴角度信息的那行指令,如下图所示。
5.最后,修改后置处理器将关节轴角度值或者姿态值转化为字符串的方式。函数angles_2_str与pose_2_str分别负责将关节轴角度值与姿态值转化为文本文字。
大部分RoboDK后置处理器都使用关节轴角度值设置关节运动,以及笛卡尔坐标值设置线性运动。我们建议总是将一系列线性运动的起点(第一段运动)设置为关节运动(用角度值定义)。这样可以避免运动开始前错误的机器人位姿导致机器人进入奇异状态,或者达到轴极限。
按照下面的步骤设置500 mm/s的速度限制,避免在RoboDK中仿真时设置的速度值过大。下面的范例中我们使用的是KUKA KRC2 或者KRC4 控制器:
1.在后置处理器文件中找到setSpeed函数的定义(def setSpeed)
2.在$VEL.CP 输出之前添加一行修改速度的指令:
speed_mms = min(speed_mms, 500)
以下修改将避免为同一程序生成多个子程序,并限制每个程序的指令不超过3000行:
1.将MAX_LINES_X_PROG变量设置为3000
2.将INCLUDE_SUB_PROGRAMS变量设置为False
安装RoboDK后包括如下后置处理器:
● ABB_RAPID_IRC5:针对ABB IRC5 机器人控制器
● ABB_RAPID_S4C:针对ABB S4C 机器人控制器
● Adept_Vplus:针对Adept V+ 编程语言
● Allen_Bradley_Logix5000:针对Allen Bradley Logix5000 PCL
● CLOOS:针对CLOOS 机器人控制器
● Comau_C5G:针对Comau C5G 机器人控制器
● Denso_PAC:针对Denso RC7(以及更早版本)机器人控制器(PAC 编程语言)
● Denso_RC8:针对Denso RC8(以及之后版本)机器人控制器(PacScript编程语言)
● Dobot:针对Dobot教学用机器人
● Fanuc_R30iA:针对Fanuc R30iA与R30iB 机器人控制器
● Fanuc_R30iA_Arc:针对Fanuc弧焊(Arc welding)
● Fanuc_RJ3:针对Fanuc RJ3 机器人控制器
● GCode_BnR:针对B&R 机器人控制器
● GSK:针对GSK 机器人
● HIWIN_HRSS:针对HIWIN 机器人
● KAIRO:针对Keba Kairo 机器人控制器
● KUKA_IIWA:针对KUKA IIWA sunrise的Java编程
● KUKA_KRC2:针对KUKA KRC2 机器人控制器
● KUKA_KRC2_CamRob:针对KUKA CamRob打磨选项(milling option)
● KUKA_KRC2_DAT:针对KUKA KRC2 机器人控制器,包括生成DAT数据文件
● KUKA_KRC4:针对KUKA KRC4 机器人控制器
● KUKA_KRC4_Config:针对KUKA KRC4机器人控制器,并为每行指令生成配置数据
● KUKA_KRC4_DAT:针对KUKA KRC4机器人控制器,包括生成DAT数据文件
● Kawasaki:针对Kawasaki AS 机器人控制器
● Mecademic:针对Mecademic Meca500 机器人
● Mitsubishi:针对Mitsubishi 机器人控制器
● Motoman/Yaskawa:针对使用Inform II与Inform III(JBI)语言的Motoman机器人控制器
● Nachi_AX_FD:针对Nachi AX 与 FD 机器人控制器
● OTC:针对Daihen OTC 机器人控制器
● Panasonic:针对Panasonic PRG程序
● Precise:针对Precise Scara 机器人
● Siemens_Sinumerik:针对Siemens Sinumerik ROBX 机器人控制器
● Staubli_VAL3:针对Staubli VAL3机器人程序(CS8控制器或之后版本)
● Staubli_VAL3_InlineMove:针对生成Staubli VAL3程序,包括inline运动数据
● Staubli_S6:针对Staubli S6 机器人控制器
● Toshiba:针对Toshiba 机器人
● Universal_Robots:针对UR机器人,线性运动生成为姿态目标
● Universal_Robots_RobotiQ:针对UR机器人,包括RobotiQ夹爪支持
● Universal_Robots_joints:针对UR机器人,线性运动生成为关节目标
● Yamaha:针对Yamaha 机器人
以下视频介绍RoboDK后置处理器的概况:
https://robodk.com/help#PostProcessor
后置处理器的在线Python函数库:
http://robodk.com/doc/en/PythonAPI/postprocessor.html
后置处理器使用的robodk.py模块:
http://robodk.com/doc/en/PythonAPI/robodk.html#robodk.Mat
robodk.py模块为机器人姿态运算提供数学工具(乘法,反转,…),并为从机器人姿态到不同的欧拉角格式之间提供转换。
关于Python的编程帮助请参考:
https://docs.python.org/3/
每当生成一个程序后,一个预处理的/通用Python程序会被保存至本地临时文件夹中。该程序与正确的后置处理器相关联(用户在RoboDK中的选择)。后置处理器定义了一个“RobotPost类”来输出正确的程序代码。
预编译的程序会通过Python执行。