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

