一旦机器人校准,我们有不同的方式使用机器人校准:
●现有程序过滤:所有机器人目标在一个程序被修改来提高机器人的精度。这是可以做到的手动或使用API。
●使用RoboDK离线编程生成准raybet雷竞app下载确的项目(生成的程序已经过滤,包括程序使用API生成)。
现有程序手动过滤:拖动&把机器人程序文件塞进RoboDK的主屏幕(或选择文件➔开放),并选择只过滤器。该计划将被过滤和保存在同一文件夹中。过滤摘要会提到如果有任何问题使用滤波算法。我们也可以选择导入一个项目如果我们想模拟RoboDK内部。如果程序有任何依赖项(工具框架或基础构架定义、子…)他们必须位于同一个目录中,第一个项目是进口的。
一旦我们导入程序内部RoboDK我们可以再生有或没有绝对的准确性。在主RoboDK精度设置(工具➔选项➔精度)我们总是可以决定如果我们想生成程序使用精确的运动学,如果我们每次都想问或如果我们想使用当前机器人运动学。当前机器人运动学可以改变机器人处于待发状态和激活/,点击“使用精确运动学”标签。如果它是活跃的,我们将看到一个绿点,如果它是不活跃的,我们将看到一个红点。
可以使用RoboDK过滤一个完整的程序给定一个校准机器人和机器人程序使用FilterProgram电话:
机器人。FilterProgram(file_program)
宏的例子叫做FilterProgram宏中可用的库。下面的代码是一个Python脚本,该脚本使用RoboDK API来过滤程序。
从robolink进口*# API与RoboDK沟通
从robodk进口*#基本矩阵运算
进口操作系统#路径操作
#获取当前工作目录
慢性消耗病=操作系统。路径。目录名(操作系统。路径。realpath(__file__))
#开始RoboDK如果不是运行并链接到API
RDK = Robolink ()
可选:在幕后提供以下参数运行
# RDK=Robolink(args = / NOSPLASH / NOSHOW /隐藏)
#获取校准站(。理查德·道金斯k file) or robot file (.robot):
#提示:校准后,右键单击一个机器人,并选择“保存为.robot”
calibration_file=慢性消耗病+' / KUKA-KR6.rdk '
#获取程序文件:
file_program=慢性消耗病+' / Prog1.src '
#加载RDK文件或机器人文件:
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()
其他的:
打印(“程序过滤失败!错误代码:%我”%状态)
打印(总结)
RDK。ShowRoboDK()
下面的代码是一个Python脚本,该脚本使用RoboDK API来过滤目标(构成目标或共同目标),使用FilterTarget命令:
pose_filt关节=机器人。FilterTarget(nominal_pose, estimated_joints)
这个例子是有用的,如果一个3理查德·道金斯方应用程序(除了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])#定义参考帧
#更新机器人TCP和参照系
机器人。setTool(pose_tcp)
机器人。setFrame(pose_ref)
对SolveFK #非常重要和SolveIK(正向/逆向运动学)
机器人。setAccuracyActive(假)#精度可以打开或关闭
#在关节空间中定义一个名义上的目标:
关节=(0,0,90年,0,90年,0]
#计算名义机器人位置的共同目标:
pose_rob=机器人。SolveFK(关节)#机器人法兰关于机器人基地
#计算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))