器人與相機視覺通訊,主要包括:
1. socket通訊建立及收發數據
2. 數據關鍵信息的提取
3. 提取信息與機器人位置robtarget(或者工件坐标系下的oframe)的轉化
一、socket的創建
1)什麼是socket通訊?
就是TCP/IP通訊,無協議,在微軟環境下稱為socket
2)socket通訊能幹什麼?
可以收發制定的數據,包括sting字符串,byte數組等
3)創建socket機器人需要什麼選項?
機器人需要616-1 PC-INTERFACE選項
4)socket通訊網線插哪個網口?
Service口(IP固定:192.168.125.1)或者Wan口都可以,(可以自己設置)
5)創建client端的實例
通常機器人和相機通訊,機器人作為client端。
1)新建一個機器人系統,注意建立系統時加入pc-interface選項
2)為了避免之前的連接沒有關閉,先插入socketclose指令,後面的socket1為自己新建的socketdev類型的變量
3)之後插入創建連接socketCreate
4)插入建立連接SocketConnect,後面需要指定Server的ip和端口,如果是在電腦和另一台虛拟控制器連接,ip設為“127.0.0.1”,端口自定義,建議不要用默認的1025.
這一步作用為機器人會和server建立連接,如果沒有建立成功會一直等待,如果成功則往下執行
5)此處做測試,在建立成功後,插入TPWrite指令,可以在示教器看到socketclinent connect successful
6)接下去可以收發數據,此處示例為client先發送數據給server,再接受server發送回來的數據
7)SocketSend後面可以發送string或者byte數組,具體可以選擇不同可選變量
8)發送完畢後,client接受到server發回的數據并寫屏
二、數據關鍵信息的提取
1)相機通常發送字符串給機器人,比如”1.23,4.56,7.89\0D”,即x為1.23,y為4.56,z的角度為7.89,用\0D作為結束符,數據之間用“,”隔開。
2)如果機器人收到上述字符串,如何把字符串提取出來并付給變量deltaX,deltaY,和thetaZ?
3)建立若幹num變量,用以存儲過程數據,比如StartBit1,表示x的數據從第幾位開始,Endbit1表示x的數據結束是第幾位,Lenbit1表示x數據的長度,s1表示提取的x的值的字符串
4)
5)先假設x的第一位是1,給Startbit1賦值為1
6)插入函數strfind,查找第一個“,”在第幾位,得到EndBit1值
7)
8)EndBit1減去StartBit1就是x的數據長度
9)同理得到y和theta的信息
10)通過StrPart函數,提取從StartBit1開始到LenBit1結束的字符串,即x的值的字符串
11)
12) 同理得到y和z的字符串
13)通過StrToVal函數,把s1轉為num型,付給delta_x, StrToVal函數的反饋值為bool量,即轉換成功為true不成功為false
14)同理得到delta_y和delta_theta
15) 成功後可以寫屏測試,如下圖
三、關鍵信息與點位數據的轉化
1)相機發過來的是xy和theta,我們已經從字符串裡提取出x,y和theta值了,但是機器人點位robtarget裡組成的是trans:xyz以及rot:q1-q4。
2)ABB機器人用四元數表示角度,如何轉化角度到四元數?
3)新建一個routine
4)Target_10_ini為之前在坐标系workobjec_1下示教的點位,通常這個點位都是這個坐标系下的0,0,0,即在坐标系0點。
5)Workobject_1坐标系和相機裡的坐标系一緻(相機可以通過棋盤格标定紙标定)
6)程序走的點位Target_10,注意存儲類型為變量VAR,否則不能賦值
7)新建num變量or_x,or_y,or_z,表示原來點Target_10的姿态ABC數據。
8)通過函數eulerzyx得到角度,每次隻能得到一個角度
9)
10) 反斜杠\X 如下得到
11)
12) 把相機發來的x和y的偏量賦給target_10的x和y
13) 把相機發來的theta角度加給原來or_z角度,得到新的z方向角度
14)通過orientzyx函數,把or_x,or_y,or_z三個角度重新轉化為Target_10的姿态四元數
15) 最後就得到了新的target_10位置和姿态。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!