今回の記事ではRoboGuideのJ500オプションを使ってPalletizing、UnPalletizing の簡単なアプリケーションを作成します。
さ、はじめよう。

Reference Link
http://soup01.com/ja/category/%e3%83%ad%e3%83%9c%e3%83%83%e3%83%88/fanuc/
Implementation
Robot Options
新規プロジェクトを作成するときにはJ500(Palletizing)オプションを入れてください。

Done!プロジェクトが作成されました。

Add Fixture
まずは部品の置き台を作成するため、Fixture>Add Fixture>CAD Libraryをクリックします。

適当な机を追加します。

Done!机がプロジェクトに追加されました。

机をロボットの手前に置くようにします。こちらの机には部品が置台になり、ロボットがここから部品を取って別の場所に移動するようにします。

置台のサイズをScaleパラメータで調整します。

そして置台をもう1つ増やしましょう。

Add Box
今度は箱のPartを追加する前に、Parts>Add Part>Boxをクリックします。

Done!Parts用の箱が追加されました。

Configure Box to Fixture
箱を置台に設置するため、先程追加した机をダブルクリックし、Parts>Part1をCheck入れます。

次はPart OffsetにあるEdit Part OffsetのCheckboxを入れます。

Partの位置と方向を調整するパラメータを編集できるようになります。

Done!箱は置台に置けました。

2つ目の置台の場所を調整します。

Add More Boxes
次は置台の上にある箱数を増やすため、Parts>Addをクリックします。

Place Partsの操作メニューが表示されました。

XYZを2,3,2に設定し、合計12個の箱を作ります。

Done!みなさんも気がつくかもしれないが、このPartsの追加方法ですべての箱も同じGroupであり、また配列で管理されます。

もう1つの置台にも先と同じ操作で箱を追加しましょう。

Done!

Tools
次はツールを設定します。

こちらはツールに関する設定画面になります。

ロボットのPayloadなどはアプリケーションに合わせて設定しましょう。

次はロボットが先程追加されたPartsをPickできるように設定します。
PartsのTab>Part1をCheck入れてください。

次はPartsのOffset 項目でPartsを丁度ツールの真ん中になるように調整してください。

大体はこんな感じです。

次はロボットがすべてのPartsにもPickできるかをCheckします。
TableA..[1,1,1]を選択し、MoveToでロボットを移動させます。

Done!一番したPartには届きそうですね。

先程と同じの操作でTableA..[2,1,1]を選択し、MoveToでロボットを移動させ、ロボットの姿勢や他のものの干渉も確認してください。

TableA..[1,3,1]を選択し、MoveToでロボットを一番左の端っこに移動させ、ロボットの姿勢や他のものの干渉も確認してください。

TableBの確認も忘れずに!

ロボットの姿勢や干渉も大丈夫そうですね。


Robot Program
ロボットプログラムを作成するため、Teach Pendantを起動します。

SELECTボタンクリックしロボットプログラムの一覧画面にシフトします。

CREATEボタンをクリックし新しいロボットプログラムを作成します。

MAINPROGRAM
こちらのMAINPROGRAMはロボットのメイン制御であり、他のSubプログラムを呼び出すためになどの役割があります。

ProgramPick
こちらのProgramPickはロボットのPickParts部分の制御を担当します。

ProgramPlace
こちらのProgramPickはロボットのPlaceParts部分の制御を担当します。

Add Simulation Program
次はSimulatinプログラムをプロジェクトに追加するため、Robot>右クリック>Add Simulation Programをクリックします。

Simulationプログラム名を設定します。

Simulation Pick
こちらはロボットがPartsを取る動作をシミュレーションするプログラムです。

PositionのRecordなどの動作は説明しませんが、Inst>Pickupコマンドを追加し、ロボットがPartsを取る動作をトリガーできます。

こちらはPickup Simulationの設定画面になります。

下図のようにロボットのツールUT1がPart1をTableAから取り出す動作を設定します。

Simulation Place
次はPlaceのシミュレーションプログラムを作成します。

今回はInst>Dropコマンドを追加します。

こちらはDrop Simulationの設定画面になります。

下図のようにロボットのツールUT1がPart1をTableBに置く動作を設定します。

Configure Home Position
ロボットの待機位置を設定します。

その待機位置をPR(Position Register)に保存しましょう。

UnPalletizing
ここからPartsをTableAから取り出すプログラムを作成します。PROGRAMPICKを開き、INSTをクリックし、新たなコマンドを追加します。

Palletizing Command
7 Palletizingを選択します。

Statement
PALLETIZING-Bを設定します。

こちらはPALETIZINGの構築画面になります。

TYPE
TYPEをDEPALLに設定します。

INCR
INCRを-1に設定します。

ROWS・COLUMNS・LAYERS
ROWS・COLUMNS・LAYERSをアプリケーションに合わせて設定します。
今回の記事では、ROWS=3、COLUMNS=2、LAYERS=2に入力します。

PALLETIZING Bottom Points
次はPALLETIZINGの各Pointを設定します。

Point1
Point1はTableA[1,1,1]位置に設定します。

SHIFT+RECORDでPoint1を記憶します。

PALLETIZING Bottom Points画面に設定したPointでは”–”表示に変わります。

Point2
Point2はTableA[1,3,1]位置に設定します。

Point3
Point3はTableA[2,1,1]位置に設定します。

Point4
Point4はTableA[1,1,2]位置に設定します。

Done!

PALLETIZING Route Points
次はPalletizingのOperation位置を設定します。

BTM
BTMは一番した箱のPickup位置になります。

A1
A1はPartsのPackup位置に設定します。

R1
R1はPartsのPackup位置に設定します。

Program
RoboGuideは自動的に移動コマンドを生成してくれます。

それだけではロボットがPartsを取ってあげられないので、先ほど作成したPickシミュレーションを呼び出します。

Palletizing
今度はPalletizing側のプログラムを作成します。


Palletizing Command
7 Palletizingを選択します。

Statement
PALLETIZING-Bを設定します。

こちらはPALETIZINGの構築画面になります。

PAL_REG
PAL_REGを2に設定してください。先程のPlacingのPaletizingではPAL_REGを1に占有しましたので。

ROWS・COLUMNS・LAYERS
ROWS・COLUMNS・LAYERSをアプリケーションに合わせて設定します。
今回の記事では、ROWS=3、COLUMNS=2、LAYERS=2に入力します。

Done!

PALLETIZING Bottom Points
次はPALLETIZINGの各Pointを設定します。
Point1
Point1はTableB[1,1,1]位置に設定します。

Point2
Point2はTableB[1,3,1]位置に設定します。
Point3
Point3はTableB[2,1,1]位置に設定します。

Point4
Point4はTableB[1,1,2]位置に設定します。

Done!

PALLETIZING Route Points
次はPalletizingのOperation位置を設定します。

A1
A1はPartsの置き位置に設定します。

BTM
BTMは一番した箱の位置になります。

R1
R1はPartsの置き位置に設定します。

Program
RoboGuideは自動的に移動コマンドを生成してくれます。

それだけではロボットがPartsを机に置かないので、先ほど作成したPlaceシミュレーションを呼び出します。

INIT
次は初期化のプログラムINITを作成します。

2つのPaletizing Registerの位置を初期化し、またR[1]を0にリセットします。そのレジスタはロボットが現在Pick した箱の数を記録します。

MAIN
こちらはMAINのロボットプログラムです。
- ロボットをHome待機位置に戻ります
- PLINITプログラムを呼び出し、レジスタをリセットします。
- もしR[1]が12より小さいなら、PICK And Placeのプログラムを呼び出し、箱をTableAからTableBに持っていきます。
- R[1]を1に足します。
- もしR[1]の現在値は12のであれば、ロボットをHome待機位置に戻す


Result
こちらは実際の動作になります。