机器人学导论——操作臂运动学
一 說在前頭
最近在學習《機器人學導論》(‘Introduction to ROBOTICS’-JOHN CRAIG),文章內(nèi)容為學習過程中的摘抄或者感悟,方便今后查閱。
假如我們想控制一組機械臂抓取物體,對于六軸機械臂來說,實際上我們只需要讓末端執(zhí)行器能夠運動到指定位置并完成抓取控制即可。但有一個問題,與末端執(zhí)行器連接的是一系列關(guān)節(jié)和連桿的組合,要如何控制每個關(guān)節(jié)的角度才能使末端執(zhí)行器運動到指定位置呢?
這就需要用到操作臂運動學了,通過正逆運動學求解,我們可以簡單地利用計算機控制機械臂。
如下圖所示,為UR5機械臂的結(jié)構(gòu)圖,將來運動學建模分析時會用到。
二 連桿
2.1連桿和連桿連接的描述
Link:連桿——操作臂由剛性連桿組成
操作臂可以看成由一系列通過關(guān)節(jié)連接成運動鏈的剛體。
從操作臂的固定基座開始為連桿進行編號,稱固定基座為連桿0,第一個可動連桿為連桿1,以此類推,操作臂最末端的連桿為連桿n。
為了確定末端執(zhí)行器在三維空間的位置和姿態(tài),操作臂至少需要6個關(guān)節(jié)(因為描述一個物體在空間的位姿需要6個參數(shù)——3個位置和3個姿態(tài))。
要控制末端執(zhí)行器運動到指定位置,就需要控制每個關(guān)節(jié)的角度,關(guān)節(jié)與關(guān)節(jié)之間由連桿連接,要構(gòu)建運動學模型就需要知道連桿之間的關(guān)系。那么,要如何才能描述兩個連桿之間的關(guān)系?
用空間中的直線來表示關(guān)節(jié)軸,只要確定兩個關(guān)節(jié)軸(即兩條直線)之間的距離和扭轉(zhuǎn)角,就可以描述兩個連桿之間的相對位置。
2.1.1連桿長度
關(guān)節(jié)軸i-1和關(guān)節(jié)軸i之間的公垂線長度ai-1即為連桿長度。
兩條不平行的直線之間有且只有一條公垂線,這樣我們就可以描述兩軸之間的距離關(guān)系了。
2.1.2連桿扭轉(zhuǎn)角
如上圖所示的αi-1即為連桿扭轉(zhuǎn)角。
假設(shè)作一個平面,并使該平面與兩關(guān)節(jié)軸之間的公垂線垂直,然后把關(guān)節(jié)軸i?1i-1i?1和關(guān)節(jié)軸iii投影到該平面上,在平面內(nèi)軸i?1i-1i?1按照右手法則繞ai-1,轉(zhuǎn)向軸iii,測量兩軸線之間的夾角,用轉(zhuǎn)角ai-1,定義連桿i?1i-1i?1的扭轉(zhuǎn)角。(上圖中帶有三條短劃線的兩條線為平行線)當兩個關(guān)節(jié)軸線相交時,兩軸線之間的夾角可以在兩者所在的平面中測量,但是ai-1沒有意義。在這種特殊情況下,ai-1的大小和符號可以任意選取。
筆者認為,連桿長度和連桿扭轉(zhuǎn)角是用來確定兩個關(guān)節(jié)(即兩個軸)之間位置的兩個參數(shù),我們想象兩個軸為兩條直線,只要確定了公垂線長度(連桿長度)和偏移角度(連桿扭轉(zhuǎn)角),就大致能夠確定兩條直線(兩個軸)之間的相對位置關(guān)系了。
那么確定了兩個關(guān)節(jié)之間的相對位置了,兩個連桿間的連接關(guān)系如何確定呢?
2.1.3 連桿偏距
從公垂線ai-1與關(guān)節(jié)軸iii的交點到公垂線ai與關(guān)節(jié)軸iii的交點的有向距離即連桿偏距di。當關(guān)節(jié)iii為移動關(guān)節(jié)時,連桿偏距di是一個變量。
2.1.4 關(guān)節(jié)角
平移公垂線ai-1和ai繞關(guān)節(jié)軸iii旋轉(zhuǎn)所形成的夾角,即關(guān)節(jié)角θi。圖中,標有雙斜線的直線為平行線。當關(guān)節(jié)iii為轉(zhuǎn)動關(guān)節(jié)時,關(guān)節(jié)角θ是一個變量。
連桿偏距是和關(guān)節(jié)角用來確定兩個連桿之間連接關(guān)系的兩個參數(shù),我們想象兩個連桿為兩條線段(當然實際情況中不能直接把連桿當作是規(guī)則的線段,在這里我假設(shè)兩相鄰連桿可以等效為線段,并且與其對應的公垂線是重合的,想象一下這個特殊的例子,便于大家理解空間中連桿的關(guān)系),只要確定了兩線段(即公垂線)的距離(連桿偏距)和兩線段的偏移角度(即關(guān)節(jié)角),就大致能夠確定兩連桿之間的連接關(guān)系了。
2.1.5 連桿參數(shù)
綜上,機械臂的每個連桿都可以用4個運動學參數(shù)來描述,其中兩個參數(shù)用于描述連桿本身,另外兩個用于描述連桿之間的連接關(guān)系。這種用連桿參數(shù)描述的機構(gòu)運動關(guān)系的規(guī)則稱為Denavit-Hartenberg方法,即D-H參數(shù)方法。我們常用的是帶有轉(zhuǎn)動關(guān)節(jié)的機械臂,那么這時θi就是關(guān)節(jié)變量,是我們可以控制的變量,其余三個參數(shù)不變,對于一個6關(guān)節(jié)的機械臂,我們只需要用3X6=18個參數(shù),就可以描述運動學參數(shù)。
2.2 連桿參數(shù)在連桿坐標系中的表示方法
為了描述每個連桿與相鄰連桿之間的相對位置關(guān)系,需要在每個連桿上定義一個固連坐標系。根據(jù)固連坐標系所在連桿的編號對固連坐標系命名,如固連在連桿iii上的固連坐標系稱為坐標系{iii}。
下圖相對于上面的圖多了坐標系的描述:
這里引入的坐標系對后續(xù)分析運動學有很大的幫助。
坐標系{iii}的Z^\hat ZZ^軸稱為Z^\hat ZZ^i,并與關(guān)節(jié)軸{iii}重合,坐標系{iii}的原點位于公垂線ai與關(guān)節(jié)軸iii的交點處。X^\hat XX^i沿ai方向由關(guān)節(jié)指向關(guān)節(jié)i+1i+1i+1。 當ai=0時,X^\hat XX^i垂直于Z^\hat ZZ^i和Z^\hat ZZ^i+1所在的平面。按右手定則繞X^\hat XX^i軸的轉(zhuǎn)角定義為αi,Y^\hat YY^i軸由右手定則確定,從而完成了對坐標系{iii}的定義。
依照上述建立連桿坐標系的方法,我們可以定義連桿參數(shù)為:
| ai | 沿X^\hat XX^i軸 | 從Z^\hat ZZ^i移動到Z^\hat ZZ^i+1的距離 |
| αi | 繞X^\hat XX^i軸 | 從Z^\hat ZZ^i旋轉(zhuǎn)到Z^\hat ZZ^i+1的角度 |
| di | 沿Z^\hat ZZ^i軸 | 從X^\hat XX^i-1移動到X^\hat XX^i的距離 |
| θi | 繞Z^\hat ZZ^i軸 | 從X^\hat XX^i-1旋轉(zhuǎn)到X^\hat XX^i的角度 |
上表十分有用,需要時刻牢記,相比于上節(jié)抽象的文字描述,這里的描述則相對簡潔易懂。
2.2.1 來分析一道例題
(例題為原書第3章的3.7節(jié)對兩種工業(yè)機器人的運動學問題中的PUMA 560部分)
Unimation PUMA560是一個六自由度機器人,所有關(guān)節(jié)均為轉(zhuǎn)動關(guān)節(jié)(即這是一個6R機構(gòu))。圖3-18所示是所有關(guān)節(jié)角為零位時連桿坐標系的分布情況。圖3- 19所示是機器人前臂的一些詳細情況。
注意,當θ為0時,坐標系{0}(未在圖中表示)與坐標系{1}重合。還要注意,這臺機器人與許多工業(yè)機器人一樣,關(guān)節(jié)4、5和6的軸線相交于同一點,并且交點與坐標系{4}、{5}、{6}的原點重合,而且關(guān)節(jié)軸4、5、6相互垂直。圖3-20所示為機器人腕部機構(gòu)的運動簡圖。
那么該如何求出這組機械臂的D-H參數(shù)呢?
對照下表,對每個連桿進行分析
| ai | 沿X^\hat XX^i軸 | 從Z^\hat ZZ^i移動到Z^\hat ZZ^i+1的距離 |
| αi | 繞X^\hat XX^i軸 | 從Z^\hat ZZ^i旋轉(zhuǎn)到Z^\hat ZZ^i+1的角度 |
| di | 沿Z^\hat ZZ^i軸 | 從X^\hat XX^i-1移動到X^\hat XX^i的距離 |
| θi | 繞Z^\hat ZZ^i軸 | 從X^\hat XX^i-1旋轉(zhuǎn)到X^\hat XX^i的角度 |
由于坐標系{0}和坐標系{1}重合,故
沿X^\hat XX^0軸,從Z^\hat ZZ^0移動到Z^\hat ZZ^1的距離為0;
繞X^\hat XX^0軸,從Z^\hat ZZ^0旋轉(zhuǎn)到Z^\hat ZZ^1的角度為0;
沿Z^\hat ZZ^1軸,從X^\hat XX^0移動到X^\hat XX^1的距離為0;
由于關(guān)節(jié)軸1為轉(zhuǎn)動關(guān)節(jié),所以θ1為可變參數(shù)。
| a0 | 沿X^\hat XX^0軸 | 從Z^\hat ZZ^0移動到Z^\hat ZZ^1的距離 | 0 |
| α0 | 繞X^\hat XX^0軸 | 從Z^\hat ZZ^0旋轉(zhuǎn)到Z^\hat ZZ^1的角度 | 0 |
| d1 | 沿Z^\hat ZZ^1軸 | 從X^\hat XX^0移動到X^\hat XX^1的距離 | 0 |
| θ1 | 繞Z^\hat ZZ^1軸 | 從X^\hat XX^0旋轉(zhuǎn)到X^\hat XX^1的角度 | θ1 |
由于坐標系{1}原點和坐標系{2}原點重合,但坐標軸之間作了旋轉(zhuǎn)變換,故
沿X^\hat XX^1軸,從Z^\hat ZZ^1移動到Z^\hat ZZ^2的距離為0;
繞X^\hat XX^1軸,從Z^\hat ZZ^1旋轉(zhuǎn)到Z^\hat ZZ^2的角度為-90°;
(這里的-90°怎么來的?在上一篇文章最后的4.3節(jié)提到了坐標軸旋轉(zhuǎn)角度正負的判斷方法:
θ的符號由右手定則確定,即大拇指指向X^\hat XX^1正方向,那么食指就是Y^\hat YY^1,中指就是Z^\hat ZZ^1,然后大拇指朝向屏幕或紙的里面,坐標系也跟著右手旋轉(zhuǎn),觀察Z^\hat ZZ^2相對于Z^\hat ZZ^1是順時針還是逆時針轉(zhuǎn)動,如果是順時針轉(zhuǎn)動,那θ為正;否則為負。所以這邊的旋轉(zhuǎn)角度是-90°,即逆時針旋轉(zhuǎn)90°。)
沿Z^\hat ZZ^2軸,從X^\hat XX^1移動到X^\hat XX^2的距離為0;
由于關(guān)節(jié)軸2為轉(zhuǎn)動關(guān)節(jié),所以θ2為可變參數(shù)。
| a1 | 沿X^\hat XX^1軸 | 從Z^\hat ZZ^1移動到Z^\hat ZZ^2的距離 | 0 |
| α1 | 繞X^\hat XX^1軸 | 從Z^\hat ZZ^1旋轉(zhuǎn)到Z^\hat ZZ^2的角度 | -90° |
| d2 | 沿Z^\hat ZZ^2軸 | 從X^\hat XX^1移動到X^\hat XX^2的距離 | 0 |
| θ2 | 繞Z^\hat ZZ^2軸 | 從X^\hat XX^1旋轉(zhuǎn)到X^\hat XX^2的角度 | θ2 |
如圖3-18,
沿X^\hat XX^2軸,從Z^\hat ZZ^2移動到Z^\hat ZZ^3的距離為a2;
繞X^\hat XX^2軸,從Z^\hat ZZ^2旋轉(zhuǎn)到Z^\hat ZZ^3的角度為0;
沿Z^\hat ZZ^3軸,從X^\hat XX^2移動到X^\hat XX^3的距離為d3;
由于關(guān)節(jié)軸3為轉(zhuǎn)動關(guān)節(jié),所以θ3為可變參數(shù)。
| a2 | 沿X^\hat XX^2軸 | 從Z^\hat ZZ^2移動到Z^\hat ZZ^3的距離 | 0 |
| α2 | 繞X^\hat XX^2軸 | 從Z^\hat ZZ^2旋轉(zhuǎn)到Z^\hat ZZ^3的角度 | -90° |
| d3 | 沿Z^\hat ZZ^3軸 | 從X^\hat XX^2移動到X^\hat XX^3的距離 | 0 |
| θ3 | 繞Z^\hat ZZ^3軸 | 從X^\hat XX^2旋轉(zhuǎn)到X^\hat XX^3的角度 | θ3 |
后面幾個關(guān)節(jié)的D-H參數(shù)計算方式同上,就不一一列舉了。最終的連桿參數(shù)表如下:
2.2.2 UR5機械臂的連桿參數(shù)
根據(jù)文章開頭的UR5機械臂結(jié)構(gòu)圖和官方的文檔數(shù)據(jù)我們也可以計算出其D-H參數(shù)如下:
三 操作臂運動學
我們已經(jīng)能夠分析相鄰連桿之間的關(guān)系,下一步就是利用求得的連桿參數(shù)將獨立的相鄰連桿之間的變換聯(lián)系起來,求出連桿n相對于連桿0的位置和姿態(tài)。
3.1 連桿變換的推導
在這一節(jié),我們將導出相鄰連桿間坐標系變換的一般形式,然后將這些獨立的變換聯(lián)系起來求出連桿n相對于連桿0的位置和姿態(tài)。
我們希望建立坐標系{i}相對于坐標系{i-1}的變換。一般這個變換是由四個連桿參數(shù)構(gòu)成的函數(shù)。對任意給定的機器人,這個變換是只有一個變量的函數(shù),另外三個參數(shù)是由機械系統(tǒng)確定的。通過對每個連桿逐一建立坐標系,我們把運動學問題分解成n個子問題。為了求解每個子問題,即i-iiT,我們將每個子問題再分解成四個次子問題。四個變換中的每一個變換都是僅有一個連桿參數(shù)的函數(shù),通過觀察能夠很容易寫出它的形式。
首先我們?yōu)槊總€連桿定義.三個中間坐標系一{P},{Q}和{R}。下圖所示是與前述一樣的一對關(guān)節(jié),圖中定義了坐標系{P}、{Q}和{R}。注意,為了表示簡潔起見,在每一個坐標系中僅給出了X^\hat XX^軸和Z^\hat ZZ^軸。
把在坐標系{i}中定義的矢量變換成在坐標系{i- 1}中的描述,這個變換矩陣可以寫成:
即
其中
上式還可以寫作
即
這里ScrewQ(r,φ)代表沿Q軸平移r、再繞Q軸旋轉(zhuǎn)角度φ的組合變換。
則有
3.2 連桿變換的連乘
如果已經(jīng)定義了連桿坐標系和相應的連桿參數(shù),就能直接建立運動學方程。分別計算出各個連桿變換矩陣就能得出各個連桿參數(shù)的值。把這些連桿變換矩陣連乘就能得到一個坐標系{N}相對于坐標系{0}的變換矩陣:
變換矩陣0NT是關(guān)于n個關(guān)節(jié)變量的函數(shù)。如果能得到機器人關(guān)節(jié)位置傳感器的值,機器人末端連桿在笛卡兒坐標系里的位置和姿態(tài)就能通過0NT計算出來。.
3.3 繼續(xù)2.2.1節(jié)例題的分析
根據(jù)
我們可以求出每個連桿的變換矩陣:
再由連桿變換的連乘,我們可以得到06T。
有:
式中c5是cosθ5的縮寫,s6 是sinθ6的縮寫等等。
另外有:
這里用了二角和公式:
則:
式中
最后得到:
式中
總結(jié)
以上是生活随笔為你收集整理的机器人学导论——操作臂运动学的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP 协议报文格式
- 下一篇: fork()函数