使用

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