基本パレタイジングプログラム作成:門形枠式軌跡の変化
  • パレタイジング
  • プログラム
  • 基本
  • 門形
  • 搬送
Yu Lin
我要的是机器人?我要的是机器猫!



        「基本搬送プログラム作成:門形枠式軌跡」では,門形枠式軌跡から簡単な搬送プログラムを作成する方法を紹介した。この記事では、門形枠式軌跡の概念を中心として、単純なパレタイジングプログラム変更する方法について説明します。

        トラックから見ると、パレタイジング タスクは、複数の門形枠式軌跡が重なっているようなものです。 だから、多くの門形枠を作るだけでパレタイジングプログラムの基本的な構造を完了することができます。この方法は実現可能ですが、プログラムは非常に冗長になります。多数のウェイポイントをティーチング必要があります。メンテナンス管理も面倒です。複数の門形枠を重ねるよりも、実行ごとに1つの門柱の位置を変更するプログラムを作成する方が良いです。

        本稿では,以下の図を例にとり,12個の箱を3 X 2 X 2方式で配置するパレタイジングプログラムを設計する。ボックスのサイズは10cm X 10cm X 10cmです。 ロボットの座標系はパレタイジング領域座標系と平行です。

        次の図は、門形枠式軌跡の変形であり、このパレタイジングプログラムの鍵です。P変数とV変数の使用に関する考え方は変わっていない。位置を精密に調整でき、移動距離が短いポイントは V 変数を使用します。長距離で移動する点にはP変数が推奨されます。ポイントV1はおなじみのワーク取得位置である。V1を教えた後、フランジを垂直に持ち上げ、V1に垂直な上の適切な高さでP1をティーチングします。配置側は、多くのポイントを追加します。V2 は配置ポイントであり、現在配置する必要があるボックス番号に基づいて座標が更新されます。  V3はV2の上に垂直で、配置前の位置です。高さは、すでに置かれているボックスにヒットしないようにする必要があります。 V3 は V2 の座標更新に従って更新されます。

   

        このパレタイジングプログラムに歪みのあるP3ポイントがない場合、次の2つの問題が発生する可能性があります:

            1. ロボットが遠いポイントにボックスを配置すると、V3からV2への移動中にジョイントの回転角度が上限に達したため、目標ポイントに到達できません。

            2. ロボットがP2からV3に向かって移動すると、奇妙な姿勢でV3に入り、保持しているボックスがロボット自体に衝突します。

V3に移動する前にジョイントの方向を調整することで、両方の問題を効果的に解決できる P3 ポイントがあります。

次の内容を理解しやすくするために、ボックスに番号を付ける。番号は 0 から始まるルールを使用します。 層0 は右から左に 0 ~ 5、層1 は 6 ~11 です。この番号は、ボックスの運搬順序も決定します。 この順序は、最初に最も遠いボックスを配置することです。 そうしないと、V3 から V2 へのモーション中に、ロボットの姿勢が、既に配置されているボックスに触れることがあります。

        前の基本的な基本搬送プログラムを取り出し、これを基準としてパレタイジングプログラムの変更を開始します。注: 実際の運用では、"//(Insert Pick Up Start Signal Here)" とマークされた場所に "オブジェクトを取得する" コマンド信号を挿入する必要があります。 箱がピックアップ場所に到達したという判断信号であってもよい。

NOP
MOVJ P001 VJ=100% CR=0.0MM ACC=50 DEC=50
WHILE 1=1 DO
//Pick Up
//(Insert Pick Up Start Signal Here)
MOVL V001 AV=50.0MM/S PL=0
#CALL JOB:VG10_A_GRIP
TIMER T=0.5 S
MOVL P001 V=3000MM/S CR=100.0MM ACC=100 DEC=100
//Place
MOVJ P002 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVL V002 V=3000MM/S CR=0.0MM ACC=100 DEC=50
#CALL JOB:VG10_A_RELEASE
TIMER T=0.5 S
MOVL P002 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P001 VJ=100% CR=0.0MM ACC=100 DEC=100
ENDWHILE
END

        1. まずサイクル条件を修正し,運搬が必要なケースは12個しかないため,サイクル回数は12回のみ必要となるB変数は、すでに運び出された箱の数を記録するカウンタとして使用することができます。B000=0を初期化し、Whileの条件をWHILE B000<12 DOに変更し、ENDWHILEの前にB000の値を追加します。

NOP
SET B000 0
MOVJ P001 VJ=100% CR=0.0MM ACC=50 DEC=50
WHILE B000<12 DO
//Pick Up
//(Insert Pick Up Start Signal Here)
MOVL V001 AV=50.0MM/S PL=0
#CALL JOB:VG10_A_GRIP
TIMER T=0.5 S
MOVL P001 V=3000MM/S CR=100.0MM ACC=100 DEC=100
//Place
MOVJ P002 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVL V002 V=3000MM/S CR=0.0MM ACC=100 DEC=50
#CALL JOB:VG10_A_RELEASE
TIMER T=0.5 S
MOVL P002 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P001 VJ=100% CR=0.0MM ACC=100 DEC=100
INC B000
ENDWHILE
END

        2. 注釈を使用してプログラムを3つの部分に分割します:初期化部分、計算部分、移動部分。計算部と移動部はサイクルごとに更新する必要があります。

NOP
//*********** Initialization ************
SET B000 0
MOVJ P001 VJ=100% CR=0.0MM ACC=50 DEC=50
//---------------------------------------
//
//************ Calculation **************
//---------------------------------------
//
//************** Movement ***************
WHILE B000<12 DO
//Pick Up
//(Insert Pick Up Start Signal Here)
MOVL V001 AV=50.0MM/S PL=0
#CALL JOB:VG10_A_GRIP
TIMER T=0.5 S
MOVL P001 V=3000MM/S CR=100.0MM ACC=100 DEC=100
//Place
MOVJ P002 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVL V002 V=3000MM/S CR=0.0MM ACC=100 DEC=50
#CALL JOB:VG10_A_RELEASE
TIMER T=0.5 S
MOVL P002 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P001 VJ=100% CR=0.0MM ACC=100 DEC=100
INC B000
//---------------------------------------
ENDWHILE
END

        3. 移動部に、V003およびP003への移動指示を挿入する。MOV指令の種類に注意し、パラメータを調整します。

//************** Movement ***************
//Pick Up
//(Insert Pick Up Start Signal Here
MOVL V001 AV=50.0MM/S PL=0
#CALL JOB:VG10_A_GRIP
TIMER T=0.5 S
MOVL P001 V=3000MM/S CR=100.0MM ACC=100 DEC=100
//Place
MOVJ P002 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVJ P003 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVJ V003 V=3000MM/S CR=1.0MM ACC=100 DEC=50
MOVL V002 V=3000MM/S CR=0.0MM ACC=100 DEC=50
#CALL JOB:VG10_A_RELEASE
TIMER T=0.5 S
MOVL V003 V=3000MM/S CR=10.0MM ACC=100 DEC=100
MOVJ P003 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P002 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P001 VJ=100% CR=0.0MM ACC=100 DEC=100
INC B000
//---------------------------------------

        4. まず、現在の箱は何目、何行目、何列目に置く必要があるかを明らかにしなければならない。数回の割り算を使うと必要な数値が得られます。B000の値を6で割った値が階層数情報である。例えば6つ目の箱を運ぶ場合、B 000値は5です。5を6で割ると0、残りは5、つまり現在の箱は0目にあります。一方、剰余5を列の数3で割った値は1、剰余は2である。つまり位置は1行2です。

        5. そこで、計算部のプログラムでは、剰余命令除算命令を用いて、層数、行数、列数をそれぞれ変数B001、B002、B003に保存する。

//************ Calculation **************
//Layer#
SET B001 B000
DIV B001 6
//Row#
SET B002 B000
MOD B002 6
SET B003 B002
DIV B002 3
//Column#
MOD B003 3
//---------------------------------------

        6. 層0、行0、列0の座標を別のV変数に教示します。例えばV010。V002をリセットするのに便利です。箱の大きさは10cm X 10cm X 10cmであることが知られているので、105mm程度の間隔が適切である。現在の層数、行数、列数に基づいて、V002の座標を乗算命令で更新すればよい。注意この例では、V 002(0)はx方向であり、ボックスの列数調整に基づいて、V002(1)はy方向であり、ボックスの行数調整に基づいて、V002(2)はZ軸方向であり、ボックスの層数調整に基づいている。XYの変化方向に応じて加算または減算命令を選択します。この例では、X方向の位置はボックスの桁数の増加に応じて減少します。Y方向位置は箱が行数の増加に応じて減少する。そして更新後V002の座標で、加算命令を用いてV003の座標を更新する。

//Column#
MOD B003 3
//
//Reset V002
SET V002 V010
//Z-axis
SET D000 105.000
MUL D000 B001
ADD V002(2) D000 
//Y-axis
SET D000 105.000
MUL D000 B002
SUB V002(1) D000 
//X-axis
SET D000 105.000
MUL D000 B003
SUB V002(0) D000
//
//Update V003
SET V003 V002
ADD V003(2) 105

        7. 最後に、門形枠式軌跡に必要な点はP 2とP 3だけになります。一般的には、P 2はパレット領域の中心直上に設置され、任意の層の高い箱の位置に接触しなければよい。次にプログラムテストを開始します。すべてのV 3、V 2点が問題なく到達できるのであれば、P 3の座標をそのまま同じP 2にすればよい。仲介ポイントを追加する必要がある位置がある場合、これらの仲介ポイントは必要に応じてP 3に割り当てるために、他のP変数に1つずつ保存する必要があります。テスト時の発見:ボックス0とボックス3をスムーズに置くためには共通の仲介点が必要である。ボックス6とボックス9には共通の仲介点が必要です。ボックス8とボックス11には共通の仲介点が必要です。この例は、仲介点を必要とする位置が一般的にロボットから最も遠く、最も近い領域の近くに集中していることを反映している。

        8. これら3つのP 3候補をそれぞれP010、P011、P012にティーチングする。プログラムの初期化領域にSETJOINT命令で設定することもでき、変数が他の人に修正されないようにすることができます。(実際には、P 1、V 1、初期V 2、P 2を含むすべての基準ポイントは、SETJOINTまたはSETPOSEを介して初期化領域に設定することをお勧めします。そうしないと、変数が他のユーザーに変更されるとロボットが誤った位置に移動することになります。)

NOP
//*********** Initialization ************
SET B000 0
MOVJ P001 VJ=100% CR=0.0MM ACC=50 DEC=50
SETJOINT P010 19.354,-54.491,72.265,-109.329,90.500,8.810,0.0000,0.0000
SETJOINT P011 19.904,-73.585,72.264,-93.012,90.538,8.805,0.0000,0.0000
SETJOINT P012 19.878,-109.548,122.590,-107.113,90.541,8.805,0.0000,0.0000
//---------------------------------------
//

        9. 次に計算領域で各番号の箱を運搬する際に使用するP 3をロボットに知らせる。簡単なIFコマンドで完了します。

ボックス番号

P3よびだしポイント

ボックス番号

P3よびだしポイント

0

P10

6

P11

1

P2

7

P2

2

P2

8

P12

3

P10

9

P11

4

P2

10

P2

5

P2

11

P12

//
//Update P003
IF B000 = 0 OR B000 = 3 THEN
SET P003 P010
ELSEIF B000 = 6 OR B000 = 9 THEN
SET P003 P011
ELSEIF B000 = 8 OR B000 = 11 THEN
SET P003 P012
ELSE
SET P003 P002
ENDIF

これで、1つのパレタイジングプログラムが完了します。以下は完全版です。

NOP
//*********** Initialization ************
SET B000 0
MOVJ P001 VJ=100% CR=0.0MM ACC=50 DEC=50
SETJOINT P010 19.354,-54.491,72.265,-109.329,90.500,8.810,0.0000,0.0000
SETJOINT P011 19.904,-73.585,72.264,-93.012,90.538,8.805,0.0000,0.0000
SETJOINT P012 19.878,-109.548,122.590,-107.113,90.541,8.805,0.0000,0.0000
//---------------------------------------
//
//************ Calculation **************
WHILE B000<12 DO
//Layer#
SET B001 B000
DIV B001 6
//Row#
SET B002 B000
MOD B002 6
SET B003 B002
DIV B002 3
//Column#
MOD B003 3
//
//Reset V002
SET V002 V010
//Z-axis
SET D000 105.000
MUL D000 B001
ADD V002(2) D000 
//Y-axis
SET D000 105.000
MUL D000 B002
SUB V002(1) D000 
//X-axis
SET D000 105.000
MUL D000 B003
SUB V002(0) D000
//
//Update V003
SET V003 V002
ADD V003(2) 105
//
//Update P003
IF B000 = 0 OR B000 = 3 THEN
SET P003 P010
ELSEIF B000 = 6 OR B000 = 9 THEN
SET P003 P011
ELSEIF B000 = 8 OR B000 = 11 THEN
SET P003 P012
ELSE
SET P003 P002
ENDIF

//---------------------------------------
//
//************** Movement ***************
//Pick Up
//(Insert Pick Up Start Signal Here)
MOVL V001 AV=50.0MM/S PL=0
#CALL JOB:VG10_A_GRIP
TIMER T=0.5 S
MOVL P001 V=3000MM/S CR=100.0MM ACC=100 DEC=100
//Place
MOVJ P002 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVJ P003 VJ=100% CR=100.0MM ACC=100 DEC=100
MOVJ V003 V=3000MM/S CR=1.0MM ACC=100 DEC=50
MOVL V002 V=3000MM/S CR=0.0MM ACC=100 DEC=50
#CALL JOB:VG10_A_RELEASE
TIMER T=0.5 S
MOVL V003 V=3000MM/S CR=10.0MM ACC=100 DEC=100
MOVJ P003 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P002 V=3000MM/S CR=100.0MM ACC=100 DEC=100
MOVJ P001 VJ=100% CR=0.0MM ACC=100 DEC=100
INC B000
//---------------------------------------
ENDWHILE
END

        この例では、ロボットの座標系とパレタイジング領域の座標系は平行である。だから位置計算は比較的簡単です。座標系が平行でない場合、列数または行数の変化はx軸とy軸の座標を同時に変更します。次のコードは、パレタイジング領域座標系とロボット座標系の30度程度の偏差の例です。測定により列数の変化はx軸座標を90.932 mm減少させ、y軸座標を52.500 mm減少させることが分かった、行数の変化により、x軸座標は52.500 mm減少し、y軸座標は90.932 mm減少する。

//Reset V002
SET V002 V010
//Z-axis
SET D000 105.000
MUL D000 B001
ADD V002(2) D000 
//Row Offset
SET D000 90.932
SET D001 52.500
MUL D000 B002
MUL D001 B002
SUB V002(0) D000
SUB V002(1) D001 
//Column Offset
SET D002 52.500
SET D003 90.932
MUL D002 B003
MUL D003 B002
SUB V002(0) D002
SUB V002(0) D003

        X軸とY軸の座標を計算するために必要な変化値を測定する方法が分からない場合は、ロボットを使用して測定することができます。

        下図のように、ロボットが箱を持っている状態を用いて、それぞれ0番の位置、1番の位置、3番の位置をV 100、V 101、V 103の3つの位置に記録することができる。ティーチング中は高さ偏差による影響にかかわらず行うことができます。しかし、Rx、Ry、Rzの3方向の回転がないことを保証しなければならない。

        列数変化によるX軸座標変化 = V101のX軸座標 − V100のX軸座標

        列数変化によるY軸座標変化 = V101のY軸座標 − V100のY軸座標

        行数変化によるX軸座標変化 = V103のX軸座標 − V100のX軸座標

        行数変化によるY軸座標変化 = V103のY軸座標 − V100のY軸座標

        次に、上の例のD 000 ~ D 003のパラメータをそれぞれ置換すればよい。

点击显示全文
赞同0
发表评论
分享

手机扫码分享
0
324
收藏
举报
收起
登录
  • 密码登录
  • 验证码登录
还没有账号,立即注册
还没有账号,立即注册
注册
已有账号,立即登录
选择发帖板块
举报
请选择举报理由
举报
举报说明