程序过滤

一旦机器人被校准,我们有两种选择来生成程序,使用校准机器人的绝对精度:

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

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

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

机器人校准Creaform -图片36

机器人校准Creaform -图片37

一旦我们在RoboDK内导入程序,我们可以再生它与或没有绝对的准确性。在RoboDK的主要精度设置(工具选项精度),我们可以决定是否要始终使用精确的运动学来生成程序,如果我们想每次都问,或者如果我们想使用当前的机器人运动学。可以通过右键单击机器人并激活/取消激活“使用精确的运动学”标签来改变当前机器人的运动学。如果它是活动的,我们会看到一个绿点,如果它不是活动的,我们会看到一个红点。

机器人校准Creaform -图片38

机器人校准Creaform -图片39


使用API筛选程序

这是可能的过滤一个完整的程序使用RoboDK给定的校准机器人和机器人程序使用FilterProgram电话:

机器人FilterProgramfile_program

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

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

# Filter program:这将自动保存一个程序副本

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

状态总结机器人FilterProgramfile_program

如果状态= =0

打印"程序过滤成功"

打印总结

calib_item删除()

RDKCloseRoboDK()

其他的

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

打印总结

RDKShowRoboDK()

使用API筛选目标

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

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

如果是3,这个例子很有用理查德·道金斯party应用程序(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精度可以是ON或OFF

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

关节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))