使用API筛选目标

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