産業用ロボットは再現性が高いが正確ではないため、ロボットのキャリブレーションによって産業用ロボットの精度を向上させることができます。キャリブレーションがない場合、ロボットの精度はロボットのブランドとモデルに大きく依存します。ロボットのキャリブレーションを使用すると、ツールの中心点(TCP)を正確に計算し、ロボットの運動学的パラメータをキャリブレーションできます。ロボットの精度は2倍から10倍に改善できます。
RoboDKを使用して、ロボット、ツールの中心点(TCP)を較正し、正確なロボットプログラムを生成できます。RoboDKは、ロボットの精度をテストするためにも使用できます。
ロボットのキャリブレーションにより、ロボットをオフラインでプログラミングするときのロボットの精度を大幅に向上させることができます(オフラインプログラミング(OLP)とも呼ばれます)。
自動ロボットキャリブレーションソリューションは、ロボットおよびツールの中心点(TCP)を正確にキャリブレーションできます。
1.球形ツール➔ツールの中心が調整されています
2.円錐ツール➔ツールの先端は校正されています
自動ロボットキャリブレーションを実行するには、RoboDK自動キャリブレーションアプリをインストールし、互換性のあるセンサーが必要です。
次のものが必要です。
1.1つ以上の産業用ロボットアーム。
2.互換性のあるダイヤルインジケーター(LVDTまたはリニアゲージとも呼ばれます)。
3.RoboDKソフトウェアをインストールし、自動ロボットキャリブレーション用の適切なライセンスを利用できる必要があります。
4.互換性が必要ですロボットドライバーあなたのロボットコントローラーのために。
5.自動キャリブレーションRoboDKアプリをインストールします。
a.自動キャリブレーション用のRoboDKアプリをダウンロード
b.ファイルをダブルクリックしてRoboDKを開きます
c.ツールを選択➔アプリ自動キャリブレーションをダブルクリックすると、右側に自動キャリブレーションのツールバーとメニューが表示されます。
注意:RoboDKアプリでは、App Loaderプラグインを有効にする必要があります。このプラグインは、rdkpファイルをダブルクリックすると自動的にロードされます。そうでない場合は、ツールでApp Loaderプラグインをロードできます。➔プラグインをロード。
注意: 自動校正メニューとツールバーが自動的に表示される場合があります。ツールを選択して、自動キャリブレーションアプリ(または他のアプリ)を表示または非表示にできます➔アプリ一覧アプリのEnabledタグをダブルクリックします。
リニアゲージセンサーを使用してロボットを較正するには、ロボットをRoboDKにロードし、センサーとロボットが接続されていることを確認する必要があります。オプションで、オブジェクトとツールの3Dモデルを追加して、セルをモデル化できます。これにより、衝突を自動的に回避できます。
1.ロボットをロードします。
a.ファイルを選択➔オンラインライブラリを開く。オンラインライブラリがRoboDKに表示されます。
b.フィルターを使用してロボットを見つけます。
c.RoboDKステーションにロボットを自動的にロードするには、[ダウンロード]を選択します。
d.または、オンラインライブラリからロボットファイルを直接ダウンロードします(https://robodk.com/library)、RoboDKでファイルを開きます(.robotファイル)。
2.センサーを接続します。
a.センサーをコンピューターに接続します。
b.自動校正を選択➔
c.センサーが測定中であり、測定値が安定していることを確認してください。
3.ロボットを接続します。
a.接続を選択➔ロボットを接続する。
b.ロボットのIPとポートを入力します。
c.接続を選択します。
注意:一部のロボットコントローラは、特定のセットアップまたは特定のソフトウェアオプションに従う必要があります。詳細については、ロボットドライバー セクション。
4.ロボット接続パネルから[位置を取得]を選択します。この手順により、RoboDK内のロボットの位置が更新されます。
測定センサーの近くに物体がない場合は、校正手順を開始できます。自動校正を選択するだけ➔
必要に応じて、これらの手順に従って、セルの3D環境を適切にモデル化できます。
1.ツールの3Dモデルを読み込み、RoboDKでツールを作成します。詳細については、ツールセクションを作成する。
2.セルをモデリングする3Dファイルをロードします。3D STEP、IGES、STLファイルをロードできます。入門セクションの詳細情報。
注意:衝突を避けるために、セルを適切にモデル化することを強くお勧めします。
ロボットのキャリブレーションシーケンスが完了すると、キャリブレーション結果を示すグラフが表示されます。RoboDKは、ロボットのキャリブレーションがある場合とない場合のツールの中心点(TCP)を計算します。
1.ロボットキャリブレーションなしのTCP:TCPは、公称のロボット運動学を使用して計算されます。
2.TCPとロボットのキャリブレーション:TCPは、正確なロボット運動学を使用して計算されます。測定値は、ロボットと正確なロボットTCPを調整するために使用されます。この方法では、より正確な結果が得られますが、ロボットのエラーを正確に説明するには、プログラムのフィルタリングが必要です。詳細については、プログラムのフィルタリング セクション。
注意: 自動校正を選択➔校正を開始別のポイントセットでロボットのキャリブレーションシーケンスを再開するには(センサーを移動しないでください)。
注意:自動キャリブレーションメニューのキャリブレーションサマリを選択して、これらの結果を表示することもできます。➔結果を表示する。
キャリブレーションシーケンスを実行したら、いくつかの検証テストを実行できます。これらの検証テストは、センサーの同じ場所または異なる場所で行うことができます。
からTCPの更新を選択します ロボットパネルツールのみをキャリブレーションします。キャリブレーションデータは、TCPの計算に使用されます(ロボットキャリブレーションを除く)。
計算されたTCPが表示され、一部の統計は計算されたTCPの推定エラーを提供します。
選択する
結果に関する要約といくつかの統計を表示するには、「統計の表示」を選択します。これらの統計は、センサーによって検出された平面エラーに対応しています。
注意:自動キャリブレーションメニューから検証結果を選択して、これらの結果を表示することもできます。➔結果を表示する。
から[Update Robot&TCP]を選択します ロボットパネルツールのみをキャリブレーションします。キャリブレーションデータは、TCPの計算に使用されます(ロボットキャリブレーションを除く)。
計算されたTCPが表示されます。一部の統計は、計算されたTCPの推定エラーを提供します。
結果に関する要約といくつかの統計を表示するには、「統計の表示」を選択します。これらの統計は、センサーによって検出された平面エラーに対応しています。
注意:自動キャリブレーションメニューから検証結果を選択して、これらの結果を表示することもできます。➔結果を表示する。
このセクションでは、調整をさらにカスタマイズしてロボットの精度をテストするために変更できる追加の設定とオプションについて説明します。
自動校正を選択➔
キャリブレーションに使用するターゲットをプレビューし、シミュレーションを実行できます。
[データの表示]を選択して、現在の測定値や以前の測定値を表示できます。
自動校正を選択➔校正設定次の画像に示す設定ウィンドウを開きます。
特に、アプローチ速度、アプローチ距離、測定速度を変更できます。
ロボットがキャリブレーションされたら、フィルターされたプログラムを生成するか、キャリブレーションされたロボットパラメーターを考慮して、ロボットキャリブレーションを確実に利用する必要があります。
キャリブレーション後にロボットを正確にプログラムするには、次の方法の1つだけに従う必要があります。
1.RoboDKを使用する オフラインプログラミング正確なプログラムを生成します(生成されたプログラムは既にフィルターされています)。これは、最適な精度の結果を得るために推奨されるオフラインプログラミングオプションです。
2.校正する ロボットコントローラのパラメータ (リンク長、DH-DHMパラメータ、マスタリングパラメータなど)。
3.プログラムのフィルタリング:プログラム内のすべてのロボットターゲットが修正され、ロボットの精度が向上します。
4.ターゲットまたはプログラムのフィルタリング RoboDK APIを使用します。
ロボットがRoboDKで調整されている場合、ロボットを右クリックして[正確な運動学を使用]を選択することにより、正確な運動学をアクティブ化するオプションがあります。
精度がアクティブな場合は緑色のドットが表示され、アクティブでない場合は赤いドットが表示されます。
これは、最適な精度の結果を得るための推奨オプションです。RoboDKでロボットの精度オプションを有効にすると、RoboDKによって生成されたすべてのプログラムが自動的にフィルタリングされます。つまり、ロボットのエラーを補正するために、すべてのデカルト座標がわずかに変更されます。
これは、ロボットをロボット加工に使用したり、NCファイルからロボットをプログラムしたり、RoboDKでサポートされているCAD / CAMプラグインを使用したりする場合に最適なオプションです。
注意: ツールの中心点(TCP)と参照フレームが 校正済み RoboDKで定義されている(フィルタリング前の実際の設定の値と一致)。
ロボットが較正されると、[パラメータ]メニューで較正されたパラメータにアクセスできます。一部のロボットコントローラでは、特定のロボットパラメータを変更できます。
注意:RoboDKはDenatit-Hartenberg Modified規約を使用します。選択/校正されたすべてのパラメータを必ず使用してください。
RoboDKでロボットプログラムをドラッグアンドドロップして、それらをフィルタリングできます(または、ファイル➔開いた)。同じフォルダーに正確なプログラムを自動的に作成するには、[フィルターのみ]を選択します。プログラムがフィルタリングされ、同じフォルダに保存されます。
注意:このオプションは、一部のロボットコントローラとロボットプログラミング言語に限定されています。プログラミングのスタイルも重要です。たとえば、RoboDKは、ジョイントターゲットや、プログラム内で計算されたターゲット(forループなど)をフィルタリングしません。
フィルターの要約では、フィルターアルゴリズムの使用に問題があったかどうかが示されます。RoboDK内でプログラムをシミュレーションする場合は、プログラムをインポートするオプションもあります。プログラムに依存関係(ツールフレームまたはベースフレームの定義、サブプログラムなど)がある場合、それらは最初のプログラムがインポートされるのと同じディレクトリにある必要があります。
RoboDK内にプログラムをインポートすることを選択した場合、絶対的な精度の有無にかかわらず、プログラムを再生成できます。RoboDKの主な精度設定(ツール➔オプション➔正確さ)常に正確なキネマティクスを使用してプログラムを生成するか、毎回確認するか、または現在のロボットキネマティクスを使用するかを選択できます。
前のセクションで説明したように、RoboDK APIを使用して、デカルトターゲットをフィルタリングしたり、プログラムをフィルタリングしたりすることができます。
次のコードは、RoboDK APIを使用してターゲット(ポーズターゲットまたはジョイントターゲット)をフィルタリングするPythonスクリプトの例です。 FilterTarget コマンド:
pose_filt、joints = robot.FilterTarget(nominal_pose、estimated_joints)
この例は、サードパーティアプリケーション(RoboDK以外)がポーズターゲット(デカルトデータ)を使用してロボットプログラムを生成する場合に役立ちます。
注意: 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))
を使用して、キャリブレーションされたロボットとロボットプログラムをトリガーすることができます。 FilterProgram コール:
ロボット。FilterProgram(file_program)
FilterProgramと呼ばれるサンプルスクリプトは、ライブラリのマクロセクションにあります。次のコードは、RoboDK APIを使用してプログラムをフィルタリングするPythonスクリプトの例です。
から ロボリンク インポート * #RoboDKと通信するためのAPI
から Robodk インポート * #基本的な行列演算
インポート os #パス操作
#現在の作業ディレクトリを取得
CWD = os。道。dirname(os。道。リアルパス(__ファイル__))
#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= RDK。AddFile(Calibration_file)
もし ない calib_item。有効():
上げる 例外(「読み込み中に問題が発生しました」 + Calibration_file)
#ロボットを取得します(ロボットが1つだけの場合はポップアップなし):
ロボット = RDK。ItemUserPick(「フィルタリングするロボットを選択してください」、 ITEM_TYPE_ROBOT)
もし ない ロボット。有効():
上げる 例外(「ロボットが選択されていないか、利用できません」)
#精度を有効にする
ロボット。setAccuracyActive(1)
#フィルタープログラム:プログラムのコピーを自動的に保存します
#ロボットのブランドに応じて名前が変更されたファイル
状態、 概要 = ロボット。FilterProgram(file_program)
もし 状態 == 0:
印刷する(「プログラムのフィルタリングに成功しました」)
印刷する(概要)
calib_item。削除する()
RDK。閉じるRoboDK()
そうしないと:
印刷する("プログラムのフィルタリングに失敗しました!エラーコード:%i" % 状態)
印刷する(概要)
RDK。ShowRoboDK()
RoboDKには、参照フレームとツールフレームを調整するためのユーティリティがいくつか用意されています。これらのツールはユーティリティからアクセスできます➔参照フレームの調整とユーティリティ➔ツールフレームの調整それぞれ。
基準フレームまたは自動的に較正されていないツール(それぞれユーザーフレームとTCPとも呼ばれます)を較正するには、3つ以上の点に触れるロボット構成が必要です。これらのロボット構成は、ジョイント値またはデカルト座標(方向データを含む)のいずれかです。ある場合には)。(ロボットの関節をRoboDKのメイン画面にコピーアンドペーストすることにより)RoboDKで実際のロボット構成を確認しやすくなるため、デカルト座標の代わりに関節の値を使用することをお勧めします。
ユーティリティを選択➔校正ツールRoboDKを使用してTCPを調整します。さまざまな方向を使用して、必要な数のポイントを使用できます。より多くのポイントとより大きな方向の変更は、TCPのより良い推定とTCPエラーのより良い推定を得るのでより良いです。
注意: 詳細については、ヒントセクション。
ユーティリティを選択➔リファレンスを校正する参照フレームを較正します。異なる方法を使用して参照フレームを設定することが可能です。図の例では、参照フレームは3つのポイントで定義されています。ポイント1と2はX軸方向を定義し、ポイント3は正のY軸を定義します。
注意:リファレンスフレームのキャリブレーションに関する詳細情報は、ヒントセクション。