机器人校准完成后,我们有不同的方法来使用机器人校准:
●过滤现有程序:修改程序内的所有机器人目标,以提高机器人的精度。可以手动完成,也可以使用API完成。
●使用RoboDK for Of2022世界杯8强赛时间fline Programming生成准确的程序(生成的程序已经过滤,包括使用API生成的程序)。
手动过滤现有程序:拖放机器人程序文件到RoboDK的主屏幕(或选择文件➔开放)及选择只过滤器.程序将被过滤并保存在同一文件夹中。过滤器摘要将提到使用过滤算法时是否存在任何问题。如果我们想在RoboDK中模拟它,我们也可以选择导入一个程序。如果程序有任何依赖关系(工具框架或基本框架定义,子程序,…),它们必须位于导入第一个程序的同一目录中。
一旦我们在RoboDK中导入程序,我们就可以完全准确地重新生成它。在RoboDK的主要精度设置中(工具➔选项➔精度)我们可以决定是总是使用精确的运动学生成程序,还是每次都问,还是使用当前的机器人运动学。可以通过右键单击机器人并激活/取消激活“使用精确运动学”标签来更改当前机器人的运动学。如果它是活跃的,我们会看到一个绿点,如果它不是活跃的,我们会看到一个红点。
可以使用RoboDK对给定的校准机器人和使用的机器人程序进行筛选FilterProgram电话:
机器人.FilterProgram(file_program)
一个名为FilterProgram的宏示例可以在库的Macros部分中找到。下面的代码是一个示例Python脚本,使用RoboDK API过滤程序。
从robolink进口*# API与RoboDK通信
从robodk进口*基本矩阵运算
进口操作系统#路径操作
#获取当前工作目录
慢性消耗病=操作系统.路径.目录名(操作系统.路径.realpath(__file__))
#如果RoboDK没有运行,启动它并链接到API
RDK = Robolink()
# optional:提供以下参数在幕后运行
# RDK=Robolink(args='/NOSPLASH /NOSHOW /HIDDEN')
#获取校准站(。理查德·道金斯k file) or robot file (.robot):
#提示:校准后,右键单击一个机器人,选择“保存为。robot”
calibration_file=慢性消耗病+' / KUKA-KR6.rdk '
#获取程序文件:
file_program=慢性消耗病+' / Prog1.src '
#加载RDK文件或robot文件:
calib_item=RDK.AddFile(calibration_file)
如果不calib_item.有效的():
提高异常(“加载时出了问题”+calibration_file)
#检索机器人(如果只有一个机器人则没有弹出窗口):
机器人=RDK.ItemUserPick(“选择一个机器人来过滤”,ITEM_TYPE_ROBOT)
如果不机器人.有效的():
提高异常(“机器人未被选择或不可用”)
#激活精度
机器人.setAccuracyActive(1)
#过滤程序:这将自动保存程序副本
#根据机器人品牌重新命名文件
状态,总结=机器人.FilterProgram(file_program)
如果状态= =0:
打印("程序过滤成功")
打印(总结)
calib_item.删除()
RDK.CloseRoboDK()
其他的:
打印(“程序过滤失败!”错误码:%i"%状态)
打印(总结)
RDK.ShowRoboDK()
下面的代码是一个示例Python脚本,使用RoboDK API过滤目标(姿态目标或联合目标),使用FilterTarget命令:
Pose_filt关节=机器人。FilterTarget(nominal_pose, estimated_joints)
如果是3,这个例子很有用理查德·道金斯party application(除RoboDK外)使用姿态目标生成机器人程序。
从robolink进口*# API与RoboDK通信
从robodk进口*基本矩阵运算
defXYZWPR_2_Pose(xyzwpr):
返回KUKA_2_Pose(xyzwpr)#转换X,Y,Z,A,B,C为一个姿势
defPose_2_XYZWPR(构成):
返回Pose_2_KUKA(构成)#转换一个姿态为X,Y,Z, a,B,C
#启动RoboDK API并检索机器人:
RDK=Robolink()
机器人=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])#定义Ref Frame
#更新机器人TCP和参考帧
机器人.setTool(pose_tcp)
机器人.setFrame(pose_ref)
#对于SolveFK和SolveIK(正/逆运动学)非常重要
机器人.setAccuracyActive(假)#精度可开或关
在关节空间中定义一个标称目标:
关节=[0,0,90,0,90,0]
计算关节目标的名义机器人位置:
pose_rob=机器人.SolveFK(关节)#机器人法兰WRT机器人底座
#计算pose_target:相对于参考系的TCP
pose_target=invH(pose_ref)*pose_rob*pose_tcp
打印(“目标未过滤:”)
打印(Pose_2_XYZWPR(pose_target))
joints_approx=关节# joints_approx必须在20度以内
pose_target_filt,real_joints=机器人.FilterTarget(pose_target,关节)
打印(的目标过滤:)
打印(real_joints.tolist())
打印(Pose_2_XYZWPR(pose_target_filt))