サンプルプログラム2:MM_S2_Viz_Basic

現在ご覧いただいているのは2.0.0 バージョンの内容です。異なるバージョンを参照する場合は、画面右上のボタンから切り替えが可能です。

■ 最新版をご利用される場合は、弊社ホームページよりダウンロードが可能です。ダウンロードにはパスワードが必要となりますので、サポート窓口までお問い合わせください。

■ ご利用中のバージョンが分からない場合はお気軽にサポート窓口までご連絡ください。

プログラム概要

機能

ロボットがMech-Vizプロジェクトをトリガーして実行し、その後計画された経路を取得して、把持および配置を実行します。

ファイル場所

Mech-VisionとMech-Vizソフトウェアのインストールディレクトリにある Communication Component/Robot_Interface/KUKA/sample/MM_S2_Viz_Basic

必要なプロジェクト

Mech-VisionとMech-Vizプロジェクト

使用前提

  1. 標準インターフェース通信設定 が完了しました。

  2. 自動キャリブレーション が完了しました。

このサンプルプログラムは参考用です。ユーザーは実際の状況に応じて、このプログラムを基に変更を加える必要があります。このプログラムをそのまま使用しないでください。

プログラム説明

以下はMM_S2_Viz_Basicサンプルプログラムのコードと関連する説明です。

DEF MM_S2_Viz_Basic ( )
;---------------------------------------------------
; FUNCTION: trigger Mech-Viz project and get
; planned path
; Mech-Mind, 2023-12-25
;---------------------------------------------------
   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,0)
   ;move to robot home position
PTP HOME Vel=100 % DEFAULT
   ;initialize communication parameters (initialization is required only once)
   MM_Init_Socket("XML_Kuka_MMIND",873,871,60)
   ;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0]
   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(1,pos_num,vis_pos_num,status)
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=2038 means no point cloud in ROI
      halt
   ENDIF
   ;save waypoints of the planned path to local variables one by one
   MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Jps(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Jps(3,Xpick_point3,label[3],toolid[3])
   ;follow the planned path to pick
   ;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0]
   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0]
   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   halt
   ;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 Tool[1] Base[0]
   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[1] Base[0]
   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[1] Base[0]
   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   halt
   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0]
   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT
END

上記のサンプルプログラムの処理流れは、下図の通りです。

sample2

下表は上記のプログラムのコードとその説明です。コマンド名のリンクをクリックすることで、その詳細を確認できます。

処理流れ コートと説明

座標系設定

   ;set current tool no. to 1
   BAS(#TOOL,1)
   ;set current base no. to 0
   BAS(#BASE,0)
  • BAS(#TOOL,1):現在選択されているツール座標系の番号を1に設定します。

  • BAS(#BASE,0):現在選択されているベース座標系の番号を0に設定します。

上記の2つのコマンドは、現在選択されているツール座標系とベース座標系を設定することを意味します。

Home位置に移動

   ;move to robot home position
PTP HOME Vel=100 % DEFAULT
  • PTP:ポイントツーポイント(Point to Point)の移動方式。ロボットはTCPを最速経路で目標点へ移動させます。

  • HOME:目標点の名称(ここではHome位置を指す)。

    Home位置を事前に設定する必要があります。詳細については、キャリブレーションの開始点を設定 をご参照ください。

  • Vel=100 %:速度。

  • DEFAULT:システムが自動で割り当てるモーションデータグループ名。

このコマンドは、ロボットがポイントツーポイント方式でティーチングされたHome位置へ移動することを意味します。

通信初期化

   ;initialize communication parameters (initialization is required only once)
   MM_Init_Socket("XML_Kuka_MMIND",873,871,60)

ロボットは MM_Init_Socket コマンドを使用して、XML_Kuka_MMIND.xmlファイルの設定情報に基づき、ビジョンシステムとTCPプロトコル通信接続を確立します。

XML_Kuka_MMINDファイルの詳細については、MM_Init_Socket コマンドの説明をご参照ください。

撮影位置に移動

   ;move to image-capturing position
LIN camera_capture Vel=1 m/s CPDAT1 Tool[1] Base[0] 
  • LIN:直線移動の方式。

  • camera_capture:目標点の名称(ここでは撮影位置を指す)。

    撮影位置を事前に設定する必要があります。詳細については、キャリブレーション開始点を設定 をご参照ください。
  • Vel=1 m/s:速度。

  • CPDAT1:システムが自動で割り当てるモーションデータグループ名。

  • Tool[1]:1番のツール座標系。

  • Base[0]:0番のベース座標系。

このコマンドは、ロボットが直線移動の方式でティーチングされた撮影位置に移動することを意味します。

Mech-Vizプロジェクトをトリガー

   ;trigger Mech-Viz project
   MM_Start_Viz(2,init_jps)
  • MM_Start_Viz:Mech-Vizプロジェクトの実行をトリガーするためのコマンド。

  • 2:変数init_jpsが表す関節角度データをMech-Vizプロジェクトに送信します。

  • init_jps:ユーザーによりカスタマイズされた関節角度。把持経路を計画する際に、Mech-Vizプロジェクトの仮想ロボットはこの関節角度から最初の経路点に移動します。

このコマンドは、ロボットがビジョンシステムをトリガーしてMech-Vizプロジェクトを実行し、Mech-VizがMech-Visionから出力されたビジョン結果に基づいて把持経路を計画することを意味します。

計画された経路を取得

   ;get planned path, 1st argument (1) means getting pose in JPs
   MM_Get_VizData(1,pos_num,vis_pos_num,status)
  • MM_Get_VizData:Mech-Vizで計画された経路を取得するためのコマンド。

  • 1:取得した経路点の位置姿勢を関節角度の形式として指定します。

  • pos_num:この変数はビジョンシステムから返された経路点の数を保存します。

  • vis_pos_num:この変数は、「ビジョン処理による移動」の経路点(把持点)が経路全体における位置番号を保存します。

  • status:この変数はコマンド実行のステータスコードを保存します。

このコマンドは、ロボットがMech-Vizプロジェクトから返された計画経路を取得することを意味します。

返された計画経路はロボットのメモリに保存されるため、この時点ではユーザーが計画経路を直接取得することはできません。その後の「計画された経路を保存」コマンドを実行することで、経路を取得することができます。
   ;check whether planned path has been got from Mech-Viz successfully
   IF status<> 2100 THEN
      ;add error handling logic here according to different error codes
      ;e.g.: status=2038 means no point cloud in ROI
      halt
   ENDIF
  • IF A THEN …​ ENDIF:条件Aが成立する場合、プログラムはIFとENDIFの間のコードを実行します。

  • <>:等しくないことを意味します。

上記のコードは、ステータスコードstatusが2100の場合、ロボットがすべての計画された経路を正常に取得することを意味し、それ以外の場合はビジョンシステムに異常が発生し、プログラムはIFとENDIFの間のコードを実行することを意味します。ユーザーは、特定のエラーコードに応じて適切な処理を行うことが可能です。本サンプルでは、すべてのエラーコードに対して同一の処理を行い、haltコマンドを使用してプログラムの実行を一時停止しています。

計画された経路を保存

   ;save waypoints of the planned path to local variables one by one
   MM_Get_Jps(1,Xpick_point1,label[1],toolid[1])
   MM_Get_Jps(2,Xpick_point2,label[2],toolid[2])
   MM_Get_Jps(3,Xpick_point3,label[3],toolid[3])
  • MM_Get_Jps:計画された経路を保存するためのコマンド。

  • 1:最初の経路点を保存します。

  • Xpick_point1:この変数は最初の経路点の関節角度を保存します。

  • label[1]:この変数は最初の経路点に対応するラベルを保存します。

  • toolid[1]:この変数は最初の経路点に対応するロボットハンド番号を保存します。

「MM_Get_Jps(1,Xpick_point1,label[1],toolid[1]」コマンドは、最初の経路点の関節角度、ラベル、およびロボットハンド番号をそれぞれ指定された変数に保存することを意味します。

このサンプルでは、Mech-Vizで計画された経路に3つの経路点が含まれていると仮定しています。最初の経路点は「把持のアプローチ点(Xpick_point1)」、2番目の経路点は「把持点(Xpick_point2)」、3番目の経路点は「把持の離れる点(Xpick_point3)」です。Mech-Vizプロジェクトで作成されたワークフローに応じて、プログラムを適切に変更し、経路を保存する必要があります。

把持のアプローチ点に移動

   ;move to approach waypoint of picking
PTP pick_point1 Vel=50 % PDAT1 Tool[1] Base[0] 

ロボットは把持のアプローチ点に移動します。ここでのpick_point1は、前述のXpick_point1と同じ位置を指します。

把持点に移動

   ;move to picking waypoint
PTP pick_point2 Vel=10 % PDAT2 Tool[1] Base[0] 

ロボットは把持点に移動します。ここでのpick_point2は、前述のXpick_point2と同じ位置を指します。

DO設定による把持

   ;add object grasping logic here, such as "$OUT[1]=TRUE"
   halt

ロボットが把持点に到達した後、DOコマンド(例えば「$OUT[1]=TRUE」)を設定して、ロボットハンドを制御し、ワークを把持します。実際の状況に応じてDO設定を調整する必要があります。

haltコマンドはプログラムの実行を一時停止します。DO設定コマンドが設定されている場合、このhaltコマンドは削除できます。

把持の離れる点に移動

   ;move to departure waypoint of picking
PTP pick_point3 Vel=50 % PDAT3 Tool[1] Base[0] 

ロボットは把持の離れる点に移動します。ここでのpick_point3は、前述のXpick_point3と同じ位置を指します。

中間点に移動

   ;move to intermediate waypoint of placing
PTP drop_waypoint CONT Vel=100 % PDAT2 Tool[1] Base[0]

ロボットは把持の離れる点と配置のアプローチ点の間の中間点(drop_waypoint)に移動します。

  • 中間点を追加することで、ロボットの移動がスムーズになり、不要な衝突を避けることができます。実際の状況に応じて複数の中間点を追加することが可能です。

  • 中間点を事前に設定する必要があります。詳細については、キャリブレーション開始点を設定 をご参照ください。

配置のアプローチ点に移動

   ;move to approach waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0] 

ロボットが中間点から配置のアプローチ点(drop_app)に移動します。

  • 配置のアプローチ点を追加することで、ロボットが移動する際にシーンの物体(コンテナなど)と衝突するのを防ぐことができます。

  • 配置のアプローチ点を事前に設定する必要があります。詳細については、キャリブレーション開始点を設定 をご参照ください。

配置点に移動

   ;move to placing waypoint
LIN drop Vel=0.3 m/s CPDAT4 Tool[1] Base[0] 

ロボットが配置のアプローチ点から配置点(drop)に移動します。

  • 配置点は他の作業セルや人員、機器から十分な安全距離を確保し、ロボットの最大可動範囲を超えないようにする必要があります。

  • 配置点を事前に設定する必要があります。詳細については、キャリブレーション開始点を設定 をご参照ください。

DO設定による配置

   ;add object releasing logic here, such as "$OUT[1]=FALSE"
   halt

ロボットが配置点に到達した後、DOコマンド(例えば「$OUT[1]=FALSE」)を設定して、ロボットハンドを制御し、ワークを配置します。実際の状況に応じてDO設定を調整する必要があります。

haltコマンドはプログラムの実行を一時停止します。DO設定コマンドが設定されている場合、このhaltコマンドは削除できます。

配置の離れる点に移動

   ;move to departure waypoint of placing
LIN drop_app Vel=1 m/s CPDAT3 Tool[1] Base[0] 

ロボットが配置点から配置の離れる点(drop_app)に移動します。

  • 配置の離れる点を追加することで、ロボットが移動する際にシーン内の物体(コンテナなど)との衝突を防ぐことができます。

  • 配置の離れる点を事前に設定する必要があります。詳細については、キャリブレーション開始点を設定 をご参照ください。

Home位置に移動

   ;move back to robot home position
PTP HOME Vel=100 % DEFAULT

ロボットが配置の離れる点から初期位置に戻ります。

Home位置を事前に設定する必要があります。詳細については、キャリブレーションの開始点を設定 をご参照ください。

この情報は役に立ちましたか?

ご意見・ご要望がございましたら、以下よりお寄せください:

Mech-Mindは、お客様のプライバシーを重視しています

このサイトでは最高の体験を提供するために Cookie を使用しています。サイトの閲覧を続ける場合、Cookie の使用に同意したことになります。「拒否する」を選択すると、このサイトを訪れた際に追跡や記憶が行われないように単独の Cookie が使用されます。