日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

DH建模的具體步驟

 周偉資料室 2019-04-10

(2018年11月21日更新)

D-H)建模方法是由Denavit和Hartenberg 提出的一種建模方法,主要用在機器人運動學(xué)上,這種方法在每個連桿上建立一個坐標(biāo)系,通過齊次坐標(biāo)變換來實現(xiàn)兩個連桿上坐標(biāo)的變換,在多連桿串聯(lián)的系統(tǒng)中,多次使用齊次坐標(biāo)變換,就可以建立首末坐標(biāo)系的關(guān)系。學(xué)習(xí)DH建模的主要知識點如下:
1、會齊次坐標(biāo)變換(這是機器人運動學(xué)的基礎(chǔ)知識)
2、知道DH建模中α,a,d,θ這四個量對應(yīng)于連桿上的那些地方。
3、對于已知的連桿機構(gòu),會列些DH參數(shù)表。
4、會列些最終坐標(biāo)變換的等式,建立機械臂末端與基座的坐標(biāo)關(guān)系。

DH建模分原版和修正版,修正版克服了原版建模中的一些問題,比較常用,本文介紹修正版DH建模方法

預(yù)備知識:
1、齊次坐標(biāo)系
齊次坐標(biāo)系的定義可以參閱百度百科,核心就是n維向量的n+1維表示方法,比如,平面的一個點:(2,3),齊次坐標(biāo)表示為(2w,3w,w),w為非零實數(shù),同理,對于空間中某點的坐標(biāo)(x,y,z),齊次坐標(biāo)可表示為(xw,yw,zw,w),若令w取1,就是(x,y,z,1),這就是三維坐標(biāo)的齊次坐標(biāo)表示方法(不唯一)。
齊次坐標(biāo)表示在計算機圖學(xué)和機器人學(xué)中有著廣泛的應(yīng)用,優(yōu)點說出來都很難懂,但在機器人學(xué)領(lǐng)域,主要優(yōu)點就是將旋轉(zhuǎn)變換和平移變換統(tǒng)一成了4×4的矩陣運算,任何一種復(fù)合變換(旋轉(zhuǎn)與平移可以同時存在),都可以表示成一個4×4的齊次變換矩陣。

2、齊次坐標(biāo)變換矩陣
若不使用齊次坐標(biāo)表示法,對于三維空間下的平移,可以在原有坐標(biāo)的基礎(chǔ)上加一個向量這么表示:Pi=Pj+Pij,下圖中,若P點在j坐標(biāo)系坐標(biāo)為(1,1,1),i到j(luò)的平移向量為(0,15,0),則P點在i坐標(biāo)系下的表示為(1,16,1),應(yīng)該很好理解吧。
這里寫圖片描述

若要表示旋轉(zhuǎn),稍微復(fù)雜點,由i系轉(zhuǎn)到j(luò)系,要考慮到軸與軸之間的多個夾角,最終得到一個旋轉(zhuǎn)姿態(tài)矩陣R,表達式里看著有好多夾角余弦,其實若只繞著某個軸轉(zhuǎn),很多值都會變得簡潔。
這里寫圖片描述
這里寫圖片描述

上面說的是不使用齊次坐標(biāo)的情況,若使用齊次坐標(biāo),就是將旋轉(zhuǎn)與平移組合在一起,構(gòu)建一個4*4的齊次變換矩陣,齊次變換矩陣長相如下所示:
這里寫圖片描述

仔細看一下,就是將上面說的R和P組合在了一起,右下角填了一個1,其余地方補0,這就是齊次變換矩陣。當(dāng)看到一個44的齊次變換矩陣時,你一眼就能知道左上角的33表示旋轉(zhuǎn),右邊一列表示平移,下面一行是固定寫法,以后再說變換時,就不再把旋轉(zhuǎn)與平移割裂開了,這一個矩陣就表示綜合的變換。

上面是預(yù)備知識,下面才是D-H建模正題。

現(xiàn)在的機械臂很多都是旋轉(zhuǎn)關(guān)節(jié)與滑動環(huán)節(jié)的鏈?zhǔn)浇M合,假設(shè)你知道機械臂各個連桿的尺寸,但各個關(guān)節(jié)都在動,你如何確定末端的位置?DH建模要解決的根本問題就是建立機械臂末端與基座位姿位姿關(guān)系的問題。

首先,需要知道DH建模里的一些基本概念,若對下述概念模棱兩可的話,后續(xù)建模的關(guān)系根本理不清,所以,請看圖一個一個認(rèn)識。
這里寫圖片描述

這張圖表示了任意兩個關(guān)節(jié)間的位姿關(guān)系,機械臂的外觀結(jié)構(gòu)可以多種多樣,但剖析本質(zhì),都可以表示成這樣的一組相鄰關(guān)節(jié)。要想知道末端與基座間的位姿關(guān)系,需要先了解相鄰兩關(guān)節(jié)的關(guān)系。之后的分析,都建立在當(dāng)前的套路上。

請將當(dāng)前關(guān)節(jié)標(biāo)號定位i-1,下一個關(guān)節(jié)定位i。有些教程將當(dāng)前關(guān)節(jié)定位i,下一個是i+1,這樣后續(xù)的分析中角標(biāo)都會于此不一樣,請注意區(qū)分。
四個基本概念:
(1)連桿i-1的長度。是指圖中a(i-1)所示的距離。表示i-1關(guān)節(jié)的軸線與i關(guān)節(jié)的軸線的垂直距離。
(2)連桿i-1的扭角。是指圖中α(i-1)所示的角度??臻g兩條直線即使不相交也存在夾角,那么,扭角α(i-1)就是關(guān)節(jié)i-1與關(guān)節(jié)i軸線的夾角。
(3) 連桿i 相對于連桿i-1的偏置di。下圖中的di就是偏置。我們來看i關(guān)節(jié)的軸線,它與前后兩個關(guān)節(jié)軸線各有一條公垂線(紅線,下一個關(guān)節(jié)雖沒畫出來),這兩條公垂線的距離就是連桿i相對連桿i-1的偏置。(請看清楚連桿i-1和連桿i的位置,藍字)。
這里寫圖片描述

(4) 關(guān)節(jié)角θi。連桿i相對于連桿i-1繞i軸的旋轉(zhuǎn)角度,圖中右下角的θi,其實就是上圖兩條紅色公垂線的夾角。

上述兩個圖應(yīng)該說清了兩個關(guān)節(jié)的一般位置關(guān)系,涉及的4個基本概念需要詳細看清,a(i-1) ,α(i-1) ,di ,θi 就是后續(xù)DH建模表的四個要素,每個角標(biāo)都要看清。

其次,需要知道各個坐標(biāo)系建立的原則。為每個關(guān)節(jié)建立一個與之對應(yīng)的坐標(biāo)系,才能計算它們之間的相互轉(zhuǎn)換,而各個坐標(biāo)系的建立都要遵守一定規(guī)則,才能用后面矩陣連乘的方法進行轉(zhuǎn)換。這里建立坐標(biāo)系,就是要確定7個要素,確定x,y,z所在軸線,x,y,z的方向,以及原點的位置,這幾個要素其實是有關(guān)聯(lián)的,比如,你總得用右手系來建立坐標(biāo)系吧,所以,已知其中幾條信息,有些信息就隨之確定了。

這里用標(biāo)號0表示與基座固連的坐標(biāo)系,用標(biāo)號n表示末端的坐標(biāo)系,i就是中間各個關(guān)節(jié)的坐標(biāo)系標(biāo)號。
這里寫圖片描述

上圖簡單示意了一下各個坐標(biāo)與關(guān)節(jié)的標(biāo)號關(guān)系,但各坐標(biāo)的實際位置與姿態(tài)可沒有那么簡單,注意一下,標(biāo)號0就是指基座,有時它可能與第一個關(guān)節(jié)坐標(biāo)系相重合,但還是不能忽略它。

下面3個加粗標(biāo)題就是DH建模的主要規(guī)則:

先建立中間坐標(biāo)系{i},后兩端坐標(biāo)系{0}、{n}

坐標(biāo)系{0}和{n}的規(guī)定
Z0軸沿關(guān)節(jié)軸1的方向,關(guān)節(jié)變
量1為零時, 坐標(biāo)系{0}與{1}重合
關(guān)節(jié)1是旋轉(zhuǎn)關(guān)節(jié)時, d0=0,
關(guān)節(jié)1是移動關(guān)節(jié)時, θ0=0
Zn軸沿關(guān)節(jié)軸n-1的方向,關(guān)節(jié)變
量n-1為零時, 坐標(biāo)系{n-1}與{n}重合
關(guān)節(jié)n-1是旋轉(zhuǎn)關(guān)節(jié)時, dn=0,
關(guān)節(jié)n-1是移動關(guān)節(jié)時, θn=0

建系的原則
1)確定Z軸:找出關(guān)節(jié)軸線及關(guān)節(jié)轉(zhuǎn)向采用右手定則確定Z;
2)確定原點:如果兩相鄰軸線Zi與Zi+1不相交,則公垂線與軸線i的交
點為原點,注意平行時原點的選擇應(yīng)使偏置為零;如果相交則交點
為原點,注意:如果重合則原點應(yīng)使偏置為零;
3)確定X軸:兩軸線不相交時,X與公垂線重合,指向從i到i+1;
若兩軸線相交,則X是兩軸線所成平面的法線X= - +Zi × Zi+1 ;
注意:如果兩軸線重合,則X軸與軸線垂直且使其他連桿參數(shù)為零;
4)按右手定則確定Y ;
5)當(dāng)?shù)谝粋€關(guān)節(jié)變量為零時,規(guī)定{0}與{1}重合,對于
末端坐標(biāo)系{n},原點與X任選,希望坐標(biāo)系{n}使桿參數(shù)盡量為零。

來結(jié)合具體的一個模型看看:
這里寫圖片描述

上圖示意了一個三自由度機械臂,要對其進行DH建模,就是要建立{0}{1}{2}{3}{4}個坐標(biāo)系,其中,1、2、3對應(yīng)三個關(guān)節(jié),0號對應(yīng)基座,4號對應(yīng)末端,對好上述原則一條一條過。
(1)找z軸。
關(guān)節(jié)軸線就是,于是圖上紅線Z123就可以標(biāo)出來了,但指向先別著急定。
(2)定原點。
每個坐標(biāo)系都需要定原點,{0}和{4}先別管,先看{1}{2}{3}號坐標(biāo)系,因為中間的約束條件多,容易確定,這里看{2}號坐標(biāo)系:z2和z3軸線不向交,公垂線與z2的交點就是{2}號坐標(biāo)系的原點,是不是和“原則”里說的一樣?(此時一不小心x2的軸線也提前定下來了,就是沿著連桿2)

再來看{1}號的原點,z1和z2平行,此時,也是找公垂線,但公垂線與兩軸相交時位置不唯一,此時要求“偏置為0”,{2}號坐標(biāo)系原點都定了,為了使{1}{2}間偏置為零,{1}的原點也是確定的,就在關(guān)節(jié)中心上(此時x1軸線也提前定了下來)。

來看{3}號坐標(biāo)系的原點。之前只確定了{3}號Z軸的位置延旋轉(zhuǎn)軸,但原點可不要想當(dāng)然就在3號關(guān)節(jié)的中心,要按照“原則”來。z2與z3有一條唯一相交的公垂線x2(如圖),z3與z4軸線重合,有無數(shù)條相交的公垂線,要讓這兩邊的公垂線距離最短,即“偏置=0”,此時只能讓{3}號坐標(biāo)系的原點定在連桿拐角處,對比一下,這個原點并不在3號關(guān)節(jié)的中心(黃色關(guān)節(jié))。

理一下,現(xiàn)在定下來的只是z1、z2、z3的軸線位置和原點位置。

來看{0}號坐標(biāo)系,我們使用坐標(biāo)系{0}和{n}的規(guī)定,z0沿著關(guān)節(jié)1的軸線方向,所以z0與z1軸線重合,{0}號系是固定在基座的,所以原點是確定的,就在第一個關(guān)節(jié)中心,又因為1號關(guān)節(jié)是旋轉(zhuǎn)關(guān)節(jié),所以要看關(guān)節(jié)變量d1是否為0,顯然,d1=0(因為關(guān)節(jié)1與基座本身就是重合的,x1和x0距離為0),所以,{0}坐標(biāo)系與{1}號坐標(biāo)系完全重合,只要1號系定了,0號系就能完全確定。

來看{4}號坐標(biāo)系,4號系是固定在末端的,所以原點定在末端(此時的末端就是關(guān)節(jié)3的中心),z4軸沿著關(guān)節(jié)3的旋轉(zhuǎn)軸向,此時可以發(fā)現(xiàn),{4}號系和{3}號系存在一個偏置,因為{3}號系的原點和{4}號系的原點距離相差一段距離(圖中的d2),也就是說,只要{3}號系定了,{4}號系就是沿著z軸偏移d2。

再來理一下,現(xiàn)在z0,z1,z2,z3,z4的軸線和原點位置都定了。

(3)現(xiàn)在安照建系的原則3來定x軸。

還是從{2}號系開始吧。z2與z3不重合,x軸沿著公垂線,由2指向3,所以x2很明確。

{1}號系也是一樣,z1與z2也不重合(平行),x軸沿著公垂線,由1指向2,所以x1也很明確。
{3}號系稍微不一樣,z3與z4重合,此時為了使其他連桿參數(shù)為0,兼顧{2}系和{3}系,x3與x2應(yīng)該重合且指向一致,若不一致,必然會引入夾角,這不是給自己找麻煩么。

理一下,此時x1,x2,x3的軸線與方向都確定了。

(4)下面該用右手定則確定y了。
有人可能會發(fā)現(xiàn),嚴(yán)格來說,現(xiàn)在z軸的軸線確定了,可指向并沒有確定。其實這里只要按照一般習(xí)慣指定一個,其余的都會隨之確定。比如,我們從z2開始,圖畫成這樣,最好就把z2指向上吧(看著比較方便),那么,z1也就應(yīng)該上向上。再來看z3,最好讓z3指向機械臂的伸展方向(看著比較方便),因此z4的指向也確定了。此時用右手定則,y的指向是一定的,不會有歧義。

最終的坐標(biāo)系就和上圖所示的坐標(biāo)系相一致,每一步的確定都請參照建系的原則,其實中間有些環(huán)節(jié)熟練之后可以一步到位,有些中間坐標(biāo)系的位置你也可以不這樣建,比如上例{3}系{4}系其實也可以完全重合,只要你能搞清楚系與系之間的轉(zhuǎn)換關(guān)系,但DH建模法肯定是一條比較規(guī)范的方法,可以保證你見得坐標(biāo)系別人能看懂,并且避免一些不易察覺的錯誤。

上述原則最好能記住,若記不住,建模時也得回頭反復(fù)校對,很有可能一個坐標(biāo)原點沒選對,或者某個軸方向指錯了,導(dǎo)致建立了一個錯誤的坐標(biāo)轉(zhuǎn)換關(guān)系。

還沒完,上面只是畫了畫坐標(biāo)系,下面需要來填一張DH參數(shù)表。這是便于你后續(xù)運算用的。
這里寫圖片描述
這是與上例對應(yīng)的已經(jīng)填好的DH參數(shù)表,下面的目標(biāo)就是掌握如何構(gòu)造并填好這樣一張表。

表頭分5欄,這是固定寫法。需要確定之前的一些連桿參數(shù),這些參數(shù)表征了各個坐標(biāo)系間的變換。

i從1到末端,這里末端坐標(biāo)系編號為4,所以i到4。

先填i=1這一行,i=1時,就是要去找出a0,α0,d1和θ1?;仡櫼幌?,a是指連桿長度,α是指扭角,d是指偏置,θ是指關(guān)節(jié)角。
0號基座坐標(biāo)系與1號坐標(biāo)系重合,所以a0=0,α0=0,d1=0,而關(guān)節(jié)1是可以轉(zhuǎn)動的,所以θ1是一個變量,初始轉(zhuǎn)交可以認(rèn)為是0度,所以直接寫θ1(0),表示這是一個變量,括號內(nèi)填初始狀態(tài)值。

當(dāng)i=2時,去找a1,α1,d2和θ2。a1是連桿1的長度,是圖中已知數(shù)據(jù),α1是z1與z2的夾角,z1與z2平行,所以α1=0,d2是x1與x2的距離,x1與x2共線,所以d2=0,關(guān)節(jié)2是轉(zhuǎn)動關(guān)節(jié),x1與x2的夾角是變量,初始夾角為0,所以記為θ2(0)。

當(dāng)i=3時,找a2,α2,d3和θ3。a2是連桿2的長度,已知。α2是z2與z3的夾角,注意是從{2}號系變到{3}號系,當(dāng)你用右手握住x2并將拇指指向與x2保持一致時,需要逆著握拳方向旋轉(zhuǎn){2}號坐標(biāo)系,才能使之與{3}號系重合,所以α2=-90°。d2=0,θ3是變量,不在重復(fù)。

當(dāng)i=4時,{3}系到{4}系只存在一個偏置,圖中已知的d2。

這樣,DH參數(shù)表就填完了,關(guān)鍵就是正確找出a,α,d,θ這四個參數(shù)在每次相鄰坐標(biāo)系變換是的值。

到此完成了一大半。

但不要忘了,最終我們是要找出首末坐標(biāo)系的齊次變換矩陣,而不是僅僅畫個表。

下面的內(nèi)容涉及到機器人的位姿描述與坐標(biāo)變換,這里只展示了結(jié)論,其實每一個式子都有推導(dǎo)。
從{0}系到{4}系的齊次變換矩陣記為這里寫圖片描述,它表示{4}號坐標(biāo)系相對于{0}號坐標(biāo)系的位姿,這里寫圖片描述
表示{0}到{4}的矩陣變換可以分解為每一步的矩陣連乘。根據(jù)DH參數(shù)表,可以方便的寫出每一步的齊次變換矩陣(見文章結(jié)尾處11月21日補充內(nèi)容),DH參數(shù)表的每一行對應(yīng)一個齊次變換矩陣。如下圖:
這里寫圖片描述這里寫圖片描述這里寫圖片描述這里寫圖片描述

根據(jù)之前預(yù)備知識里所講到的,因為每次機器人關(guān)節(jié)旋轉(zhuǎn)都是某個單一軸在轉(zhuǎn)動,所以很多夾角余弦值都是特殊值(0或1)。這些矩陣帶入表達式這里寫圖片描述,就能得到T04,其中有些值是未知的,這些值就是要求解的關(guān)節(jié)變量,求出關(guān)節(jié)變量,也就可以實現(xiàn)機械臂的控制了。

--------------2018年11月6日更新內(nèi)容----------------------

我們用matlab機器人工具箱繪制該機械臂。
首先,按照4行DH參數(shù)表繪制,此時相當(dāng)于有4個關(guān)節(jié),但最后一個關(guān)節(jié)角不能旋轉(zhuǎn),假設(shè)連桿長度偏置都為20

L1=RevoluteMDH('a',0,'d',0,'alpha',0);
L2=RevoluteMDH('a',20,'d',0,'alpha',0);
L3=RevoluteMDH('a',20,'d',0,'alpha',-pi/2);
L4=RevoluteMDH('a',0,'d',20,'alpha',0);
bot = SerialLink([L1 L2 L3 L4 ], 'name', 'csdn');
bot.plot([0 0 0 0]);

繪制出的機械臂如下圖:
在這里插入圖片描述
圖中顯示了4個關(guān)節(jié)(紅色圓柱體),但請注意,第四個不能轉(zhuǎn),因為三關(guān)節(jié)電機是前一個圓柱體,4關(guān)節(jié)相對于3關(guān)節(jié)只是偏置。

若將3號坐標(biāo)系和4號坐標(biāo)系合并,我們也使用機器人工具箱畫一下。

L1=RevoluteMDH('a',0,'d',0,'alpha',0);
L2=RevoluteMDH('a',20,'d',0,'alpha',0);
L3=RevoluteMDH('a',20,'d',20,'alpha',-pi/2);
bot = SerialLink([L1 L2 L3] , 'name', 'csdn');
bot.plot([0 0 0 ]);

在這里插入圖片描述
沒辦法,竟然畫成了這樣。但仔細想一想上下兩個圖應(yīng)該是一樣的。
首先,機器人工具箱畫不出彎的連桿,所以第二幅圖中,要想表達一個彎的連桿,機器人工具箱采用了它自己的畫法,可以看連桿的投影,已經(jīng)拐彎了。
其次看末端坐標(biāo)系,上下兩圖的末端坐標(biāo)系方位是一樣的,這就表明在關(guān)節(jié)角[0 0 0]的輸入下,3行DH參數(shù)表和4行DH參數(shù)表所得到的機械臂正解是一致的,你可以多試幾個輸入再次看看,因此,這兩幅圖的描述的是同一個機械臂,建3個坐標(biāo)系與建4個坐標(biāo)系是等價的。

3行DH參數(shù)模型,輸入[0 pi/2 0]
在這里插入圖片描述
4行DH參數(shù)模型,輸入[0 pi/2 0 0]
在這里插入圖片描述
--------------2018年11月21日更新內(nèi)容----------------------

關(guān)于如何寫出T(i-1->i)的變換矩陣。
兩種方法,第一種方法比較麻煩,就是通過本文開頭的預(yù)備知識中,找到兩個坐標(biāo)變換之間各個坐標(biāo)軸之間的夾角余弦。

第二種方法才是正常的方法:DH建模法已經(jīng)給出了

T(i-1->i)的變換通式,在這里插入圖片描述
變換通式中包含了DH參數(shù),將每行DH參數(shù)帶入就能求出每一步T(i-1->i)的具體表達式。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多