グリッパーシミュレーション

デュアルグリッパーを含め、シミュレーションから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([グリッパー_値])

なお、この方法はブルックスのポストプロセッサーにも対応しています。