' DENSO Robot Imaging Library Sample No.1
'
' - イメージ番号11にサーチモデルを格納しておく．

Sub Main
	' 各コントローラの設定に変更する.
	Set RC7 = Cao.AddController("RC7", "CaoProv.DENSO.NetwoRC", "", "Conn=eth:10.6.235.12")
	Set Robo = RC7.AddRobot("VM")
	Set RoboP = Robo.AddVariable("@CURRENT_POSITION")
	Set P11 = RC7.AddVariable("P11")	  ' 移動先用変数
	CurrentPos = dat.ToVar(RoboP.Value)	  ' ロボットの初期位置

	Set Vis = Cao.AddController("cv", "CaoProv.OpenCV", "", "")
	Set rawImg = Vis.AddFile("Cam1", "ID=1")
	
	' ロボットのスピード設定
	Robo.Speed -1, 50
	
	' 初期位置を探す 見つかるまで終わらない.
	Do 
		res = rawImg.MatchTemplate2(11, 3, 0.9, -10, 10, 2, 2, 1, 0)
		EXT.Delay(100)
	Loop Until UBound(res) >= 0 
	OldX = res(0)(0)
	OldY = res(0)(1)

	Do
		' パターンマッチングでターゲットをサーチ
		res = rawImg.MatchTemplate2(11, 3, 0.9, -10, 10, 2, 2, 1, 0)

		' 前回の位置との差分だけロボットを並進移動　3ピクセル以上の差分があれば移動.
		If ((OldX - res(0)(0))*(OldX - res(0)(0)) + (OldY - res(0)(1))*(OldY - res(0)(1)) > 4)Then
			' 移動距離計算　移動できない場所に移動しないように注意.
			difX = (OldX - res(0)(0))/10
			difY = (OldY - res(0)(1))/10
			P11.Value = Array(CurrentPos(0) - difX, CurrentPos(1) - difY, CurrentPos(2), CurrentPos(3), CurrentPos(4), CurrentPos(5), CurrentPos(6))
			
			' ロボット移動
			Robo.Move 1, "@p P11"
		End If

		EXT.Delay(1000)
	Loop
End Sub
