次のコードは、RoboDK APIを使用してターゲット(ポーズターゲットまたはジョイントターゲット)をフィルタリングするPythonスクリプトの例です。 FilterTarget コマンド:
pose_filt、joints = robot.FilterTarget(nominal_pose、estimated_joints)
この例は、サードパーティのアプリケーション(RoboDK以外)がポーズターゲットを使用してロボットプログラムを生成する場合に役立ちます。
注意: APIを使用してプログラムが自動的に生成される場合、これは必要ありません。
から ロボリンク インポート * #RoboDKと通信するためのAPI
から Robodk インポート * #基本的な行列演算
デフ XYZWPR_2_Pose(xyzwpr):
返す KUKA_2_Pose(xyzwpr)#X、Y、Z、A、B、Cをポーズに変換
デフ Pose_2_XYZWPR(ポーズ):
返す Pose_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= 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。リストする())
印刷する(Pose_2_XYZWPR(pose_target_filt))