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