眾所周知,KUKA 機(jī)器人坐標(biāo)系的歐拉角表示法 XYZABC,其中XYZ是線性距離,ABC則是旋轉(zhuǎn)角度(即歐拉角)。庫卡機(jī)器人的笛卡爾變換的順序是:Z->Y->X,即A->B->C(Rz->Ry->Rx),并且以當(dāng)前的姿態(tài)作為參考。
在庫卡編程環(huán)境中,經(jīng)常會(huì)碰到一個(gè)系統(tǒng)結(jié)構(gòu)體類型數(shù)據(jù)Frame,其包含X,Y,Z,A,B,C6個(gè)元素,即歐拉角表示方式。Frame類型的數(shù)據(jù)在編程中,常見有這些使用:

1.計(jì)算基于工具坐標(biāo)系的位置偏移
目的:計(jì)算當(dāng)前同一坐標(biāo)系下的點(diǎn)相對工具坐標(biāo)系偏移后的位置;
DEFFCT E6POS Tool_Offset (nPos:IN,nFrame:IN )
;***************************************************
;* Autor : Andrew Wang * *
;* Version : 1.0 *
;* Created : 12.12.2018 *
;* Program Name : Tool_Offset *
;* Fuction : Position offset by Tool CS; *
;***************************************************
DECL E6POS nPos
DECL FRAME nFrame
DECL E6POS xTemp
xTemp=nPos:nFrame
RETURN xTemp
ENDFCT
2.計(jì)算基于基坐標(biāo)系的位置偏移
目的:計(jì)算當(dāng)前同一坐標(biāo)系下的點(diǎn)相對基坐標(biāo)系偏移后的位置;
DEFFCT E6POS Base_Offset (nPos:IN,nFrame:IN )
;***************************************************
;* Autor : Andrew Wang *
;* Version : 1.0 *
;* Created : 12.12.2018 *
;* Program Name : Base_Offset *
;* Fuction : Position offset by Base CS; *
;***************************************************
DECL E6POS nPos,xRet
DECL FRAME nFrame
xRet=nFrame:nPos
RETURN xRet
ENDFCT
3.對Frame元素設(shè)定
目的:通過賦值的方式獲取設(shè)定一個(gè)需要的Frame變量;
DEFFCT FRAME Set_Frame (X:IN,Y:IN,Z:IN,A:IN,B:IN,C:IN )
;***************************************************
;* Autor : Andrew Wang *
;* Version : 1.0 *
;* Created : 12.12.2018 *
;* Program Name : Set_Frame *
;* Function : A frame made by each components ;*
;***************************************************
DECL REAL X,Y,Z,A,B,C
DECL FRAME fTemp
fTemp={X 0,Y 0,Z 0,A 0,B 0,C 0}
fTemp.X=X
fTemp.Y=Y
fTemp.Z=Z
fTemp.A=A
fTemp.B=B
fTemp.C=C
RETURN fTemp
ENDFCT
4.計(jì)算兩個(gè)點(diǎn)之間的向量Frame
目的:通過兩個(gè)點(diǎn)計(jì)算出兩點(diǎn)之間的相對位置向量;
DEFFCT FRAME Get_Frame (nStartPos:IN,nEndPos:IN )
;***************************************************
;* Autor : Andrew Wang *
;* Version : 1.0 *
;* Created : 12.12.2018 *
;* Program Name : Get_Frame *
;* Fuction : Calculate a Frame for 2 position;*
;***************************************************
DECL E6POS nStartPos,nEndPos
DECL FRAME fRet
fRet=INV_POS (nStart):nEndPos
RETURN fRet
ENDFCT