一旦机器人被校准,我们有两种选择来生成程序,使用校准机器人的绝对精度:
●过滤现有程序:对程序内的所有机器人目标进行修改,以提高机器人的精度。它可以手动完成,也可以使用API。
●使用RoboDK for Of2022世界杯8强赛时间fline Programming生成准确的程序(生成的程序已经过过滤,包括使用API生成的程序)。
手动过滤现有程序:拖放机器人程序文件到RoboDK的主屏幕(或选择文件➔开放),然后选择只过滤器。程序将被过滤并保存在同一文件夹中。如果使用过滤算法有任何问题,过滤器摘要将会提到。如果我们想在RoboDK中模拟它,我们也可以选择导入一个程序。如果程序有任何依赖项(工具框架或基本框架定义,子程序,…),它们必须位于导入第一个程序的同一目录中。
一旦我们在RoboDK内导入程序,我们可以再生它与或没有绝对的准确性。在RoboDK的主要精度设置(工具➔选项➔精度),我们可以决定是否要始终使用精确的运动学来生成程序,如果我们想每次都问,或者如果我们想使用当前的机器人运动学。可以通过右键单击机器人并激活/取消激活“使用精确的运动学”标签来改变当前机器人的运动学。如果它是活动的,我们会看到一个绿点,如果它不是活动的,我们会看到一个红点。
这是可能的过滤一个完整的程序使用RoboDK给定的校准机器人和机器人程序使用FilterProgram电话:
机器人。FilterProgram(file_program)
在库的宏部分中有一个名为FilterProgram的宏示例。以下代码是使用RoboDK API过滤程序的示例Python脚本。
从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)
# Filter program:这将自动保存一个程序副本
#根据机器人品牌重命名文件
状态,总结=机器人。FilterProgram(file_program)
如果状态= =0:
打印("程序过滤成功")
打印(总结)
calib_item。删除()
RDK。CloseRoboDK()
其他的:
打印(“程序过滤失败!”错误码:%i"%状态)
打印(总结)
RDK。ShowRoboDK()
下面的代码是一个示例Python脚本,它使用RoboDK API过滤目标(姿势目标或关节目标),使用FilterTarget命令:
Pose_filt,关节=机器人。FilterTarget(nominal_pose, estimated_joints)
如果是3,这个例子很有用理查德·道金斯party应用程序(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(假)精度可以是ON或OFF
在关节空间中定义一个标称目标:
关节=[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))