(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建模的主要知識點如下: DH建模分原版和修正版,修正版克服了原版建模中的一些問題,比較常用,本文介紹修正版DH建模方法 預(yù)備知識: 2、齊次坐標(biāo)變換矩陣 若要表示旋轉(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ū)分。 (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ī)定 建系的原則 來結(jié)合具體的一個模型看看: 上圖示意了一個三自由度機械臂,要對其進行DH建模,就是要建立{0}{1}{2}{3}{4}個坐標(biāo)系,其中,1、2、3對應(yīng)三個關(guān)節(jié),0號對應(yīng)基座,4號對應(yīng)末端,對好上述原則一條一條過。 再來看{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也很明確。 理一下,此時x1,x2,x3的軸線與方向都確定了。 (4)下面該用右手定則確定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ù)運算用的。 表頭分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é)角。 當(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)。 根據(jù)之前預(yù)備知識里所講到的,因為每次機器人關(guān)節(jié)旋轉(zhuǎn)都是某個單一軸在轉(zhuǎn)動,所以很多夾角余弦值都是特殊值(0或1)。這些矩陣帶入表達式 --------------2018年11月6日更新內(nèi)容---------------------- 我們用matlab機器人工具箱繪制該機械臂。
繪制出的機械臂如下圖: 若將3號坐標(biāo)系和4號坐標(biāo)系合并,我們也使用機器人工具箱畫一下。
3行DH參數(shù)模型,輸入[0 pi/2 0] 關(guān)于如何寫出T(i-1->i)的變換矩陣。 第二種方法才是正常的方法:DH建模法已經(jīng)給出了 T(i-1->i)的變換通式, |
|