程序过滤

一旦机器人校准,我们有不同的方式使用机器人校准:

现有程序过滤:所有机器人目标在一个程序被修改来提高机器人的精度。这是可以做到的手动或使用API。

使用RoboDK离线编程生成准raybet雷竞app下载确的项目(生成的程序已经过滤,包括程序使用API生成)。

现有程序手动过滤:拖动&把机器人程序文件塞进RoboDK的主屏幕(或选择文件开放),并选择只过滤器。该计划将被过滤和保存在同一文件夹中。过滤摘要会提到如果有任何问题使用滤波算法。我们也可以选择导入一个项目如果我们想模拟RoboDK内部。如果程序有任何依赖项(工具框架或基础构架定义、子…)他们必须位于同一个目录中,第一个项目是进口的。

机器人标定LaserTracker 34 -图像

机器人标定LaserTracker 35 -图像

一旦我们导入程序内部RoboDK我们可以再生有或没有绝对的准确性。在主RoboDK精度设置(工具选项精度)我们总是可以决定如果我们想生成程序使用精确的运动学,如果我们每次都想问或如果我们想使用当前机器人运动学。当前机器人运动学可以改变机器人处于待发状态和激活/,点击“使用精确运动学”标签。如果它是活跃的,我们将看到一个绿点,如果它是不活跃的,我们将看到一个红点。

机器人标定LaserTracker - 36

机器人标定LaserTracker - 37

过滤程序使用API

可以使用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=RDKAddFile(calibration_file)

如果calib_item有效的():

提高异常(“加载”出现了错误+calibration_file)

#获取机器人(没有弹出如果只有一个机器人):

机器人=RDKItemUserPick(“选择一个机器人过滤”,ITEM_TYPE_ROBOT)

如果机器人有效的():

提高异常(“机器人不选中或者不可用”)

#激活准确性

机器人setAccuracyActive(1)

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

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

状态,总结=机器人FilterProgram(file_program)

如果状态= =0:

打印(“程序过滤成功”)

打印(总结)

calib_item删除()

RDKCloseRoboDK()

其他的:

打印(“程序过滤失败!错误代码:%我”%状态)

打印(总结)

RDKShowRoboDK()

过滤目标使用API

下面的代码是一个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_jointstolist())

打印(Pose_2_XYZWPR(pose_target_filt))


Baidu
map