引言:一般機器人與視覺主機配合實現(xiàn)抓取或放置時,由視覺主機拍照定位,然后發(fā)出機械坐標的偏差值給機器人,一般會存在X方向的偏差,Y方向的偏差,和角度的偏差,故視覺主機發(fā)出是一串字符串,字符串中包含X,Y ,A, 在機器人接收到之后,需要解析,把字符串解析成數(shù)字然后再加到坐標點中去 ,X,Y可以直接加到坐標中去,角度不能直接加到坐標中,需要轉換成機器人的4要素才能相相。 MODULE gaowei RECORD code !建立一個名為code的自定義數(shù)據(jù)結構 num x; !定義數(shù)據(jù)數(shù)字類型,變量名為x num y; !定義數(shù)據(jù)數(shù)字類型,變量名為y num a; !定義數(shù)據(jù)數(shù)字類型,變量名為a ENDRECORD VAR code message; !定義類型為code的message的變量名 VAR string receive_string; !定義接收到的變量名 PROC main() Var num x; Var num y; Var num a; WHILE true DO receive_string:=“10.2,15.5,30.4,”; !給變量賦坐標初值 !假定視覺發(fā)來的數(shù)據(jù)是X軸偏移10.2 Y軸偏侈15.5,角度偏移30.4 message:=Analysis(receive_string); !調用數(shù)據(jù)解析功能塊,填入坐標數(shù)據(jù)據(jù),用message來接收 x:=message.x; y:=message.y; a:=message.a; TPWrite ''\Num:=x; TPWrite ''\Num:=y; TPWrite ''\Num:=a; stop; ENDWHILE ENDPROC !建立一個返回數(shù)據(jù)類型為code的功能塊,傳入變量是視覺主機發(fā)送的位置及角度數(shù)據(jù); 此功能塊為封裝之后的,所以朋友們可以直接調用, FUNC code Analysis(string received_string) VAR code message; VAR string Pos_Str{3}; VAR num m:=1; VAR num n_arr:=1; VAR bool bOK:=FALSE; FOR i FROM 1 TO StrLen(received_string) DO IF StrMemb(received_string,i,',') THEN Pos_Str{n_arr}:=StrPart(received_string,m,i-m); m:=i+1; n_arr:=n_arr+1; ENDIF ENDFOR bOK:=StrToVal(Pos_Str{1},message.x); bOK:=StrToVal(Pos_Str{2},message.y); bOK:=StrToVal(Pos_Str{3},message.a); received_string:=''; RETURN message; ENDFUNC ENDMODULE 運行效果圖: |
|