程序过滤

机器人校准完成后,我们有不同的方法来使用机器人校准:

过滤现有程序:修改程序内的所有机器人目标,以提高机器人的精度。可以手动完成,也可以使用API完成。

使用RoboDK for Of2022世界杯8强赛时间fline Programming生成准确的程序(生成的程序已经过滤,包括使用API生成的程序)。

手动过滤现有程序:拖放机器人程序文件到RoboDK的主屏幕(或选择文件开放)及选择只过滤器.程序将被过滤并保存在同一文件夹中。过滤器摘要将提到使用过滤算法时是否存在任何问题。如果我们想在RoboDK中模拟它,我们也可以选择导入一个程序。如果程序有任何依赖关系(工具框架或基本框架定义,子程序,…),它们必须位于导入第一个程序的同一目录中。

机器人标定激光跟踪器-图34

机器人标定激光跟踪器-图35

一旦我们在RoboDK中导入程序,我们就可以完全准确地重新生成它。在RoboDK的主要精度设置中(工具选项精度)我们可以决定是总是使用精确的运动学生成程序,还是每次都问,还是使用当前的机器人运动学。可以通过右键单击机器人并激活/取消激活“使用精确运动学”标签来更改当前机器人的运动学。如果它是活跃的,我们会看到一个绿点,如果它不是活跃的,我们会看到一个红点。

机器人标定激光跟踪器-图36

机器人标定激光跟踪器-图37

使用API过滤程序

可以使用RoboDK对给定的校准机器人和使用的机器人程序进行筛选FilterProgram电话:

机器人FilterProgramfile_program

一个名为FilterProgram的宏示例可以在库的Macros部分中找到。下面的代码是一个示例Python脚本,使用RoboDK API过滤程序。

robolink进口# API与RoboDK通信

robodk进口基本矩阵运算

进口操作系统#路径操作

#获取当前工作目录

慢性消耗病操作系统路径目录名操作系统路径realpath__file__))

#如果RoboDK没有运行,启动它并链接到API

RDK = Robolink()

# optional:提供以下参数在幕后运行

# RDKRobolinkargs='/NOSPLASH /NOSHOW /HIDDEN')

#获取校准站(。理查德·道金斯k file) or robot file (.robot):

#提示:校准后,右键单击一个机器人,选择“保存为。robot”

calibration_file慢性消耗病+' / KUKA-KR6.rdk '

#获取程序文件:

file_program慢性消耗病+' / Prog1.src '

#加载RDK文件或robot文件:

calib_itemRDKAddFilecalibration_file

如果calib_item有效的():

提高异常“加载时出了问题”+calibration_file

#检索机器人(如果只有一个机器人则没有弹出窗口):

机器人RDKItemUserPick“选择一个机器人来过滤”ITEM_TYPE_ROBOT

如果机器人有效的():

提高异常“机器人未被选择或不可用”

#激活精度

机器人setAccuracyActive1

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

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

状态总结机器人FilterProgramfile_program

如果状态= =0

打印"程序过滤成功"

打印总结

calib_item删除()

RDKCloseRoboDK()

其他的

打印“程序过滤失败!”错误码:%i"状态

打印总结

RDKShowRoboDK()

使用API过滤目标

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

Pose_filt关节=机器人。FilterTarget(nominal_pose, estimated_joints)

如果是3,这个例子很有用理查德·道金斯party application(除RoboDK外)使用姿态目标生成机器人程序。

robolink进口# API与RoboDK通信

robodk进口基本矩阵运算

defXYZWPR_2_Posexyzwpr):

返回KUKA_2_Posexyzwpr#转换X,Y,Z,A,B,C为一个姿势

defPose_2_XYZWPR构成):

返回Pose_2_KUKA构成#转换一个姿态为X,Y,Z, a,B,C

#启动RoboDK API并检索机器人:

RDKRobolink()

机器人RDKITEM_TYPE_ROBOT

如果机器人有效的():

提高异常“机器人不可用”

pose_tcpXYZWPR_2_Pose([00200000])#定义TCP

pose_refXYZWPR_2_Pose([40000000])#定义Ref Frame

#更新机器人TCP和参考帧

机器人setToolpose_tcp

机器人setFramepose_ref

#对于SolveFK和SolveIK(正/逆运动学)非常重要

机器人setAccuracyActive#精度可开或关

在关节空间中定义一个标称目标:

关节00900900

计算关节目标的名义机器人位置:

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

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

pose_targetinvHpose_ref)*pose_robpose_tcp

打印“目标未过滤:”

打印Pose_2_XYZWPRpose_target))

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

pose_target_filtreal_joints机器人FilterTargetpose_target关节

打印的目标过滤:

打印real_jointstolist())

打印Pose_2_XYZWPRpose_target_filt))