衝突検出

RoboDKを使用した衝突チェックは、実際のセットアップで衝突を防止するのに役立ちます。衝突チェックは、衝突を視覚的にチェックする、ロボット加工プロジェクトの衝突を自動的に回避する、衝突しないマップを生成して衝突のないプログラムを自動的に作成するなど、さまざまな方法で使用できます。

この項目では、次のトピックについて説明します:

シミュレーション用に衝突チェックを有効にする方法。

衝突検出マップを定義する方法。

ロボット加工プロジェクト用に自動衝突検出と回避を有効にする方法。

PRMアルゴリズムを使用して、異なるターゲットまたは他のプログラムをリンクする為に衝突しないプログラムを自動的に作成する方法。

衝突検出#衝突

ツールCollision Avoidance - 画像 1衝突をチェックを選択して、衝突検出をオンまたはオフにします。衝突検出が有効な場合、衝突が検出されると、すべてのプログラムとロボットの動きが停止します。シミュレーションが衝突状態に入ると、衝突したすべてのオブジェクト、ツール、ロボットリンクが赤で強調されます。

次の手順に従って、プログラムの衝突を安全にチェックしましょう:

1.プログラムを右クリック。

2.パスと衝突をチェック(Shift+F5を選択。この設定は、パスが実行可能かどうかをすばやく確認し(パスをチェック- F5と同じ様に)、衝突がないことを確認します。

Collision Avoidance - 画像 2

衝突マップ

オブジェクトのペア間の相互作用の衝突をチェックする必要があるかどうかを指定できます。

ツールを選択Collision Avoidance - 画像 3衝突マップセル内のすべての移動オブジェクトと衝突チェック状態の関係を表示します。セルをダブルクリックして、その関係の衝突チェックをアクティブまたは非アクティブにします。[デフォルトの選択を設定]を選択して、保守的な選択を自動的に設定します。

デフォルトでは、RoboDKは、すべてのロボットリンク、オブジェクト、ツールを含む、ステーション内のすべての移動オブジェクト間の衝突をチェックします。例外として、連続したロボットのジョイントは常に接触している可能性があるため、衝突のチェックは行われません。

Collision Avoidance - 画像 4

高速な衝突検出

衝突検出速度は多くの要因に大きく依存します。

1.で定義されているチェックのペアの数衝突マップ。チェックの少ない衝突マップを使用すると、より高速になります。

2.干渉チェックに使用されるロボットステップ。衝突ステップはツールで変更できますオプションモーションメニュー。直線運動はミリメートル単位のステップを使用し、関節運動は度単位のステップを使用します。ステップを大きくすると、衝突チェックが速くなりますが、結果の精度が低下する可能性があります。

3.コンピューター能力:コンピューター能力(CPUの高速化)と処理スレッドの増加により、衝突チェックを高速化できます。

4.3Dファイルの複雑さ。丸みを帯びた領域など、詳細度の高いジオメトリは、通常、より多くの計算能力を必要とします。これらの形状を単純化し、三角形の数を減らすと、衝突チェックの速度が上がります。

ロボット加工用に衝突回避

ロボット加工プロジェクトの自動干渉チェックと衝突回避をアクティブにするには、次の手順に従います。

1.ツールを選択オプションカム

2.[自動衝突回避を許可]をオンにします

Collision Avoidance - 画像 5

3.あなたのダブルクリックロボット加工プロジェクト、3Dプリント、カーブフォローまたはポイントフォロープロジェクト。

4.[衝突を回避する]チェックボックスをオンにします。これにより、最適化パラメータで説明されているように、Z軸を中心としたツールの向きを変更することにより、自動衝突回避がアクティブになります。

Collision Avoidance - 画像 6

衝突しないモーションプランナー

モーションプランニング機能は、ロボットのワークスペース内に衝突のない経路を自動的に作成します。RoboDKでは、この機能は「確率的ロードマップ」(PRM)と呼ばれるモーションプランニングアルゴリズムを使用します。

まず、ロボットのワークスペース内の空きスペースのマップが作成されます。このマップは、ロボットのプログラミング中に衝突のない軌道をすばやく生成するために使用されます。

PRMアルゴリズムは、次の2つのプロパティによって特徴付けられます。

確率的:「構成スペース」内のポイント(つまり、ロボットがワークスペース内のどこに移動できるかを知るためにプランナーが使用するポイントのセット)は、プランナーによってランダムに選択されます。これにより、PRMアルゴリズムは、ワークスペース全体を均等にカバーしようとする他のモーションプランニングアルゴリズムよりも高速になります。

ロードマップ:PRMアルゴリズムは、最初にロボットワークスペース全体の「ロードマップ」を作成することによって機能します。

ロボットの動作計画の一般的な概要については、以下を参照してください。このブログ投稿

PRMモーションプランナーの使用

PRMモーションプランニングを使用する場合、2つの異なるフェーズがあります。これらはRoboDKで個別に実行されるため、機能の効率が向上します。遅い「構築フェーズ」は一度だけ実行する必要がありますが、速い「クエリフェーズ」は何度でも繰り返すことができます。

2つのフェーズは次のとおりです。

  1. 建設段階(遅い)PRMアルゴリズムは、ロボットのフリーワークスペース内にランダムにポイントを配置します。次に、これらのポイントを接続して、ワークスペース内で衝突のないパスのロードマップを形成しようとします。
  2. クエリフェーズ(高速)プランナーは、構築フェーズで作成されたロードマップを使用して、2つのターゲットポイント間の最短の衝突のない経路を見つけようとします。

RoboDK PRMアルゴリズムの動作の詳細については、次を参照してください。このブログ投稿

このセクションでは、RoboDKプログラムでこれらの両方のフェーズを使用する方法を示します。溶接の設定例を使用して、機能を説明します。

モーションプランニング用にセットアップ

モーションプランナーを使用するには、理想的にはツールを備えたロボットが必要です。また、ワークスペース内に少なくとも1つのオブジェクトがあることは理にかなっています。そうでなければ、衝突回避は必要ありません。生成された衝突のないパスの開始位置と終了位置として機能する、少なくとも2つのターゲットを割り当てると便利です。

サンプルの溶接セットアップは、次のプロセスを使用して作成できます。

1.ロボットを選択:

a.ファイルを選択Collision Avoidance - 画像 7オンラインライブラリを開く

b.フィルターを使用してロボットを見つけます。たとえば、ABB IRB 2600-12 / 1.85を選択します(次のフィルターを選択します:ABB(ブランド)、ペイロード10-20 kg、リーチ1500-2000mm

c.[ダウンロード]を選択すると、ロボットが自動的にメイン画面に表示されます。

2.ツールを選択します。

a.同じオンラインライブラリから、タイプでフィルタリングツール (最初にフィルターをリセットをクリックして前のフィルターを削除します)

b.「溶接ガン」などのツールをダウンロードする

c.ツールは自動的にロボットに取り付けられるはずです

d.ツールが読み込まれると、オンラインライブラリを閉じることができます

3.参照フレームを追加します。

a.プログラムを選択Collision Avoidance - 画像 8参照フレームを追加

b.ツリーで新しい参照フレームを選択し、F2キーを押して、名前を「障害物参照」に変更します。

4.オブジェクトをいくつか追加します。

a.ファイルを選択Collision Avoidance - 画像 9開いたコンピュータにあるRoboDKライブラリディレクトリを開きます(RoboDKインストールディレクトリにあります)。

b.Object Table.wrl」などのオブジェクトを選択します

c.オブジェクトをステーションツリー内の障害物参照にドラッグアンドドロップします。

d.box.stl」などの別のオブジェクトを選択し、これを「障害物参照」にもドラッグします。

e.次の手順を実行して、ロボットの前にテーブルを移動します。

i.障害物参照を右クリックし、[オプション]を選択して(またはツリー内の参照をダブルクリックして)、[フレームの詳細]パネルを表示します。

ii.「基準位置」という名前のパネルに次の値を入力します。プロジェクト:100004009000

Collision Avoidance - 画像 10

f.必要に応じて、次の手順に従って、オブジェクト(「ボックス」など)のサイズと位置を増やします。

iii.ステーションツリーでオブジェクトを右クリックして[オプション]を選択(またはツリーでオブジェクトをダブルクリック)して、[オブジェクトの詳細]パネルを表示します。

iv.[その他のオプション]をクリックしてボックスをスケーリングしますスケールを適用し、スケール比に「4.0」を入力します

v.オブジェクトの位置という名前のパネルに、障害物参照に関して次の値を入力して、ボックスをテーブルに移動します:00200000

Collision Avoidance - 画像 11

5.ターゲットを作成します。

a.プログラムを選択Collision Avoidance - 画像 12ターゲットを教える

b.ステーションツリーで新しいターゲットを選択し、F2を選択して名前をStart Targetに変更します。

c.これを実行してターゲットを移動します。

vi.ステーションツリーでターゲットを右クリックし、[オプション]を選択して(またはF3を押して)、[ターゲットの開始]パネルを表示します。

vii.障害物参照パネルに関して、ターゲット位置に次の値を入力します:50000900180

d.同じ方法で2つ目のターゲットを作成し、「End Target」という名前に変更します。前と同じ方法を使用して、次の場所に移動します:-50000900180

Collision Avoidance - 画像 13

関節制限の拘束

タスクがロボットのすべてのワークスペースを使用するのは珍しいことです。PRMマップを作成するときは、多くの場合、ロボットの関節制限を制限することをお勧めします。これにより、マップの生成プロセスが高速化され、そのマップ内のポイントが最適な場所に配置されるようになります。

6軸ロボットの場合、最も頻繁に制限される2つの関節は次のとおりです。

1.ジョイント1(ベースジョイント)このジョイントを制限すると、ロボットがワークスペースのどちらかの側に移動しすぎるのを防ぎます。

2.関節3(肘関節)このジョイントを制限すると、ロボットが肘を上にした構成と肘を下にした構成との間で変更することができなくなります。

次のプロセスを使用してジョイント制限を変更します。

1.ステーションツリー内のロボットモデルアイコン(ABB IRB 2600-12 / 1.85など)を右クリックし、[オプション]を選択してロボットパネルを開きます。または、ステーションツリーでロボット名をダブルクリックします。

2.ジョイント軸のジョグセクションで、制限するロボットジョイントのスライダーを移動します(例:θ1そしてθ3)ジョイントの下限をどこにしたいかを見つけます。

3.ジョイント軸ジョグ内のジョイントの下限のいずれかをダブルクリックします。たとえば、θ1のジョイント制限が現在-180である場合、数値-180をダブルクリックします。これにより、[関節の下限の設定]パネルが表示されます。

Collision Avoidance - 画像 14

4.ジョイントの下限をθ1= -50およびθ3 = -90

5.ジョイント制限を変更して、[OK]をクリックします。

6.ジョイントの上限で同じプロセスを使用して、設定θ1= 50

Collision Avoidance - 画像 15

この変化は、ロボットの到達可能なワークスペースを表示することで確認できます。ロボットパネルのWorkSpaceセクションで[現在のツールを表示]オプションを選択して、ワークスペースを表示します。ワークスペースの一部のみが新しいジョイント制限で到達可能であることが表示されます。

Collision Avoidance - 画像 16

PRMパラメータの選択

PRMアルゴリズムは、次の3つのパラメーターを使用して、到達可能な場所のロードマップを生成します。

1.サンプル数マップは、ロボットの到達可能なワークスペース全体にランダムに配置されたいくつかの場所(サンプル)で構成されています。この数は、サンプルの数を決定します。デフォルトは100サンプルです。

2.サンプルあたりのエッジアルゴリズムは、マップ内のすべてのサンプルを他のいくつかのサンプルと接続しようとします。2つのサンプルを接続する線は「エッジ」と呼ばれ、2つの場所の間の衝突のない経路を示します。このプロパティは、サンプルごとに作成されるエッジの最大数を示します。デフォルトは、サンプルあたり25エッジです。

3.ロボットステップ(度)潜在的なエッジに衝突がないかどうかをチェックする場合、アルゴリズムはそれに沿って一定の間隔で停止し、衝突をチェックします。これらの間隔の距離は、ロボットのステップによって決まります。デフォルトは4度です。

これらの3つのパラメーターは、生成されるロードマップの詳細度を決定します。また、建設段階でロードマップを生成するのにかかる時間にも影響します。

サンプル数が多く、サンプルあたりのエッジ数が多いほど、ロードマップが細かくなり、生成に時間がかかります。ロボットステップが大きいほど、マップの生成は速くなりますが、潜在的な衝突を検出できない可能性があります。

ワークスペースの設定とロボットのプロパティに応じて、デフォルト値を使用すると、通常15分以内にロードマップを生成できます。

これらのパラメータを設定する際のベストプラクティスについては、このセクションの最後にあるヒントを参照してください。

ロードマップの生成

モーションプランナーの「構築フェーズ」は、ロボットのワークスペースのロードマップを生成する次のプロセスを使用して実現されます。

1.[ユーティリティ]メニューに移動して、衝突のないモーションプランナーパネルを開きます衝突のないモーションプランナー衝突のないマップを作成する、または横の小さな矢印をクリックしますCollision Avoidance - 画像 17衝突をチェック [衝突のないマップを作成]を選択します。

Collision Avoidance - 画像 18

2.新しいパラメータを入力するか、デフォルトのままにします。

3.[マップの更新]をクリックして、ロードマップを生成します。

PRMアルゴリズムは、選択されたパラメーターを使用してロードマップを生成します。完了したら、[マップを表示]チェックボックスをオンにして、生成されたロードマップを表示できます。サンプルの表示をクリックすると、ロボットがワークスペース内のすべてのサンプルを移動します。

Collision Avoidance - 画像 19

ターゲットのリンク

2つのターゲットまたはプログラムがリンクされている場合、モーションプランナーの「クエリフェーズ」にアクセスします。

2つのターゲットをリンクするには、まずステーションツリーでターゲットを選択します。ターゲットを選択してリンクするには、2つの方法があります。

1.Ctrlキーを使用:

a.移動を開始するターゲット(例では、「Start Target」という名前のターゲット)を左クリックします。

b.CTRLキーを押したままにします。

c.宛先ターゲットを左クリックします(例:「終了ターゲット」)

d.2つのターゲットのいずれかを右クリックし、[選択したターゲットをリンク]を選択します。または、衝突のないモーションプランナーパネルが開いている場合は、[選択したターゲット/プログラムのリンク]ボタンをクリックします。

2.Shiftキーで:

a.ステーションツリーで2つのターゲットを上下に配置し、開始ターゲットを終了ターゲットの上に配置します。マウスの右ボタンを使用してターゲットをドラッグアンドドロップすることで、ターゲットをツリー内で移動できます。ターゲットをドロップすると、ターゲットを配置する場所を選択するメニューが表示されます。

Collision Avoidance - 画像 20

b.いずれかのターゲットを左クリックします。

c.Shiftキーを押したままにします。

d.他のターゲットを左クリックします。

e.2つのターゲットのいずれかを右クリックし、[選択したターゲットをリンク]を選択します。または、衝突のないモーションプランナーパネルが開いている場合は、[選択したターゲット/プログラムのリンク]ボタンをクリックします。

どちらの方法でも、保存されたロードマップを使用して2つのターゲットをリンクする新しいプログラムが生成されます。反対方向の動きを作成するには、反対の順序でターゲットを選択します。つまり、Ctrlメソッドを使用してStart Targetの前にEnd Targetを選択するか、Shiftメソッドのステーションツリーでターゲットを再配置します。

プログラムのリンク

モーションプランナーは、2つの異なるプログラムを同様の方法でリンクすることもできます。これにより、2つのプログラム間に衝突のないパスが作成され、新しいメインプログラムが作成されます。

溶接の例では、次のプロセスを使用して2つのダミープログラムを作成します。

1.「オブジェクト参照」参照フレームの子として4つのターゲットを作成します(ステーションツリーで「オブジェクト参照」を右クリックし、[アクティブ参照フレーム]をオンにします)。次に、プログラムを選択して4つのターゲットを作成しますCollision Avoidance - 画像 21ターゲットを教える4回、またはCtrl + T4回押します。

2.ステーションツリーで新しいターゲットをそれぞれ選択し、次の名前と値を入力します。ターゲット名を変更するには、F2キーを押すか、ターゲットを右クリックして[名前の変更]を選択します。ターゲット値を変更するには、F3キーを押して[ターゲット]パネルを表示するか、ターゲットを右クリックして[オプション]を選択します。[ターゲットの位置]とマークされたセクションに新しい値を入力します:オブジェクト参照。

a.名前:「左ポイント1」の値:2002000900-135

b.名前:「左ポイント2」の値:200-2000900-135

c.名前:「Right Point 1」の値:-2002000900135

d.名前:「Right Point 2」の値:-200-2000900135

Collision Avoidance - 画像 22

3.最初のプログラムを作成します。

a.プログラムに行くCollision Avoidance - 画像 23プログラムを追加

b.最初にステーションツリーでプログラムを選択し、F2キーを押すか、右クリックして[名前の変更]を選択することにより、プログラムの名前を「Left Weld」に変更します。

c.最初にステーションツリーでターゲットを選択し、[プログラム]を選択して、以下のターゲットを線形命令として追加しますCollision Avoidance - 画像 24線形命令の移動:開始ターゲット、左ポイント1、左ポイント2、開始ターゲット

Collision Avoidance - 画像 25

4.同じ方法で「右溶接」と呼ばれる2番目のプログラムを作成します。今回は、次のターゲットを追加します:終了ターゲット、右ポイント1、右ポイント2、終了ターゲット。

Collision Avoidance - 画像 26

これらの2つのダミープログラムには、溶接ガンをアクティブ化/非アクティブ化するコマンドが含まれていないことに注意してください。実際のプログラムでは、これらのコマンドを含める必要があります。

モーションプランナーを使用して2つのプログラムをリンクするには、次のプロセスを使用します。

1.前のセクション(リンクターゲット)で説明した2つの方法のいずれかを使用して、両方のプログラムを選択します。

2.いずれかのプログラムを右クリックし、[選択したプログラムをリンク]を選択します。衝突のないモーションプランナーパネルが開いている場合、[選択したターゲット/プログラムのリンク]をクリックすることで同じことができます。

MainSafe」と呼ばれる新しいプログラムが作成され、最初のプログラムを実行し、衝突のない移動を行い、次に2番目のプログラムを実行します。このメインプログラムは、他のプログラムと同じように変更および名前を変更できます。

マップに新しいターゲットを追加

マップ全体を再生成する必要なく、新しいターゲットをPRMロードマップに追加できます。つまり、新しいオブジェクトがワークスペースに追加された場合、または既存のオブジェクトが移動された場合にのみ、ロードマップを完全に再生成する必要があります。

新しいターゲットがロードマップに追加されると、PRMアルゴリズムは、それを新しいエッジのセットでロードマップ内の既存のいくつかのポイントに接続しようとします。新しいターゲットに対して、最初のロードマップ作成で選択した数とは異なるデフォルトのエッジ数を設定することができます。

新しいターゲットのエッジの最大数は、次のプロセスを使用して設定できます

1.[ユーティリティ]メニューに移動して、衝突のないモーションプランナーパネルを開きます衝突のないモーションプランナー衝突のないマップを作成する、または横の小さな矢印をクリックしますCollision Avoidance - 画像 27衝突をチェック [衝突のないマップを作成]を選択します。

2.[新しいサンプルエッジ]というラベルの付いたボックスにエッジの数を入力します。デフォルトは5です。

ロードマップに新しいターゲットを追加するには、2つの方法があります。

1.ステーションツリーでターゲットを選択します。最も高いターゲットをクリックし、Shiftキーを押しながら最も低いターゲットをクリックすると、隣接する複数のターゲットを一度に選択できます。隣接していない複数のターゲットは、Ctrlキーを押したまま選択できます。次に、衝突のないモーションプランナーパネルで[選択したターゲットを追加]をクリックします。

Collision Avoidance - 画像 28

2.同じ方法を使用して、前のセクション(ターゲットのリンクとプログラムのリンク)で説明した選択したターゲットまたはリンクしたプログラムをリンクします。ロードマップにまだ存在していないターゲットは自動的に追加されます。

ヒントとベストプラクティス

モーションプランナーは使い方が簡単ですが、プログラミングワークフローを改善するいくつかのベストプラクティスがあります。

小さなパラメーターから始める

構築フェーズの実行には時間がかかる場合があります。これは、ロボットセルのレイアウトが絶えず変化しているプログラミングの初期段階で煩雑になる可能性があります。オブジェクトがワークスペースに追加または移動されるたびに、ロードマップ全体を再生成する必要があります。

ロードマップが生成されるのを待つために費やされる時間を短縮するために、最初は小さいパラメーターを使用することをお勧めします。

たとえば、次のパラメータは1015秒以内にマップを生成できます。

1.サンプル数:10

2.サンプルあたりのエッジ:5

3.ロボットステップ(度):4.0

これは、最も効率的な衝突のないモーションを生成しませんが、セルの設計をより迅速に変更できます。

セル内のすべてのオブジェクトの位置が決定したら、より大きなマップを生成できます(たとえば、デフォルトのパラメーターが100254.0の場合)。

Collision Avoidance - 画像 29

最後に、ロボットプログラムを生成する前に、さらに大きなロードマップ(たとえば、500502.0のパラメーター)を生成することをお勧めします。生成には時間がかかりますが、最も効率的なモーションが生成されます。

Collision Avoidance - 画像 30

ジョイント制限を使用する

ロボットの関節制限の設定(前のセクションで説明)関節制限を拘束する)には2つの利点があります。第1に、場合によっては、構築フェーズをより速くすることができます。次に、ロードマップにロボットプログラムに役立つ場所が実際に含まれていることを確認します。この重要なステップを忘れがちです。

衝突マップを適切に定義する

2つのオブジェクトが衝突すると、衝突検出がトリガーされます。で各移動オブジェクト間の相関を指定できます衝突マップ設定。インタラクションの数(緑のチェックマーク)を減らすと、衝突チェックの速度が上がります。

高速な衝突チェック

衝突のないパスの計算にかかる時間は、で説明されているように、多くの要因に依存します。衝突検知セクション。特に、衝突チェックのロボットステップを増やしたり、ジョイントの制限を拘束したり、3Dジオメトリを簡略化して衝突チェックを高速化したりできます。

3Dモデルをオフセットする

「衝突回避」という用語は、モーションプランナーがすべての状況で常に衝突を回避することを示唆しています。これは、シミュレーション環境では確かに当てはまります。ただし、現実の世界では、ロボットがオブジェクトに近づきすぎると、オブジェクトと衝突する可能性があります。これは通常、シミュレーションロボットと物理ロボットのわずかな違いが原因で発生します。

このような衝突の一般的な例は、ロボットがタスクから離れるときにオブジェクトのエッジを「クリップ」する場合です。これは通常、プログラムに「オフセット」を含めることで回避できます。オフセットを効果的に使用する方法の詳細については、このブログ記事を参照してください。

ロボットの最も器用なゾーンで操作する

ロボットのワークスペースのすべての領域が同じというわけではありません。ロボットは、ワークスペースの一部の領域で他の領域よりも「到達可能性」が高くなります。到達可能性が高いエリアでは、ロボットは多くの方向からポイントにアクセスできます。到達可能性が低いエリアでは、ロボットは1つまたは2つの方向からのみポイントにアクセスできます。

場合によっては、モーションプランナーがワークスペース内の2つのターゲット間のパスを見つけられないことがあります。多くの場合、この問題はロードマップのサンプル数を増やすだけで解決できますが、常にそうであるとは限りません。

モーションプランナーが継続的にターゲットの接続に失敗する場合は、タスクが最も到達しやすいロボットのワークスペースの領域内にあることを確認してください。ロボットパネルを開き(ステーションツリーでロボットを右クリックして[オプション]を選択)、[ワークスペース]セクションで[現在のツールを表示]を選択して、ロボットのワークスペースを表示します。