下面的代码是一个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_joints。tolist())
打印(Pose_2_XYZWPR(pose_target_filt))