<< 前へ        次へ >>

ID : 7232

HandEyeInitPos

機能

工場出荷時にEVP用に設定されたロボットの初期姿勢を返します。

構文

HandEyeInitPos ()

戻り値

工場出荷時にEVP用に設定されたロボットの初期姿勢をポジション型データで返します。

解説

EVPでは、通常は、カメラをロボットとは別の場所に固定して使用します。COBOTTAの場合は、ハンドにカメラが装着されているため、EVPを使用する場合は、毎回COBOTTAを同じ姿勢にして撮像を行います。

COBOTTAとAFカメラ(N10-W02)をセットで購入された場合は、工場出荷時に、下図のような姿勢でキャリブレーションを行い記憶しています。

このコマンドは、その姿勢データを返します。 EVPを使用する場合は、ロボットをこのコマンドで取得した姿勢に動かし、その姿勢で撮像を行います。

COBOTTAの軸 角度(度)
1

0

2

0

3

90

4 0
5 90
6 任意

注意事項

  • このコマンドは、EVP使用時に使用するもので、COBOTTAとAFカメラ(N10-W02)をセットで購入された場合に使用可能です。
  • COBOTTAのVer.2.7.*かつEVPのVer.1.3.1以降を使用する場合、EVPガイダンスで[COBOTTAのHand-Eye calibration dataを使用する。]を有効にしたときは、このコマンドを使用せず、"EVP取扱説明書" の付録1のサンプルをご使用ください。

用例

'!TITLE "PlainHandEyeEVP"

' アプローチ長	100mm
' デパート長	100mm

' プレース位置         P[PlaceNumber]

' EVPRunにて、カメラ撮影&画像処理&ワーク位置取得し下記のデータに値をセット
' 見つかったワーク個数  I[NumberOfWorks]
' 見つかったワーク位置  P[WorkPlaceNumber], P[WorkPlaceNumber+1], ... ,
'                       P[WorkPlaceNumber+見つかったワーク個数-1]
' 見つかったワーク種類  I[WorkTypeNumber], I[WorkTypeNumber+1], ... ,
'                       I[WorkTypeNumber+見つかったワーク個数-1]

' プログラムの流れ
' HandEyeInitPos()へ移動
'  -> カメラ撮影&画像処理
'  -> 見つかったワーク位置とP[PlaceNumber]を往復する。(見つかったワーク個数分だけ繰り返す)
'  -> HandEyeInitPos()へ移動

'------------設定-------------

' EVPプロジェクトファイル名
#Define EVPProjectFileName "project.evp"

' ワークからの高さ(テスト用安全マージン) [mm]
#Define WorkHeight 20

' 画像取得時のロボット位置のP変数番号
#Define RobotImageAquisitionNumber 0

' プレース位置のP変数番号
#Define PlaceNumber 1

' 見つかったワーク個数のI変数番号
#Define NumberOfWorks 0

' 見つかったワーク位置のP変数開始番号
#Define WorkPlaceNumber 10

' 見つかったワーク種類のI変数開始番号
#Define WorkTypeNumber 10

'-----------------------------

#Include "Variant.h"
Dim ctrl as Object

Sub Main
  Dim index As Long

  TakeArm Keep = 0

  ' EVP初期設定 (EVPプロジェクトファイル選択)
  EVPInitialize EVPProjectFileName
  
  ' キャリブレーション時の姿勢
  Dim initPos as Position
  initPos = HandEyeInitPos()
  
  Move P, initPos
  
  ' カメラ撮影&画像処理&ワーク位置取得
  EVPRun
  
  ' 見つかったワーク個数分繰り返す
  For index = 0 To I[NumberOfWorks] - 1
    
    '------- 見つかったワーク位置へ移動 -------------------------
    'アプローチ動作  P[10 + index]上空100mmにアプローチ
    Approach P, P[WorkPlaceNumber + index], @0 100
    ' 下降動作    P[10 + index]に下降
    Move L, @C P[WorkPlaceNumber + index] 
    ' チャックやアンチャック動作等を必要に応じてここに記述
    Delay 500
    ' 上昇動作  100mm
    Depart L, @0 100
    
    '------- プレース位置での動作 -------------------------
    'アプローチ動作  P[1]上空100mmにアプローチ
    Approach P, P[PlaceNumber], @0 100
    ' 下降動作    P[1]に下降
    Move L, @C P[PlaceNumber] 
    ' チャックやアンチャック動作等を必要に応じてここに記述
    Delay 500
    ' 上昇動作  100mm
    Depart L, @0 100
    
  Next
  
  ' 画像取得時のロボット位置へ移動
  Move P, initPos
  
End Sub

Sub EVPInitialize (EVPProjectFile as string)
  ctrl = Cao.AddController("Runner", "CaoProv.DENSO.EVP", "",_
         "project=" & EVPProjectFile)
End Sub

Sub EVPRun

  Dim index As Long
  Dim ReturnValue As Variant
  Dim vntWorks As Variant
  Dim vntWork As Variant

  ' カメラ撮影&画像処理
  ' =======================================
  ' 詳細情報:Runコマンドの返り値仕様
  ' Return value of Run Command.
  ' result <VT_VARIANT | VT_ARRAY> =
  '    Work Count	 	... <VT_I4>
  '    Work Datas 		... <Work Data | VT_ARRAY>
  '    Work Data		... <VT_VARIANT | VT_ARRAY>
  '          (classId, P(x, y, z, rx, ry, rz, fig))
  '      Feeder Action	... <VT_I4>
  ' =======================================
  ReturnValue = ctrl.Run()

  ' 見つかったワーク個数をI[0]へ格納
  I[NumberOfWorks] = ReturnValue( 0 )

  ' ワーク位置をP[10], P[11], ..., P[10+見つかったワーク個数-1]へ格納
  vntWorks = ReturnValue( 1 )
  For index = 0 To I[NumberOfWorks] - 1
    vntWork = vntWorks(index)

    ' ワーク位置を取得
    P[WorkPlaceNumber + index] = vntWork( 1 )

    ' ワークの高さをP[10], P[11], ..., P[10+見つかったワーク個数-1]へ設定
    LetZ P[WorkPlaceNumber + index] = PosZ(P[WorkPlaceNumber + index]) + WorkHeight
  Next
End Sub

ID : 7232

<< 前へ        次へ >>