RoboDKは、GPL(ガイダンスプログラミング言語)を使用したBrooks PreciseFlexロボットをサポートしています。ユーザーは、ロボットアーム、グリッパー、リニアレールを選択して、高度なラボ自動化プログラムを生成することができます。
デュアルグリッパーを含め、シミュレーションからBrooks PreciseFlexグリッパーを制御するには、このセクションで説明する手順に従います。
1.プログラムを右クリックし、プログラム呼び出し命令を追加します。
2.Gripper(グリッパーID, グリッパー値)」と入力します。例えば、"Gripper(2, 50) "と入力すると、デュアルグリッパーの2番グリッパーを50mmに移動させることができます。
a.グリッパー1つで、"Gripper(グリッパー値) "の呼び出しを短縮できます。
b.複数のロボットが存在する場合は、"Gripper(gripper ID, gripper value, item.ptr) "を使用してください。例えば、"Gripper(2, 50, item.ptr) "はデュアルグリッパーの2番グリッパーを50mmに動かし、親ロボットがプログラムにリンクされていることを確認します。
3.すべてのサブプログラムの最初の命令として、またすべてのサブプログラム呼び出しの後に、Gripper()命令を追加します。これは、ポスト・プロセッサとの互換性を確保するためです。Gripper()命令の重複が予想されます。
4.Pythonスクリプトを追加し、名前を "Gripper "に変更します。
5.Gripper "Pythonスクリプトを編集し、以下を貼り付けてください:
from robodk import robolink
インポートシステム
if len(sys.argv) < 2:
終了()
def get_item(ptr_item, RDK):
item = robolink.Item(RDK, str(ptr_item), robolink.ITEM_TYPE_PROGRAM)
if not item.Valid(True):
なし
リターンアイテム
RDK = robolink.Robolink()
gripper_id = -1
グリッパー値 = 0
prog_item = なし
# グリッパーのID、値、呼び出し元を取得します。
len(sys.argv) == 2:
gripper_value = float(sys.argv[1])
elif len(sys.argv) >= 4:
gripper_id = int(sys.argv[1])
gripper_value = float(sys.argv[2])
prog_item = get_item(int(sys.argv[3]), RDK)
elif len(sys.argv) == 3:
prog_item = get_item(int(sys.argv[2]), RDK)
if prog_item:
gripper_value = float(sys.argv[1])
そうでなければ
gripper_id = int(sys.argv[1])
gripper_value = float(sys.argv[2])
# 候補者を取得
grippers = [x for x in RDK.ItemList(robolink.ITEM_TYPE_ROBOT_AXES) if 'gripper' in x.Name().lower() and len(x.Joints().tolist()) == 1].
if len(grippers) > 1 and prog_item:
robot_item = prog_item.getLink(robolink.ITEM_TYPE_ROBOT)
if not robot_item.Valid():
robot_item = RDK.ItemUserPick("Select linked robot", robolink.ITEM_TYPE_ROBOT)
prog_item.setRobot(ロボットアイテム)
def get_flat_childs(item):
childs = item.Childs()
for child in item.Childs():
childs.extend(get_flat_childs(child))
子
childs = get_flat_childs(robot_item)
grippers = [x for x in childs if x.Type() == robolink.ITEM_TYPE_ROBOT and len(x.Joints().tolist()) == 1].
グリッパーでない場合
RDK.ShowMessage('グリッパーが見つかりません!', False)
# 正しいグリッパーID(デュアルグリッパー1)を見つけてください。
グリッパー = グリッパー[0]
gripper_id > 0:
gripper_ids = [g for g in grippers if g.Name().endswith(str(gripper_id))].
もしgripper_ids:
グリッパー = グリッパーID[0]
グリッパー.MoveJ([グリッパー_値])
なお、この方法はブルックスのポストプロセッサーにも対応しています。
PreciseFlexロボットのベースフレームはロボットの物理的なベースには配置されないため、PreciseFlexロボットとPreciseFlexリニアレールの間には特定のオフセットが必要です。
ブルックスPreciseFlexリニアレール構成:
a.ブルックス・プレシースフレックス400:【118、0、45.6、0、0、0
b.ブルックス・プレシースフレックス3400:【118、0、62.6、0、0、0
ブルックスPreciseFlexリニアレール -90度構成:
a.ブルックス・プレシースフレックス400:【101.6, 0, 45.6, 0, 0, 0
b.ブルックス・プレシースフレックス3400:【101.6, 0, 62.6, 0, 0, 0
ポストプロセッサが軸の位置を考慮するために、リニアレールを同期させる必要があります。詳細は、https://robodk.com/doc/en/General.html#SyncAxes のセクションを参照してください。
このセクションでは、ブルックスロボットのプログラム生成に関するいくつかのヒントを説明します。
RoboDKのツール中心点(TCP)とコントローラのツール中心点(TCP)が一致している必要があります。グリッパー機構を使用している場合は、"Add Tool (TCP) "を使用して、予想される位置にTCPを追加する必要があります。新しいツールの TCP は、グリッパー機構の TCP と一致する必要があります。Brooks PreciseFlexロボットのツールセンターポイント(TCP)に関連する情報は、ウェブインターフェイスにアクセスして以下の手順で確認できます:
1.管理者
2.セットアップ - パラメータデータベース
3.ロボット
4.ジョイント/カルテジアン制御
5.動的パラメータ
6.データID 16051
ポストプロセッサと互換性のあるグリッパー命令を適切に定義する方法については、前のセクション「グリッパーシミュレーション」を参照してください。この方法は、グリッパーの軸/軸の予期せぬ動きを避けるために、GPLプロジェクト内の位置を適切に定義します。
入力値が-1の場合、ロボットは動作の最後で停止し、厳しい位置誤差制約が適用されます(GPLコード:prof1.InRange = 100)。
入力値が0の場合、ロボットは動作の最後で停止しますが、小さな位置誤差拘束が適用されます(GPLコード:prof1.InRange = 10)。
入力値が0より大きいと、ロボットは動作の終了時に停止せず、ブレンド動作が実行されます(GPLコード:prof1.InRange = -1)。
Brooks PreciseFlexロボットの最大直線速度、最大角速度、最大関節速度/加速度に関する情報は、Web Interfaceにアクセスして以下の手順で確認できます:
1.管理者
2.セットアップ - パラメータデータベース
3.ロボット
4.ジョイント/カルテジアン制御
5.動的パラメータ
6.データID 2700、2701、2702、2703
ユーザーは上記のDataIDの値を参照としてRoboDKの速度/加速度命令の入力を設定することができます。Preciseポストプロセッサはこれらの値を使用して、GPLプロファイルクラスが要求する各ロボットの最大速度/加速度に対するパーセンテージとして速度/加速度を計算します。
ポストプロセッサが使用するリミットを変更するには、使用している特定のロボットに応じてポストプロセッサを変更します。デフォルトでは、ポストプロセッサは PF400 と PF3400 ロボットのリミットを使用します。ポストプロセッサを変更するには、マニュアルの https://robodk.com/doc/en/Post-Processors.html#PPEditor セクションを参照してください。
1 未満の入力値が線形加速度命令と角加速度命令で使用されている場合、これらの入力値は、ピーク加減速度までのランプアップの継続時間(秒)として使用されます(GPL コード:prof1.AccelRamp/prof1.DecelRamp = inputvalue)。
下の画像は、上に書いた概念と、コントローラーがどのようにロボットがたどるべき軌道を計画するかに関連する詳細な情報です。
0より大きな入力値を設定すると、入力値で定義された時間だけプログラムを一時停止するGPLコマンドが生成されます。負の入力値を設定すると、Web Interfaceのオペレータコントロールパネルにポップアップダイアログボックスが表示され、ユーザがダイアログボックスの[続行]ボタンをクリックするまでプログラムが一時停止します。ダイアログボックスを表示するには、オペレータコントロールパネルの "Dialog Active "ボタンをクリックする必要があります。
RoboDKからFTPで簡単にプログラムを転送することができます:
1.RoboDKでロボットを右クリックします。
2.ロボットに接続...を選択します。
3.ロボットのIPとポートを入力してください(デフォルトは192.168.0.1、ポート21)。
4.リモートFTPパス(通常は /フラッシュ/プロジェクト)
RoboDKプログラムが完成したら、ロボットに送信します:
1.RoboDKのプログラムを右クリックします。
2.Send program to robot (Ctrl+F6) を選択します。
プログラムが生成され、ロボットコントローラに転送されます。FTP転送が成功したかどうかを示すウィンドウがポップアップ表示されます。
GPLプロジェクトをロードして開始するには、ロボットのウェブインターフェイスを使用する必要があります(ロボットのウェブインターフェイスには、任意のブラウザを使用してロボットのIPアドレスを検索することでアクセスできます)。下記はウェブインターフェースの開始ページのイメージです。
1.ウェブブラウザを開く
2.ロボットのIPアドレスを入力してください。
Web Interfaceからプログラムを開始
1.Admin -> Control Panels -> Operator Control Panel -> "Load "を選択します。
2.RoboDKで作成したGPLプロジェクトを選択します。
3.選択」をクリック
4.開始」をクリック
この時点で、ロボットはプログラムを実行します。下の画像は、オペレータ・コントロール・パネル・インターフェースと、ユーザが必要なGPLプロジェクトを選択してロードするためのウィンドウを示しています。