程序过滤#

校准机器人后,我们有两个选项可使用已校准机器人的绝对精度来生成程序:

   过滤现有程序:修改程序中的所有机器人目标,以提高机器人的准确性。可以手动完成,也可以使用API​​

   使用RoboDK进行离线编程可生成准确的程序(已过滤生成的程序,包括使用API​​生成的程序)。

要手动过滤现有程序,请执行以下操作:将机器人程序文件拖放到RoboDK的主屏幕中(或选择文件打开),然后选择仅过滤。该程序将被过滤并保存在同一文件夹中。过滤器摘要将提及使用过滤算法是否存在任何问题。如果要在RoboDK中进行仿真,我们还可以选择导入程序。如果程序具有任何依赖项(工具框架或基本框架定义,子程序等),它们必须位于导入第一个程序的相同目录中。

Robot Calibration Creaform - 图片 33

Robot Calibration Creaform - 图片 34

一旦将程序导入RoboDK中,就可以以绝对精度或绝对精度重新生成程序。在RoboDK的主要精度设置(工具选件准确性),我们可以决定是否要始终使用精确的运动学来生成程序,是否要每次询问或是否要使用当前的机器人运动学。可以通过右键单击机器人并激活/禁用使用精确运动学标签来更改当前的机器人运动学。如果处于活动状态,我们将看到一个绿色的点,如果未处于活动状态,我们将看到一个红色的点。

Robot Calibration Creaform - 图片 35

Robot Calibration Creaform - 图片 36


使用API​​FilterProgAPI-CT过滤程序

给定已校准的机器人,可以使用RoboDK过滤完整的程序,而使用 筛选程序 呼叫:

机器人筛选程序file_program

库的部分中提供了一个名为FilterProgram的宏示例。以下代码是使用RoboDK API过滤程序的Python脚本示例。

机器人链接 进口 * #与RoboDK通信的API

罗布德克 进口 * #基本矩阵运算

进口 操作系统 #路径操作

 

#获取当前工作目录

CWD = 操作系统路径目录名操作系统路径真实路径__文件__))

 

#启动RoboDK(如果未运行)并链接到API

RDK = Robolink()

#可选:提供以下参数以在后台运行

#RDK = 机器人链接args ='/ NOSPLASH / NOSHOW / HIDDEN'

 

#获取已校准的测站(.rdk文件)或机械手文件(.robot):

#提示:校准后,右键单击机器人,然后选择另存为.robot”

标定档案= CWD + '/KUKA-KR6.rdk'

 

#获取程序文件:

file_program= CWD + '/Prog1.src'

 

#加载RDK文件或机械手文件:

calib_item= RDK添加文件标定档案

如果 calib_item有效():

 提高 例外加载时出错 + 标定档案

 

#检索机械手(如果只有一个机械手,则不会弹出窗口):

机器人 = RDKItemUserPick选择要过滤的机器人 ITEM_TYPE_ROBOT

如果 机器人有效():

 提高 例外未选择机器人或不可用

 

#激活精度

机器人setAccuracyActive1

#过滤程序:这将自动保存程序副本

#根据机器人品牌使用重命名的文件

状态 摘要 = 机器人筛选程序file_program

 

如果 状态 == 0

 打印程序过滤成功

 打印摘要

 calib_item删除()

 RDK关闭RoboDK()

其他

 打印程序筛选失败!错误代码:%i” 状态

 打印摘要

 RDKShowRoboDK()

使用API​​FilterTargetAPI-CT过滤目标

以下代码是一个示例Python脚本,该脚本使用RoboDK API来过滤目标(姿势目标或联合目标), FilterTarget命令:

pose_filt,关节= robot.FilterTargetnominal_poseestimated_joints

如果第三方应用程序(不是RoboDK)使用姿势目标生成机器人程序,则此示例很有用。

注意:如果使用API​​自动生成程序,则不需要这样做。

机器人链接 进口 * #与RoboDK通信的API

罗布德克 进口 * #基本矩阵运算

 

定义 XYZWPR_2_Posey):

 返回 KUKA_2_Posey#将XYZABC转换为姿势

 

定义 姿势_2_XYZWPR姿势):

 返回 姿势_2_KUKA姿势#将姿势转换为XYZABC

 

#启动RoboDK API并检索机械手:

RDK = 机器人链接()

机器人 = RDK项目'' ITEM_TYPE_ROBOT

如果 机器人有效():

 提高 例外机器人不可用

 

pose_tcp= XYZWPR_2_Pose[0 0 200 0 0 0]#定义TCP

 

pose_ref= XYZWPR_2_Pose[400 0 0 0 0 0]#定义参考框架

 

#更新机械手TCP和参考框架

机器人setToolpose_tcp

机器人setFramepose_ref

 

#对于SolveFKSolveIK(正向/反向运动学)非常重要

机器人setAccuracyActive #精度可以为开或关

 

#在关节空间中定义名义目标:

关节 = [0 0 90 0 90 0]

 

#计算关节目标的机器人标称位置:

pose_rob= 机器人SolveFK关节#机器人法兰与机器人底座

 

#计算pose_target:相对于参考帧的TCP

pose_target= vpose_ref*pose_rob*pose_tcp

 

打印目标未过滤:

打印姿势_2_XYZWPRpose_target))

 

joints_approx= 关节 joints_approx必须在20度以内

pose_target_filt real_joints = 机器人FilterTargetpose_target 关节

打印目标已过滤:

打印real_joints列出())

打印姿势_2_XYZWPRpose_target_filt))