本範例使用環境
TMflow軟體版本 : 1.76 或更新
手臂硬體版本 : HW 1.x/2.x/3.x
其餘準備 : 無
請注意,在不同版本的軟硬體上操作可能會有些微差異
目標 #
關於這主題,最常見的問題為:
- 如何正確使用BASE與TCP?
- 我可以使用預設的BASE(RobotBase)與TCP(NOTOOL)來教點嗎?
- 為什麼在TMflow專案內的POINT NODE上、會有不同的BASE/TCP?
- CustomBase與VisionBase是什麼?
- 在手臂有多個夾爪的情況下,我怎麼使用多個TCP?
本文章會對以上常見問題一一講解
手臂如何移動? #
我們從一個移動命令開始解說
移動 某物 到 指定位置
例如:
移動 [食指] 到 [鍵盤上的ENTER鍵]
再轉換成手臂語言之後:
移動 [TCP] 到 [ 目標座標,以 CustomBase1為原點]
所以,基本的運動指令包含以下這幾個(速度等其餘參數先略過)
目標座標
TCP
BASE(CustomBase, VisionBase, 原點)
座標系的表達方式 #
我們可以使用右手定則來確認座標系的方向
X軸以紅色表示;Y軸以綠色、Z軸以藍色表示
目標座標 #
目標座標描述了距離原點BASE有多遠、以及相對的旋轉關係
它包含了[ X, Y, Z, Rx, Ry, Rz],可分成平移與旋轉這兩個部分
平移 [ X, Y, Z ] #
目標座標的六個參數中,[X, Y, Z] 分別代表與 BASE.X 軸、BASE.Y 軸及 BASE.Z軸的距離
單位是長度,通常以mm為單位,例如您可能看到某個座標為[ 100.5, -70, 33.1 ]
此外,這是某個目標在空間中的座標表示;該目標的方向與BASE相同(旋轉角 [Rx, Ry, Rz] 等於 [0,0,0] ):
旋轉 [Rx, Ry, Rz] #
平移部分相對較好理解,但旋轉部分[ Rx, Ry, Rz ]呢?
[ X, Y, Z ] 代表移動距離,相同的,[ Rx, Ry, Rz ]代表座標系繞軸旋轉後的結果
有許多描述方式來表達空間中的旋轉,而達明機器人系統使用EulerZYX的表達方式;我們會在本段落的最後介紹EulerZYX
旋轉[ Rx, Ry, Rz ]的單位是˚(度),範圍是-180.0~+180.0
例如,您會看到某個座標的旋轉部分為[-45.9, 179.0, 30]
旋轉軸的正方向也可使用右手定則來確認,以下這兩種方式相同:
(1) 如果姆指代表要旋轉的軸,則四指的方向即為旋轉的正方向
(2) 從姆指(旋轉軸)方向看往過去,逆時鐘方向定義為正方向
範例1 – 只旋轉Rz #
實際上會有這樣的效果:
範例2 – 先轉Rz、再轉Ry及Rx(EulerZYX) #
與平移[ X, Y, Z ]的各軸獨立不同,旋轉[ Rx, Ry, Rz ]的描述彼此會有關係,因此在這裡需要使用EulerZYX來描述旋轉
旋轉[ Rx, Ry, Rz ]、EulerZYX 的操作方式
(1) 以BASE為基準、旋轉它的Z軸 Rz˚
(2) 以步驟1旋轉後的座標為基準、再旋轉它的Y軸 Ry˚
(3) 以步驟2旋轉後的座標為基準、再旋轉它的X軸 Rx˚
因為是照著Z軸、Y軸、X軸的順序旋轉,所以它被命名為EulerZYX
以下為旋轉[ Rx, Ry, Rz ] = [ 30, -45, 90 ] 的步驟說明,注意軸的逆時鐘方向為正方向
先轉Z軸、再轉Y軸、最後轉X軸
重點整理
(1) Euler表達方式共有12種,像是EulerXYX, Euler ZXZ…等等,只差別在旋轉軸的順序;EulerZYX是其中一種、也是手臂系統較常使用的方式
(2) EulerZYX 代表:先旋轉Z軸、再轉Y軸、最後轉X軸
TCP – Tool Center Point 工具中心 #
TCP,即Tool Center Point工具中心,是代表手臂前端某尖點距離法蘭的偏移(目標座標)關係,一樣有[ X, Y, Z, Rx, Ry, Rz ]
同時只能啟用一個TCP;若都不指定,則預設會使用NOTOOL(Tool0)
在焊接槍前端設定TCP的範例:
記得最前面提到的指頭與鍵盤範例嗎?以下文章會使用尖端(或指頭)來描述TCP、幫助理解
為什麼需要 TCP? #
TCP代表正確的尖端、以及您希望在手臂上被移動的那個點
以下範例為無TCP與有TCP的差別:
移動手臂到P1位置,相對於BASE RobotBase;左邊是預設的NOTOOL、右邊是焊槍TCP(MyTCP1)
兩者在空間中都是移動到同位置的P1,但手臂會用不同尖點去指到P1
使用TCP會有以下的優點
優點1 – 在您要的尖點旋轉、方便手動操作手臂(便於操作) #
當需要繞尖點旋轉時、手臂帶有正確的TCP會對於操作上有很大的幫助;您可以像下圖這樣指定手臂尖點在空間中繞圓、調整需要的角度
優點2 – 調整TCP長度、同時維持調整前的路徑(省時) #
以焊接應用為例,焊絲的末端長度可能改變,這時可直接調整TCP的值、手臂即會以新的TCP去執行原本相同的路徑
如果沒有使用正確的TCP,則所有路徑在尖點改變位置後都需要重新手動教導,會浪費大量時間
優點3 – 以工具座標系為方向移動(便於操作) #
以下圖為例,焊槍的座標方向與法蘭不同
若此時您希望以焊槍TCP的方向移動,則可以在TMflow專案中使用 MOVE NODE來沿著TCP座標方向移動,適合用在手臂插件等應用
注意該TCP方向為當下的TCP方向
如何設定TCP? #
有兩種方法設定TCP
到 TMflow > Menu > Setting > TCP Settings
方法1 – 直接教導
準備一個硬體上的尖點並裝在您想設定的TCP位置;另外再準備一個尖點放置於固定不動的桌面上
依畫面指示來教導多個點,細節請參考TMflow manual 或搜尋 UNDERSTANDING THE VISION BASE AND TCP technical document
注意用此方式無法設定TCP的Rx, Ry, Rz
方法2 – 輸入參數
在CAD軟體上取得您的TCP座標(如夾爪中心),會需要這些參數[X, Y, Z, Rx, Ry, Rz]
注意,重量mass與質心center of mass必須正確設置,否則手臂會在運動過程中誤報警而停止
當TCP已正確設定,可以透過旋轉的方式來操作機器人,TCP會在空間中盡量保持不動
練習 – 雙夾爪的TCP設定 #
以下為上下料應用中的雙夾爪設定;給定CAD尺寸與方向後,請計算出正確的TCP1與TCP2
(TCP的Y軸與法蘭Y軸重疊)
以下為解答
TCP – HandCamera #
當手臂上有視覺系統camera on hand(或Eye-in-Hand camera, EIH camera)且正確校正完成時,系統內會自動生成一個TCP名為HandCamera
這是設定在視覺鏡頭中心的TCP,您可以在視覺應用中去使用此TCP
BASE – 原點 #
BASE 是座標系的原點,即目標座標[ X, Y, Z, Rx, Ry, Rz] 參考的原點
BASE包括CustomBase, VisionBase, RobotBase
同時只能啟用一個BASE;預設為手臂底座上的RobotBase
以下為簡單的移動範例
P_StandBy -> P1 –> P2 -> P3 -> P4 -> P1 -> P_StandBy, 使用一個名為CustomBase1的BASE
這些點都是以CustomBase1為原點;例如P3的座標 = [X, Y, Z, Rx, Ry, Rz] = [300, 400, 100, 180, 0, 180]、相對於CustomBase1
注意, [Rx, Ry, Rz] 是 [180,0,180],因為點位的方向與CustomBase1的方向不同(上下顛倒)
為何需要BASE? #
使用BASE有以下幾個好處:
好處1 – 路徑修正 & TM Landmark #
延續前面範例,當桌面移動(同時BASE也設定在桌角)時,只要重新定義BASE、則原本的路徑會自動被修正;當桌面上有很多路徑時,可以省下許多修正的時間
即使桌面歪斜了,正確的BASE設定也可重新把路徑修正
此外,搭配內建視覺系統時,TM Landmark是一個相當方便的定位工具。創造VISIONJOB NODE並執行,手臂會自動辨識TM Landmark並把VisionBase更新,即使TM Landmark擺在歪斜的位置、一樣可以修正
細節請參考TMvision manual 或在technical document中搜尋 UNDERSTANDING THE VISION BASE AND TCP
Advantage2優點2 – 路徑複製 #
承之前範例,您可以將桌面1的路徑複製到桌面2、桌面3…等等更多位置,只需指定不同的BASE即可
您可以複製POINT NODE並指定到 BASE1及BASE2、或者更多BASE上
使用此方法可省下重新教導點位的時間;當應用中有多個重複路徑、但不同位置(BASE)時很方便
BASE – RobotBase, CustomBase, VisionBase #
BASE包括CustomBase, VisionBase, RobotBase
CustomBase : 客戶使用的BASE,可有多個並自定義內容
RobotBase : 固定在手臂底座的BASE,不可更改且只有一個;預設的BASE
VisionBase : 當VisionJob存在時自動創造出來的,可有多個並自定義內容
如何定義BASE? #
- 先設定正確TCP
- 到 TMflow > Menu > Project > Base Manager > By pointing 3 points 來建立BASE
更多細節請參考 TMflow manual
以下是定義一個BASE Base1的範例,[X,Y,Z,Rx,Ry,Rz] = [300, 0, 300, 5.71, 0, 0],此座標參考 RobotBase為原點
總結 #
Q&A #
我已經正確校正TCP與BASE,為何我從別台手臂複製專案到不同手臂時,點位還是有些偏差? #
使用手臂前需先做多種校正(EIH手眼校正、手臂DH校正等等),但即使所有校正都做完,仍有可能會有一些偏差(在某些案例中、較遠距離的情況可能差到數mm),原因來自 :
- TCP 校正時的誤差
- DH校正時的誤差
- 視覺系統校正時的誤差
- 機構組裝工差
- …
當正確使用BASE與TCP時,可以降低複製到不同手臂的時間,但無法完全消除。若需要更精準的點位(如0.5mm以內),建議在該點上重新教導。
我可以在不使用 TCP與BASE的情況下操作機器人嗎? #
當然可以,實際上您正在使用TCP NOTOOL(在手臂法蘭上)及RobotBase(在手臂底座上)
使用正確的TCP與否,當手臂在運作時可能無法查覺;但若使用NOTOOL且未來您想修改TCP長度,則需要重新教導所有點位
為了避免此狀況,建議一開始就使用對的TCP與BASE;若未來有大量點位需修正的情況,則會方便許多,而不用每個點位重新教導
以下是範例,NOTOOL與MyTCP1在兩次路徑移動中看不出差異,但實際上手臂系統記錄的位置是不正確的
如何切換TCP與BASE? #
在手動模式下,選擇您想要的BASE與TCP即可
執行TMflow專案時,手臂系統會自動依據POINT NODE與MOVE NODE內指定的BASE與TCP切換