プログラムフィルタリング#

ロボットが較正されたら、較正されたロボットの絶対精度を使用してプログラムを生成するための2つのオプションがあります。

既存のプログラムをフィルタリングする:プログラム内のすべてのロボットターゲットは、ロボットの精度を向上させるために変更されます。手動またはAPIを使用して実行できます。

オフラインプログラミング用のRoboDKを使用して、正確なプログラムを生成します(APIを使用して生成されたプログラムを含め、生成されたプログラムは既にフィルター処理されています)。

既存のプログラムを手動でフィルタリングするには:ロボットプログラムファイルをRoboDKのメイン画面にドラッグアンドドロップします(または[ファイル]を選択します➔開いた)、[フィルターのみ]を選択します。プログラムがフィルタリングされ、同じフォルダに保存されます。フィルターの概要では、フィルターアルゴリズムの使用に問題があったかどうかが示されます。RoboDK内でプログラムをシミュレーションする場合は、プログラムをインポートするオプションもあります。プログラムに依存関係(ツールフレームまたはベースフレームの定義、サブプログラムなど)がある場合、それらは最初のプログラムがインポートされるのと同じディレクトリに配置する必要があります。

Robot Calibration Creaform - 画像 33

Robot Calibration Creaform - 画像 34

RoboDK内にプログラムをインポートしたら、絶対的な精度の有無にかかわらず、プログラムを再生成できます。RoboDKの主な精度設定(ツール➔オプション➔正確さ)常に正確な運動学を使用してプログラムを生成するか、毎回確認するか、または現在のロボット運動学を使用するかを決定できます。現在のロボットの運動学は、ロボットを右クリックして「正確な運動学を使用する」タグをアクティブ化/非アクティブ化することで変更できます。アクティブな場合は緑色のドットが表示され、アクティブでない場合は赤いドットが表示されます。

Robot Calibration Creaform - 画像 35

Robot Calibration Creaform - 画像 36


API#FilterProgAPI-CTでプログラムをフィルタリングする

キャリブレーションされたロボットとロボットプログラムを使用して、RoboDKを使用して完全なプログラムをフィルタリングすることが可能です。 FilterProgram コール:

ロボットFilterProgramfile_program

FilterProgramと呼ばれるマクロの例は、ライブラリのマクロセクションにあります。次のコードは、RoboDK APIを使用してプログラムをフィルタリングするPythonスクリプトの例です。

から ロボリンク インポート * #RoboDKと通信するためのAPI

から Robodk インポート * #基本的な行列演算

インポート os #パス操作

 

#現在の作業ディレクトリを取得

CWD = osdirnameosリアルパス__ファイル__))

 

#RoboDKが実行されていない場合は起動し、APIにリンクします

RDK = Robolink()

#オプション:バックグラウンドで実行する次の引数を指定します

#RDK = ロボリンクargs = '/ NOSPLASH / NOSHOW / HIDDEN')

 

#キャリブレーションされたステーション(.rdkファイル)またはロボットファイル(.robot)を取得します。

#ヒント:キャリブレーション後、ロボットを右クリックして[.robotとして保存]を選択します

Calibration_file= CWD + '/KUKA-KR6.rdk'

 

#プログラムファイルを取得します。

file_program= CWD + '/Prog1.src'

 

#RDKファイルまたはロボットファイルをロードします。

calib_item= RDKAddFileCalibration_file

もし ない calib_item有効():

 上げる 例外「読み込み中に問題が発生しました」 + Calibration_file

 

#ロボットを取得します(ロボットが1つだけの場合はポップアップなし):

ロボット = RDKItemUserPick「フィルタリングするロボットを選択してください」 ITEM_TYPE_ROBOT

もし ない ロボット有効():

 上げる 例外「ロボットが選択されていないか、利用できません」

 

#精度を有効にする

ロボットsetAccuracyActive1

#フィルタープログラム:プログラムのコピーを自動的に保存します

#ロボットのブランドに応じて名前が変更されたファイル

状態 概要 = ロボットFilterProgramfile_program

 

もし 状態 == 0

 印刷する(「プログラムのフィルタリングに成功しました」

 印刷する(概要

 calib_item削除する()

 RDK閉じるRoboDK()

そうしないと:

 印刷する("プログラムのフィルタリングに失敗しました!エラーコード:%i" 状態

 印刷する(概要

 RDKShowRoboDK()

APIを使用してターゲットをフィルターする#FilterTargetAPI-CT

次のコードは、RoboDK APIを使用してターゲット(ポーズターゲットまたはジョイントターゲット)をフィルタリングするPythonスクリプトの例です。 FilterTarget コマンド:

pose_filt、joints = robot.FilterTarget(nominal_pose、estimated_joints)

この例は、サードパーティのアプリケーション(RoboDK以外)がポーズターゲットを使用してロボットプログラムを生成する場合に役立ちます。

注意: APIを使用してプログラムが自動的に生成される場合、これは必要ありません。

から ロボリンク インポート * #RoboDKと通信するためのAPI

から Robodk インポート * #基本的な行列演算

 

デフ XYZWPR_2_Posexyzwpr):

 返す KUKA_2_Posexyzwpr#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と参照フレームを更新する

ロボットsetToolpose_tcp

ロボットsetFramepose_ref

 

#SolveFKとSolveIK(フォワード/インバースキネマティクス)で非常に重要

ロボットsetAccuracyActive(誤り) #精度はオンまたはオフにできます

 

#ジョイントスペースに公称ターゲットを定義します。

関節 = [0 0 90 0 90 0]

 

#ジョイントターゲットのロボットの公称位置を計算します。

pose_rob= ロボットSolveFK関節#ロボットベースのロボットフランジ

 

#pose_targetの計算:参照フレームに対するTCP

pose_target= invHpose_ref)*pose_rob*pose_tcp

 

印刷する('フィルターされていないターゲット:'

印刷する(Pose_2_XYZWPRpose_target))

 

joints_approx= 関節 #joints_approxは20度以内でなければなりません

pose_target_filt real_joints = ロボットFilterTargetpose_target 関節

印刷する(「フィルターされたターゲット:」

印刷する(real_jointsリストする())

印刷する(Pose_2_XYZWPRpose_target_filt))