産業用ロボットは再現性が高いが正確ではないため、ロボットのキャリブレーションによって産業用ロボットの精度を向上させることができます。ロボットの公称精度は、ロボットのブランドとモデルによって異なります。ロボットのキャリブレーションにより、ロボットの精度を2〜10倍向上させることができます。
オプションで、ボールバーテスト(循環テスト)またはISO9283 パス精度テストを実行して、ロボットの精度をすばやく検証できます。
ロボットのキャリブレーションには測定システムが必要です。RoboDKを使用して、ロボットを調整したり、正確なロボットプログラムを生成したりできます(これには、プログラムのフィルタリングやRoboDKのオフラインプログラミングエンジンの使用が含まれます)。RoboDKは、ボールバーテストまたはロボットミリングによるキャリブレーションの前後にロボットの精度をテストするためにも使用できます。
ロボットのキャリブレーションは、オフラインプログラミング(オフラインプログラミング(OLP)とも呼ばれます)のロボットの精度を著しく向上させることができます。キャリブレーションされたロボットは、キャリブレーションされていないロボットよりも絶対および相対位置決め精度が高くなります。
注意:より一般的な情報をご覧ください https://www.robodk.com/robot-calibration#tab-ct
RoboDKをインストールしてロボットのキャリブレーションを適切に実行するには、次のアイテムが必要です。
1.1つ以上の産業用ロボットアーム
2.測定システム:Leica、API、Faroなどのレーザートラッカー、またはCreaformのC-Trackステレオカメラなどの光学CMM
3.RoboDKソフトウェアをインストールする必要があり、ロボットのキャリブレーションテストに適切なライセンスが必要です。ネットワークライセンスの場合、ライセンスを確認するにはインターネット接続が必要です。ロボットのキャリブレーション用にRoboDKをインストールまたは更新するには:
a.ダウンロードセクションからRoboDKをダウンロード
https://robodk.com/download
b.測定システムのドライバーをセットアップします(Creaform Optical CMMには必要ありません)。
適切なフォルダを解凍してコピーします。
APIレーザートラッカー: https://robodk.com/downloads/private/API.zip(OTIIおよびラジアントラッカー)
ファロレーザートラッカー: https://robodk.com/downloads/private/Faro.zip(すべてのFaroトラッカー)
ライカレーザートラッカー: https://robodk.com/downloads/private/Leica.zip(すべてのライカトラッカー)
フォルダ:C:/ RoboDK / api /
測定を開始する前に、RoboDKでロボット設定の仮想環境(オフライン設定)を作成することをお勧めします。このセクションでは、RoboDKステーションをオフラインで準備する方法について説明します。これは、RoboDKがインストールされているコンピューターを使用する場合にのみ、ロボットとトラッカーを使用する前に実行できます。
RoboDKキャリブレーション設定の例は、次のフォルダーからダウンロードできます。
https://www.robodk.com/downloads/calibration/
すでにオフラインのセルがある場合は、このセクションをスキップしてください。参照フレームとツールフレームは概算できます。サンプルステーションを次の図に示します。
注:入門セクションでは、新しいRoboDKステーションの作成について詳しく説明します。
RoboDKステーションには、仮想環境ステーションとキャリブレーション情報が保存されます。ステーションはRDKファイルとして保存されます。次の手順に従って、ロボットキャリブレーション用のロボットステーションを最初から作成します(ビデオプレビュー:https://youtu.be/Nkb9uDamFb4):
1.ロボットを選択します。
a.ファイルを選択➔オンラインライブラリを開く。オンラインライブラリがRoboDKに表示されます。
b.フィルターを使用して、ロボットをブランド、ペイロードなどで検索します...
c.[ダウンロード]を選択すると、ロボットがステーションに自動的に表示されます。
d.または、ロボットファイル(.robotファイル拡張子)を個別にダウンロードします。http://www.robodk.com/library RoboDKで開きます。
2.仮想ステーションをモデル化する
a.プログラムを選択して参照フレームを追加する➔参照フレームを追加。
i.ロボットのベースフレームに対して1つの「測定基準」フレームを追加する必要があります。
ii.追加したばかりの「測定値リファレンス」に対して「トラッカーリファレンス」を1つ追加する必要があります。
iii.「Measurements reference」フレームに対して「Tool reference」を1つ追加して、トラッカーから見たツールの位置を視覚化できます。
ヒント1:ツリーにアイテムをドラッグアンドドロップして、現実の世界に存在する依存関係を再構築します。たとえば、トラッカー参照は、「測定参照」に対して配置する必要があります。
ヒント2:AltキーとShift + Altキーをそれぞれ押し続けると、参照フレームまたはツールフレームをほぼ移動できます。または、参照フレームをダブルクリックして、正しい座標を入力することもできます。
ヒント3:アイテムツリーのF2キーを使用してオブジェクトの名前を変更します。
b.ツールオブジェクト(STL、IGESおよびSTEPファイルはサポートされている形式)を追加し、それをロボット(アイテムツリー内)にドラッグアンドドロップします。これにより、オブジェクトがツールに変換されます。利用可能な詳細情報ここに。
➔
オプション:プログラムを選択➔空のツールを追加ステーションで可視化したいTCPを追加します(衝突などをチェックするため)。TCPのおおよその値を設定するには:
i.新しいツールをダブルクリックします。
ii.おおよそのTCP値を設定します。右側の2つのボタンを使用して、6つの値を一度にコピーして貼り付けることができます。
iii.キャリブレーションに使用されるTCPの名前を「CalibTool id」という名前に変更することをお勧めします。ここで、idはキャリブレーションターゲット番号です。
c.他の3D CADファイル(STL、IGES、STEP、SLDなど)を追加して、メニューファイルを使用して仮想ステーションをモデリングします。➔開いた…または、ファイルをRoboDKのメインウィンドウにドラッグアンドドロップします。
ヒント1:ロボットの測定値がトラッカーのワークスペース内に生成されるように、測定ワークスペースの3Dファイルをインポートし、Workspaceという名前を付けます。または、トラッカーワークスペース内の測定値を制限したくない場合は、ワークスペースを非表示に設定します。詳細については、次のセクションを参照してください。
ヒント2:Ctrl + Alt + Shift + Pを選択して、RoboDKにインポートされた機密の3Dファイルのエクスポートをブロックすることができます。
3.ステーションにキャリブレーションモジュールを追加します。
a.メニューユーティリティを選択します➔ロボットの調整。
b.[ステレオカメラ]を選択します。
すると、次のウィンドウが表示されます。
このウィンドウは今のところ閉じることができます。ロボットキャリブレーションステーションのアイテムをダブルクリックすることで、いつでも開くことができます。
4.ステーションを保存します。
a.ファイルを選択➔ステーションを保存。
b.フォルダーとファイル名を指定します。
c.保存を選択します。新しいRDKファイルが生成されます(RoboDKステーションファイル)。
RDKファイルを開くことで、ステーションの変更をいつでも回復できます(Windowsではファイルをダブルクリックします)。
要約すると、次の点を再確認することが重要です。
1.基準フレーム「測定基準」は、ロボットベースの基準フレームに直接取り付けられています。
ここでは、この参照フレームの推定値(概算値)を使用できます。
2.Tracker参照はMeasurements参照に直接接続されます。トラッカー参照は、測定参照に対するトラッカー測定デバイスの推定位置でなければなりません。
3.「ロボットキャリブレーション」プロジェクトがステーションに存在し、計画しているすべての測定は衝突がなく、トラッカーで表示されます(キャリブレーション設定をダブルクリックし、4つの測定グループの各グループの表示を選択します)。
4.衝突を自動的にチェックしたい場合は、衝突のチェックに使用するすべてのオブジェクトで名前タグ「collision」を使用する必要があります。衝突を安全に回避するために、キャリブレーション済みのツールより約25%大きいツールを使用することをお勧めします。
ロボットのキャリブレーションを正常に実行するために必要な測定セットは4つあります。
1.基本セットアップ:ロボットに対して校正基準を配置するには、6つ(またはそれ以上)の移動軸1および2が必要です。キャリブレーション設定ウィンドウで[表示]を選択すると、ロボットがシーケンスに沿って移動します。
2.ツールのセットアップ:ツールフランジとツールターゲット(移動軸5および6)を校正するには、7回以上の測定が必要です。[表示]を選択すると、ロボットがシーケンスに沿って移動します。
3.校正測定:ロボットのキャリブレーションには60回以上の測定が必要です。これらの測定値は、ロボットのワークスペースにランダムに配置でき、周囲のオブジェクトとの衝突がありません。
4.検証測定(オプション):ロボットの精度を検証するために、必要なだけの測定を使用できます。これらの測定値は、ロボットの精度を検証するためにのみ使用され、ロボットのキャリブレーションには使用されません。
最初の2つの測定セットは、RoboDKによって自動的に生成されます。[表示]を選択すると、ロボットはシーケンスに従います(次の図に示すとおり)。シーケンスを変更する必要がある場合は、[測定]を選択し、[データのエクスポート]を選択して、キャリブレーション測定をCSVファイルとしてエクスポートします。このファイルは、Excelシートを使用して編集し、[データのインポート]をクリックして再インポートできます。
最後の2つの測定セット(キャリブレーションと検証)は、「測定値を作成します。このマクロスクリプトは、ロボットのキャリブレーションプロジェクトを開始すると、ステーションに自動的に追加されます。マクロをダブルクリックして実行します。このマクロは、ユーザーに次の設定を定義するように案内するPythonプログラムです。
●測定数:生成する測定の数。ロボットのキャリブレーションには最低60回の測定が必要なため、デフォルトでは80回の測定が使用されます。
●参照位置:参照位置は、ターゲットが表示されているツールがトラッカーに面しているロボットの位置である必要があります。
●ジョイント制限:ジョイントの下限と上限を指定する必要があります。
●デカルトの制限:ロボットの参照フレームに関してデカルトの制限(X、Y、Z値)を提供できます。
スクリプトは、ツールがトラッカーに面している場所で測定値を自動的に生成し、関節とデカルトの制約を尊重します。ツールを中心とした+/- 180度の回転は、参照位置でトラッカーに面する方向を中心に許可されます。さらに、関節の動きのシーケンスは、衝突がなく、測定ワークスペース内にあります(ワークスペースが表示されるように設定されている場合)。次の画像は、自動シーケンスが開始する前にユーザーに表示される概要を示しています。シーケンスが完了するまでに最大5分かかる場合があります。
アルゴリズムが完了すると、新しいメッセージがポップアップします。60の測定値をロボットのキャリブレーションに使用するには、[キャリブレーション]を選択します。同じスクリプトを再実行して、検証用の別の測定セットを生成できます。このステップはオプションですが、検証のために60回以上の測定が推奨されます。
必要に応じて、[測定の作成]スクリプトを右クリックして[スクリプトの編集]を選択することにより、スクリプトを変更してから、アルゴリズムの追加パラメーターを変更できます。スクリプトは、ユーザー入力をステーションパラメータとして自動的に保存します。次の画像に示すように、ステーションを右クリックしてステーションパラメータを選択することにより、これらの設定を表示、編集、または削除できます。
最後に、[メジャー]メニュー内の[データのインポート]を選択して、手動で選択した構成をインポートすることもできます。CSVまたはTXTファイルをNx6マトリックスとしてインポートできます。ここで、Nは構成の数です。
2つのオブジェクトが必要です。ツールオブジェクト(ロボットが保持)とベース参照オブジェクト(セル内で静的)です。トラッカーは、各測定のツールオブジェクトと基本参照オブジェクトを表示できる必要があります。これらのオブジェクトは「モデル」(VXelements)とも呼ばれ、ツールと参照フレームオブジェクトにアタッチされた一連のターゲットによって定義されます。トラッカーは、これらのターゲットの位置を追跡し、トラッカーに対する測定としてこれらのオブジェクトの参照フレームを提供します。RoboDKは、各測定値を基本参照フレームに対するツールの位置として取得するため、測定値を変更せずにトラッカーを移動できます。
これらのオブジェクトを適切に追跡できるようにするには、ターゲットのグループをツールと参照フレームにそれぞれアタッチする必要があります。次の画像は、適切な設定の例をいくつか示しています。
次のサブセクションは、測定を開始する準備ができるように、順次実行する必要があります。最後に、測定を行う手順を自動化するために、トラッカーとロボットをコンピューターに接続する必要があります。
最初に、2つのモデルが必要です。1つはツールのモデル、もう1つは基本参照フレームのモデルです。1つのモデルは、モデル参照(ツールまたはベース参照フレーム)に関するターゲットに対応する点(X、Y、Z座標)のリストとして定義された1つのオブジェクトです。オプションで、HandyProbeを使用して、参照フレームを必要な場所に配置できます。
ツールとベースモデルを定義するには、次の手順を2回実行する必要があります。
1.VXelementsを起動し、トラッカーを接続します。必要に応じて、トラッカーとHandyProbeを調整します。
2.VXelementsの左側のツリーから[トラッキングモデル]を選択し、[モデルの検出]を選択します。モデル(ツールまたはオブジェクト)に対応するターゲットを選択し、「承認」を選択します。
ヒント:Ctrlキーを押しながらターゲットのグループを選択します。
3.オブジェクトの参照フレームは、オブジェクトの特定の特徴に対して特定の位置に配置できます。このステップはオプションですが、ロボットフランジに対してTCPフィーチャーを正確に配置する必要がある場合は強くお勧めします。たとえば、スピンドル軸として使用される参照円柱に沿ってツールのZ軸を正確に配置できます。
オブジェクトの参照フレームを適切に移動するには、HandyProbeを使用して、これらの機能を仮想VXelementsセッションに組み込む必要があります。使用されているモデルは、このモデルに関してフィーチャがプローブされるように、位置決めモデルとして定義する必要があります。ポイント、ライン、プレーン、シリンダー、コーンを調査し、これらのフィーチャーに関して参照フレームを定義することができます。
完了したら、モデルをtxtファイルとしてエクスポートできます。テキストファイル内のターゲットは、XYZポイントのリストとして表示されます。
注意:追跡されるオブジェクトが非常に複雑な場合は、MaxShotデバイスまたは写真測量サービスを使用して、オブジェクトモデルを適切に定義できます。この手順により、より正確な結果が得られる場合があります。
RoboDKで通信を適切に設定するには、トラッカーのIPが必要です。VXelementsが実行されていないことを確認し、次の手順に従ってトラッカーとの通信を確認します。
a.メニューの「接続➔ステレオカメラを接続してください。」新しいウィンドウが開きます。
b.「ベースモデル」と「ツールモデル」をテキストファイルとして入力します(前のセクションで生成)。これらは、それぞれ基準フレームとツールフレームを定義するターゲットの位置です。
c.「接続」ボタンを選択します。
d.接続が成功したら、BaseモデルとToolモデルをテキストファイル(.txt)として提供する必要があります。
VXelementsの統合バージョンが開始し、数秒後、接続が成功した場合は「準備完了」を示す緑色のメッセージが表示されます。VXelementsウィンドウを閉じることができ、接続はアクティブなままになります。接続が成功しない場合は、Windowsタスクバーまたはタスクマネージャー(CTRL + ALT + DELを選択して「VXelementsApiImplementation」プロセスを強制的に停止する)の背後でVXelementsプロセスが実行されていないことを確認してから、[接続]を選択します。 RoboDKを再試行してください。
RoboDKとの通信を適切に設定するには、ロボットのIP(またはRS232接続のCOMポート番号)が必要です。次の手順に従って、ロボットとの通信を確認します。
1.接続を選択➔ロボットを接続する。新しいウィンドウが表示されます。
2.ロボットのIPおよびポートを設定します(RS232経由の場合はCOMポート)。
3.[接続]ボタンをクリックします。
4.問題が発生した場合は、付録を参照してください。
注意:詳細については、プログラムセクション。
接続が成功すると、準備完了を示す緑色のメッセージが表示されます。[現在のジョイントを取得]を選択した場合、仮想ロボットの位置は実際のロボットの位置と正確に一致する必要があります。または、[現在の関節に移動]を選択して、シミュレーターで設定された現在の位置にロボットを移動します。ウィンドウを閉じることができ、接続はアクティブなままになります。
ロボットのキャリブレーションは4つのステップに分かれています。各ステップでは、一連の測定を行う必要があります。次の4つの手順を順番に実行する必要があります。
1.基本参照測定(3分)。
2.ツールリファレンス測定(3分)
3.キャリブレーション測定(7分、60測定)
4.検証測定(7分、60測定)。
次のビデオは、このキャリブレーションを20分で実行する方法を示しています。 https://youtu.be/Htpx-p7tmYs。検証測定(ステップ4)はロボットのキャリブレーションに必須ではありませんが、精度結果の客観的な観点を提供します。ある領域でのロボットのキャリブレーションと別の領域での検証の影響を確認することもできます。
4つの測定セットのそれぞれに対して[測定]ボタンを選択します。これにより新しいウィンドウが開き、既存の測定値をテキストファイル(csvまたはtxt形式)にインポートおよびエクスポートできます。
これらの測定は、6つの測定すべてで同じターゲットを測定する場合、ツールフランジの任意の場所で実行できます。測定を開始するには、[基本設定]セクションで[測定]を選択します。次のウィンドウが開きます。次に、[測定開始]を選択すると、ロボットはスケジュールされた測定を順に実行します。
測定が完了したらウィンドウを閉じます。測定基準フレームがロボットのベースフレームに対して更新されます。参照フレームを選択しなかった場合は、参照を追加できます(プログラムを選択します➔参照フレームを追加)をロボットのベース参照の下に配置します(アイテムツリーのドラッグアンドドロップ)。
概要には、位置と方向、またはキャリブレーション参照フレームに対するロボット参照フレーム([x、y、z、w、p、r]形式、mmおよびラジアン)が表示されます
この手順が完了すると、RoboDKのロボットに関するトラッカーのワークスペースをリアルタイムで正確に表示できます。
前のセクションと同様に、[ツールセットアップ]セクションで[測定]を選択します。次のウィンドウが開きます。[測定を開始]を選択すると、ロボットは計画された測定を順に実行します。測定をダブルクリックして、その位置から測定を続行します。
手順が完了すると、要約にキャリブレーションされたTCP(位置と方向)が表示されます。TCPの定義(次の画像「スピンドル」)は自動的に更新されます。TCPを選択しなかった場合は、新しいTCPを追加できます(「プログラム➔空のツールを追加」)、「再計算」を選択します。
キャリブレーションセクションで測定を選択します。次のウィンドウが開きます。次に、[測定開始]を選択すると、ロボットは計画された測定を順に実行します。測定をダブルクリックして、その位置から測定を続行します。
測定が完了したらウィンドウを閉じます。ロボットは自動的に調整され、問題がなければ次のメッセージが表示されます。
最後に、緑色の画面には、キャリブレーション測定に関する統計と、それらの測定の精度がどの程度向上するかが表示されます。
ロボットのキャリブレーションに使用したのと同じ測定値を使用してロボットの精度を検証するべきではないため、精度を検証するために追加の測定を行うことをお勧めします(精度結果のより客観的な観点を持ちます)。
検証測定を行うには、同じ校正手順に従う必要があります。概要には、検証統計が表示されます。次を参照してください結果セクション詳細については。
キャリブレーションが完了すると、RoboDKによって提供される統計を読み取ることにより、精度の向上を分析できます。これらの統計を表示するには、ロボットキャリブレーションウィンドウを開きます(ロボットキャリブレーションアイコンをダブルクリックします)。検証セクションの概要ウィンドウには、キャリブレーション前(公称キネマティクス)とキャリブレーション後(キャリブレーションされたキネマティクス)のエラーが表示されます。2つのテーブルが提供されます。1つは位置エラーに関する統計を示し、もう1つは距離エラーを示します。
●位置誤差:位置誤差は、ロボットが参照フレームに対して1点を達成できる精度です。
●距離誤差:距離誤差は、ポイントのペアの距離誤差を測定することによって取得されます。ロボットが認識する2点間の距離(キャリブレーションされた運動学を使用して取得)は、測定システムが認識する距離(物理的に測定)と比較されます。すべての組み合わせが考慮されます。315回測定した場合、315x315 / 2 = 49455の距離エラー値になります。
提供される統計は、平均誤差、標準偏差(std)、および最大誤差です。また、平均に標準偏差の3倍を加えた値も提供されます。これは、すべての測定値の99.98%の予想誤差に対応します(誤差が正規分布に従うことを考慮した場合)。
[統計を表示]を選択すると、キャリブレーションの前後の誤差の分布が2つのヒストグラムに表示されます。1つは位置精度のヒストグラム、もう1つは距離精度を示します。次の画像は、この例で使用されている315の検証測定に対応しています。
最後に、「レポートを作成」を選択すると、このセクションに提示された情報を含むPDFレポートが生成されます。
ロボットが較正されたら、較正されたロボットの絶対精度を使用してプログラムを生成するための2つのオプションがあります。
●既存のプログラムをフィルタリングする:プログラム内のすべてのロボットターゲットは、ロボットの精度を向上させるために変更されます。手動またはAPIを使用して実行できます。
●オフラインプログラミング用のRoboDKを使用して、正確なプログラムを生成します(APIを使用して生成されたプログラムを含め、生成されたプログラムは既にフィルター処理されています)。
既存のプログラムを手動でフィルタリングするには:ロボットプログラムファイルをRoboDKのメイン画面にドラッグアンドドロップします(または[ファイル]を選択します➔開いた)、[フィルターのみ]を選択します。プログラムがフィルタリングされ、同じフォルダに保存されます。フィルターの概要では、フィルターアルゴリズムの使用に問題があったかどうかが示されます。RoboDK内でプログラムをシミュレーションする場合は、プログラムをインポートするオプションもあります。プログラムに依存関係(ツールフレームまたはベースフレームの定義、サブプログラムなど)がある場合、それらは最初のプログラムがインポートされるのと同じディレクトリに配置する必要があります。
RoboDK内にプログラムをインポートしたら、絶対的な精度の有無にかかわらず、プログラムを再生成できます。RoboDKの主な精度設定(ツール➔オプション➔正確さ)常に正確な運動学を使用してプログラムを生成するか、毎回確認するか、または現在のロボット運動学を使用するかを決定できます。現在のロボットの運動学は、ロボットを右クリックして「正確な運動学を使用する」タグをアクティブ化/非アクティブ化することで変更できます。アクティブな場合は緑色のドットが表示され、アクティブでない場合は赤いドットが表示されます。
キャリブレーションされたロボットとロボットプログラムを使用して、RoboDKを使用して完全なプログラムをフィルタリングすることが可能です。 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 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))
ロボットのキャリブレーションが完了すると、通常はプログラムをフィルタリングするためにRoboDKが必要になるため、RoboDKライセンスが必要です(ロボットがキャリブレーションされたら、基本的なOLPライセンスで正確なロボットプログラムを生成できます)。プログラムをフィルタリングするとは、すべてのキャリブレーションパラメーター(約30パラメーター)を考慮に入れて、プログラムのターゲットを変更/最適化してロボットの精度を向上させることです。
または、ジョイントオフセットとベースフレームとツールリファレンスフレームのみをキャリブレーションすることもできます(4つのジョイントオフセットパラメーターと6つのパラメーター、ベースフレームとツールフレームの6つのパラメーター)。キャリブレーションは、デフォルトの完全なキャリブレーションを使用した場合ほど正確ではありませんが、ロボットコントローラーに特定のパラメーターを入力でき、RoboDKに依存せずにロボットプログラムを生成できます。
ジョイントオフセットのみのキャリブレーションを取得するには、キャリブレーションを選択する必要があります。パラメータ。ボタン、次にマスタリングボタン(ロボットのキャリブレーションメニュー内)。
[マスタリングプログラムの作成]を選択すると、新しいウィンドウが表示されます。このウィンドウでは、新しいホームポジションの作成を検討する軸を選択できます。
[マスタリングプログラムの作成]ボタンがロボットのキャリブレーションウィンドウに表示されます。このボタンを選択して、ロボットを新しいホームポジションに戻すプログラムを生成します。ロボットに転送して実行すると、新しいホームポジションが記録されます。
ロボットとPCが接続されている場合は、プログラムを右クリックして、プログラムをロボットに送信プログラムをロボットに自動的に送信します。それ以外の場合は、ロボットプログラムを生成するホームポジションの新しいジョイント値を確認します。
RoboDKには、参照フレームとツールフレームを調整するためのユーティリティがいくつか用意されています。これらのツールはユーティリティからアクセスできます➔参照フレームの調整とユーティリティ➔ツールフレームの調整それぞれ。
参照フレームまたはツールフレーム(それぞれユーザーフレームおよびTCPとも呼ばれます)を調整するには、3つ以上の点に接触するいくつかのロボット構成が必要です。これらのロボット構成は、ジョイント値またはデカルト座標(場合によっては方向データを持つ)のいずれかです。(ロボットの関節をRoboDKのメイン画面にコピーアンドペーストすることにより)RoboDKで実際のロボット構成を確認しやすくなるため、デカルト座標の代わりに関節の値を使用することをお勧めします。
ユーティリティを選択➔校正ツールRoboDKを使用してTCPを調整します。さまざまな方向を使用して、必要な数のポイントを使用できます。より多くのポイントとより大きな方向の変更は、TCPのより良い推定とTCPエラーのより良い推定を得るのでより良いです。
注:詳細については、ヒントセクション。
TCPを調整するには、次の2つのオプションを使用できます。
●方向の異なるTCPで1つの静止点に触れること。
●(タッチプローブのように)TCPで平面に触れる。
タッチプローブまたはスピンドルを調整する必要がある場合は、平面参照に触れて調整することをお勧めします。この方法は、ユーザーエラーに対してより安定しています。
TCPが球形の場合、球の中心は新しいTCPとして計算されます(球の直径を指定する必要はありません)。
(図に示すように)平面でTCPを調整するには、次の手順に従う必要があります。
1.キャリブレーションが必要なツールを選択します。
2.校正方法を選択➔” Calib XYZ by plane”。
3.「ジョイント」を使用してキャリブレーションを選択します。
4.使用しているロボットを選択してください。
5.TCPキャリブレーションに使用する構成の数を選択します(8つ以上の構成を取ることをお勧めします)。
6.参照面の推定を選択します。参照面がロボットのXY平面に平行でない場合(ロボット参照から)、この参照面の推定値を±20度以内で追加する必要があります。この平面の位置は重要ではなく、方向だけが重要です。
7.ジョイント値のテーブルへの入力を開始できます。手動で、またはボタンを使用してコピー/貼り付けを実行することで(図に示すように)入力できます。「Get Jx」ボタンを使用して、シミュレータのロボットから現在の関節値を取得することもできます。ロボットに接続されている実際のロボットから関節を取得する場合は、最初にロボット接続メニューから[現在の関節を取得]を選択する必要があります(RoboDKとロボットの接続の詳細については、添付の画像または付録を参照してください)。キャリブレーションに使用するジョイント(テキストファイルなど)のコピーを個別に保存することを強くお勧めします。
8.テーブルがいっぱいになると、新しいTCP値(X、Y、Z)が「キャリブレーション済みTCP」としてウィンドウの終わりに向かって表示されます。「更新」を選択すると、RoboDKステーションで新しいTCPが更新されます。この方法では、プローブの向きを見つけることができません。
9.「エラーを表示」を選択すると、計算されたTCP(すべての構成の平均)に関するすべての構成のエラーが表示されます。エラーが他の構成よりも大きい場合は、1つの構成を削除できます。
10.実際のロボットコントローラの値を手動で更新する必要があります(X、Y、Zのみ)。このTCPがRoboDKによって生成されたプログラムで使用される場合、ロボットコントローラの値を更新する必要はありません。
ユーティリティを選択➔リファレンスを校正する参照フレームを較正します。異なる方法を使用して参照フレームを設定することが可能です。図の例では、参照フレームは3つのポイントで定義されています。ポイント1と2はX軸方向を定義し、ポイント3は正のY軸を定義します。
注意:リファレンスフレームのキャリブレーションに関する詳細情報は、ヒントセクション。
軸1と6のマスタリング/ホーム値を復元する場合は、特別な注意を払う必要があります。これらの値は、軸1のロボットベースフレームと軸6のTCPリファレンスに直接関連しています。したがって、外部測定を行う必要があります。これらの値を適切に設定します。このウィンドウは、キャリブレーションメニューで[マスタリングプログラムの作成]を選択すると表示されます。
これらの2つの軸のマスタリングパラメータを適切に設定するには、次の2つの手順に従う必要があります。
軸6の「ホーム」位置を適切に設定するには、参照ターゲットを使用する必要があります。角度オフセットは、測定されたTCP(X、Y、Z)を既知のTCPリファレンス。測定されたTCP(次の画像を参照)は、キャリブレーション手順のステップ2で測定されたTCPの1つです。参照TCPは、使用されている調整ツールのTCPの1つに対応する既知の参照です。
理想的には、リファレンスTCPは、ツールフランジに関してCMMで測定する必要があります(ロボットツールフランジのレプリカが最適です)。または、新しいロボットを使用してTCPを初めて測定し(キャリブレーション手順のステップ2)、1つの測定されたTCPを基準として使用することもできます。エンドエフェクタが常に同じ位置に配置されるようにするには、ダウエルピンや適切なツールフランジリファレンスを使用することが重要です。
軸1を実際のロボットのベースフレームに合わせる場合、ロボットのキャリブレーションを開始する前に3つのベースターゲットを適切に測定する必要があります。これらのベースターゲットは、ロボットに対して参照フレームが見つかるように選択する必要があります。
軸1の「ホーム」位置は、3つのベースターゲットとロボットベースのセットアップに直接依存します。ロボットベースのセットアップは最初のキャリブレーションステップで、測定システムのベースフレームは、軸1と2を移動して測定することにより、ロボットベースフレームに対して配置されます。
測定システムのベースターゲットは、[ベースターゲットの設定]を押すと設定できます(次の図を参照)。これらは、目的のロボット参照フレームを定義する3つの測定値です(最初の2つの測定値はX軸を定義し、3番目の点は正のY軸です)。この手順を繰り返すことができるように、ロボットベースに関連する適切な基準点を使用する必要があります。
ジョイント1の補正角度は、3点を介して測定されたベースリファレンスのX軸と、ロボット軸1および2を移動して測定されたベースリファレンスの間の角度になります。もちろん、両方のベクトルは以前に、ツリーポイントをタッチして取得したベースリファレンス。