工具坐标6点法_轻松学机器人系列之各坐标系关系
| 難得的機會讓胖老師Johnny Pan跟大家開個車,可能速度有點快,各位系好安全帶坐好。關于胖老師Johnny Pan這里就不作過多介紹,搞機老師傅估計都認識他。搬好我的小板凳聆聽大佬的聲音。 |
輕松學機器人系列(一)
坐標系關系
大家好,我是Johnny。今天很高興應邀在這個平臺和大家一起交流玩機的經驗,今天主要和大家聊聊機器人坐標系的前世今生。
?剛開始玩機器人的朋友通常會被一堆沒聽到過名字的坐標系砸悶,有時候即使會用了也未必完全清楚坐標系各自的來歷及相互關系,而一般的培訓或者文檔也沒有對此加以詳細說明。
?本文本著讓普通人都能看懂的原則,會用盡量簡單的語言來把坐標系之間的關系給大家展開一下。
首先讓我們捋一下,目前所知道的或者聽說過的坐標系:? ? ? ?
序號 | 名稱 |
1 | 軸坐標系 |
2 | 機器人根坐標系 |
3 | 世界坐標系 |
4 | 法蘭坐標系 |
5 | 工具坐標系 |
6 | 工件坐標系 |
是不是看著很多?沒關系,一個個捋:
| 1.軸坐標系:用來描述機器人各個軸的關節角度,所有機器人都有的最基礎的坐標系。(一句話點評:這貨其實實際用處不多,一般在示教,軸運動編程,軸工作區域監控等情形下會用到) |
| 2.機器人根坐標:在KUKA中稱作robroot,在ABB中稱作base。這個坐標系是一個空間直角坐標,由X,Y,Z構成,滿足右手定則,如下圖所示 這個坐標系是干嘛的呢?啥意義?類比一下,這個坐標系相當于告訴機器人它的腳在哪?也就是說,不管機器人裝在哪,怎么裝的,這個坐標系永遠和機器人底座呈上述關系,通俗點說就是跟著機器人走,就像腳和身體的關系。而通常標準機器人是不會移動的,因此該坐標系固定不變。(一句話點評:機器人內部坐標變換的基礎坐標系,直觀且容易理解) |
3.世界坐標系:世界坐標告訴機器人你處在大地的哪個位置上。一般情況下和機器人根坐標重合。當然也有不重合的時候,如下所示: 其中B為世界坐標,A和C為根坐標,默認情況下B與C重合,在一些情況下也可以設置成不重合(例如多機機器人統一世界坐標時)。世界坐標的特點是一旦確認,就固定不變,Z方向始終向上(為了配合負載計算)。(一句話點評:示教機器人時的首選坐標系) |
4.法蘭坐標系:法蘭坐標位于機器人6軸法蘭中心,當機器人處于零位時,方向如下圖所示:? 法蘭坐標系是用來干嘛的呢?它用來描述這個機器人運動系統的末端位置。通俗點說就是告訴機器人手在哪里。當一個機器人開始運動的時候,我們并不關注其他軸在空間的位置,我們更關心機器人末端(即法蘭中心)在空間所處的位置情況,以方便我們判斷到不到位,準不準確。也就是說在這種坐標系下,所有機器人運動計算都是基于法蘭中心點。(一句話點評:機器人末端的基礎坐標系,受零位和機器人機械參數影響。) |
| 5.工具坐標系:工具坐標系描述的是法蘭前端安裝的工具的位置情況。在默認情況下,工具坐標和法蘭坐標是重合的。既然差不多那為什么要有工具坐標?考慮一下實際情況,讓你去寫毛筆字,你會不會用到筆?答案是肯定的。那么這個時候你是更關心手在哪還是更關心筆尖在哪?自然是筆尖的位置,因為那直接關系到我寫的字好不好看。同理,在正常生產過程中,機器人前端都是安裝有工具的,工具末端的位置相比法蘭位置更為重要。其中,我們把工具坐標系的原點(注意是一個點)稱為TCP(Tool Center Point)工具中心點。由于工具五花八門,因此工具坐標系可以由用戶自定義。(一句話點評:實際編程中最重要的坐標系之一。) |
6.工件坐標系:工件坐標系描述的是機器人在哪個工作臺干活。由于工位的多樣性,工件坐標系也是可以人為定義的。默認的情況下,工件坐標系和世界坐標系重合。工件坐標系看著和世界坐標系根坐標系都差不多,為什么還需要設這么一種坐標系出來?這是因為:程序中的點都是記錄在對應工件坐標系上的,可以理解為點的位置綁定對應工件坐標系。也就是說當工件坐標系發生變化后,其上所有點位都會發生對應變化。這個功能可謂神技。 很多衍生的功能(碼垛,輸送線跟蹤,外部軸數學耦合等)都建立在這個原理之上。(一句話點評:實際編程中最重要的坐標系之一)。 |
接下來,我們來聊聊這些坐標系之間的相互關系:
第一層關系 世界坐標與工件坐標的關系 |
按照最簡單的情況來分析,先來看圖,
| 前面說了,如圖安裝完機器人后,世界坐標系和根坐標系重合,因此這里不再羅列根坐標系。 |
先來看世界坐標系,它的特點很容易總結:
1. 固定不變? 2. 所有使用者都知道世界坐標系的位置及方向。(即坐標系已知) |
再來看看工件坐標系,它有哪些特點呢?我們來看一下。首先,很多時候一個機器人需要在多個工位上干活,這意味著我得為機器人設定很多個工件坐標系以對應不同工位。
| 因此第一個特點很簡單,一個機器人雖然只有一個世界坐標系,但是可以有很多個工件坐標系。(理論上ABB,KUKA都可以無限設定) |
考慮一下,如果把機器人的工件坐標系設定在北京天安門樓頂行不行呢??
行不行呢?行不行呢?行不行呢?
當然可以!!!要問為啥?用戶自定義唄,自定義還不夠你臭屁的么?
| 所以第二個特點就是工件坐標系可以自定義。 |
好,現在我們深入思考一下這個問題。由于工件坐標系是由用戶自定義的,因此當你設定了一個工件坐標系后,你必須得告訴機器人這個工件坐標系的具體位置情況,不然機器人是不知道這個坐標系的信息的。那么問題來了,怎么樣能讓機器人知道一個工件坐標系具體情況呢?
當我們要描述一個具體的坐標系時,首先需要做的是........找參考坐標系。。。。
參考坐標系的選擇有兩個前提條件:
1. 兩者相對位置固定不變?? 2. 參考坐標系已知。 |
然后我們發現了一個現成的坐標系,沒錯,就是世界坐標系。它正好符合這兩個要求。
當把世界坐標系設定為參考坐標系后,剩下的事情只有兩件了:
1.指明工件坐標系原點的位置 2.指明工件坐標系三個方向的情況 |
簡單來說,就是找原點,定方向。
原點怎么表示呢??
| 原點是不是一個點?一個點在一個坐標系中怎么表示?學過初中數學的都知道,可以用X,Y,Z三個值來表示空間點的位置。所以我們用一組X,Y,Z就搞定了原點的位置信息 |
接下來方向該怎么定呢?
| 直接對坐標系方向做說明是件很繁瑣的事,不過我們有更簡易的方法,那就是歐拉角。歐拉角的意義是這樣的:我們已經有一個參考坐標系(世界坐標系),這個坐標系是已知的(即原點方向我們都知道),那么我們能不能這么操作,在原始坐標系方向的基礎上,讓它沿著不同的方向軸進行旋轉,比如先繞著Z軸旋轉一定角度(角度A),再繞著Y軸旋轉一定角度(角度B),最后繞著X軸旋轉一定角度(角度C),使得旋轉之后的坐標系方向和我所需的工件坐標系方向一致。那么這三個旋轉角就可以用來描述方向的變化,也就是我們所說的歐拉角。值得注意的是,類似X,Y,Z的平移是不講究順序的,也就是說,只要這三個值確定了,目標點的空間位置就是確定的。而轉角卻和旋轉順序有關,先轉和后轉會導致不同的結果。 |
| 因此需要說明的是,ABB,KUKA歐拉角順序為ZYX,也就是先轉Z軸,然后Y軸,最后X軸。有些機器人品牌是另外的歐拉角順序,比如KEBA,Comau是ZYZ等等。 |
好了,我們現在既有原點信息(X,Y,Z),又有方向信息(A,B,C),這樣一來機器人就知道工件坐標系的確切空間位置了。舉例:KUKA的工件坐標系描述:base_data[1]={x 0,y 0,z 0,a 0,b 0,c 0}。ABB的工件坐標系描述和KUKA稍有不同,采用四元數的方式描述方向,此次討論暫不涉及。
所以第一層關系就明確了:工件坐標系是通過世界坐標系下的{x ,y ,z,a ,b ,c }來確定的,或者說工件坐標系是基于世界坐標系推算出來的。
接下來看看第二層關系 法蘭坐標系與工具坐標系的關系 |
?
和工件坐標系一樣,工具坐標系也是人為定義的,那么怎么告訴機器人工具坐標系的位置信息呢??我們先要做的事情其實一樣,先得找一個靠譜的參考坐標系。之前說了,參考坐標系必須滿足兩點:
1. 兩者相對位置固定不變; 2. 參考坐標系已知。 |
按照這個標準,世界坐標系就不適合作為工具坐標系的參考坐標系了,因為兩者相對位置會發生變化。
突然發現我們還有一個法蘭坐標系,這個和工具坐標系位置肯定不會改變。(如果會改變。。。。。我的天,你到底有米有好好固定工具。)
那它滿不滿足第二個條件呢?先說結論:可以認為它是已知的坐標系,只要滿足兩點:
1.機器人機械零位準確? 2.機器人機械參數正確。 |
這是什么意思,法蘭坐標系是通過機器人的內部算法建立的,該算法會把根坐標通過數學的方式偏轉至機器人法蘭上。由于是計算過程,所以仍然會受到一些因素制約。我們可以把它想象成是解一個復雜的方程,機械零位決定了方程的初值,機械參數決定了方程的表達式。很顯然,當這兩者有任何一個出現問題,方程的解就會出問題。(注:機械零位就是大家經常要做的零點標定,機械參數則是對應于不同機器人的相關參數,以KUKA為例子:KR30和KR360機械參數完全不同,包括減速比,軸距等各類本體參數。)
現在我們仍然把問題簡化一下,假定大家的零點都正確標定了,同時選擇的機器參數也匹配當前機器人,那么結論就出來了:法蘭坐標系可以作為工具坐標系的參考坐標系。事實上所有機器人廠家也都是這么做的。與之前描述一樣,只要給出對應的X,Y,Z,A,B,C這6個值,就可以讓機器人知道目標工具在法蘭的什么位置。
舉例:KUKA的工具坐標系:tool_data[1]={x 0, y 0,z 0,a 0,b 0,c 0}
至此,第二層關系明朗了:工具坐標系是由法蘭坐標系下的{x ,y,z ,a ,b ,c }來確定的。
接下來,最難的第三層關系來了 工具和工件有沒有關系呢?? |
咳咳,這個稍微有點復雜,大家可以先去喝口水。。。。。。。
閑話不提,上圖
假定我們建立了一個工件坐標系A,還有一個工具坐標系B。然后編了一個程序,在程序中示教了一個點P。好,問題來了,點是不是隨意示教的???
是不是??是不是???是不是?????
當然是啦,想示教在哪就示教在哪,只要夠得到。那么這個點的位置信息是怎么告訴給機器人的呢???
在數學上描述一個點是挺簡單的一件事,只要有個參考坐標系,一組X,Y,Z就能搞定了(我想耐心看到這里的同鞋應該都能理解了)。先看一下,這個時候哪個坐標系作為參考坐標系更合適?1. 世界 2. 法蘭 3. 工件選哪個??
回想一下參考坐標系的要求我們就明白了,第一個剔除的是法蘭坐標,因為它相對點位會動。
那世界坐標行不行???也不夠好,為什么呢?因為世界坐標系固定不變,意味著一旦你示教了這個點,這個點的位置也就固定不變了。如果你示教了100個點,然后發現需要整體往X方向平移100mm,那么你慘了,你得一個一個點改。
| 所以,示教點位置是基于所選的工件坐標存儲的。如果需要把很多點做整體平移時,只要變更工件坐標的值即可。 |
參考坐標系搞定了,繼續往下想,僅僅x ,y ,z 就能描述一個示教點么?數學上的點和我們示教的點是一樣的意義么??記住一個原則,所有的示教點必須能讓機器人以唯一的一種姿態到達。也就是如果機器人有兩種以上的方式可以到達這個位置,就是不可以的(如果你家的機器人今天這么走軌跡,明天那么走軌跡,就問你會不會瘋?)。這么一來,我發現X,Y Z完全不夠,我至少還需要一些可以確定姿態方向的參數。有同鞋說,之前說的A,B,C不就是規定方向的么?在這里可以用么??等等,我們不是聊的是點么?點有方向么??數學上點是沒方向的。因此,這里需要說明一下:示教的點其實并不僅僅是一個數學上的點。那示教的點到底是什么???
我們換個角度想這個問題,當執行這個程序時,機器人哪個部位會到達這個示教點??答案是:TCP。上文有提到,TCP是工具中心點,在運動過程中機器人所有的軌跡計算會圍繞這個點進行。
| 換句話說,這個點決定了工具如何到達這個位置,包括方向。從這個角度來說,示教點其實是描述的是兩個坐標系之間的位置關系。因此它可以有方向。因此我們可以用x,y,z,a,b,c這6個參數來描述一個示教點的位置。其中X,Y,Z描述的是該點在工件坐標系下的空間位置,A,B,C描述的是工具坐標到達該點時與工件坐標系之間的歐拉角。 |
。。。。。。
。。。。。。
你以為就結束了么?確定了一組X,Y,Z,A,B,C就一定只有唯一解么???來看看一個特殊情況,如圖所示:
我們可以看到,當規定好了X,Y,Z,A,B,C的值后,實際上機器人法蘭前端的姿態位置就被確定了,但是如圖所示,這兩個機器人法蘭空間位置姿態完全一致,但是機器人整體姿態仍有區別。
| 在KUKA軟件中,通過S,T這兩個姿態參數來規范這種情況,以避免同一個位置點機器人有多種姿態。類似的ABB也有Confdata。 |
。。。。。。
。。。。。。
你又以為結束了么?以前僅僅討論了機器人本體的情況,如果機器人帶有外部軸呢??以KUKA為例,一般可以帶6個外部軸,所以完整的點坐標還包含外部軸信息。
舉例: KUKA?? xp1={x , y , z , a ,b ,c ,s , t , e1 , e2,e3 ,e4 ,e5 ,e6 }
| 總結:第三層關系,原來程序中的點,是由工具坐標系和工件坐標系算出來的。現在知道為什么要好好做工具坐標,好好做工件坐標了?現在知道為什么示教語句不能亂選坐標系了?? |
又及:第一次發稿,寫得有點亂,對于細節描述各位大牛不用太較真,希望對初學者有所幫助。
再及:我不是段子手。
俗話說,在家靠父母,出外靠朋友。各位看官,胖老師初來咋到,以詼諧有趣而又生動的方式給大家賣藝(重點:賣藝不賣身,就不要惦記胖老師,人家可是家庭美滿)。初次賣藝,請大家有錢的買個錢場,沒錢的捧個人場。歡迎打賞轉發(所有的贊賞與欣賞我都代為傳遞給胖老師)!!!!期待胖老師下次繼續開車帶著大家兜兜風,尋找初戀的感覺!!!???? |
——————————————
往期文章回顧:1.庫卡機器人編程之CAST指令2.庫卡機器人編程之系統子程序及函數3.庫卡機器人編程之如何log數據4.庫卡機器人編程之如何判斷機器人當前是否到目標位置5.庫卡機器人編程之傳統運動編程6.庫卡機器人編程之Frame數據以及位置偏移7.庫卡機器人編程之3點法算Base原點8.庫卡機器人之信息編程及語言切換9.庫卡機器人編程之中斷指令10.庫卡機器人之浮點數處理111.庫卡機器人之坐標偏移12.庫卡機器人之編程運算符113.庫卡機器人編程之求余14.庫卡機器人編程之程序庫15.庫卡機器人編程之歐拉角與四元數轉換16.庫卡機器人編程之隨機函數17.庫卡機器人編程之BAS程序18.庫卡機器人編程之字符串處理函數19.庫卡機器人編程之故障相關變量及函數20.庫卡機器人編程之WorkVisual編程功能總結
以上是生活随笔為你收集整理的工具坐标6点法_轻松学机器人系列之各坐标系关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 的注册表怎么才能删干净_袜子怎么洗才能洗
- 下一篇: 导出目录结构_Selenium Webd