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