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

