以下代码是一个示例Python脚本,该脚本使用RoboDK API来过滤目标(姿势目标或联合目标), FilterTarget命令:
pose_filt,关节= robot.FilterTarget(nominal_pose,estimated_joints)
如果第三方应用程序(不是RoboDK)使用姿势目标生成机器人程序,则此示例很有用。
注意:如果使用API自动生成程序,则不需要这样做。
从 机器人链接 进口 * #与RoboDK通信的API
从 罗布德克 进口 * #基本矩阵运算
定义 XYZWPR_2_Pose(y):
返回 KUKA_2_Pose(y) #将X,Y,Z,A,B,C转换为姿势
定义 姿势_2_XYZWPR(姿势):
返回 姿势_2_KUKA(姿势) #将姿势转换为X,Y,Z,A,B,C
#启动RoboDK API并检索机械手:
RDK = 机器人链接()
机器人 = 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 = v(pose_ref)*pose_rob*pose_tcp
打印(“目标未过滤:”)
打印(姿势_2_XYZWPR(pose_target))
joints_approx = 关节 #joints_approx必须在20度以内
pose_target_filt, real_joints = 机器人。FilterTarget(pose_target, 关节)
打印(“目标已过滤:”)
打印(real_joints。列出())
打印(姿势_2_XYZWPR(pose_target_filt))