好,我們在這裡我們再把剛剛所講過的 DH
的表達法 就是稍微再做一個小結,那這裡我就不再細講了,因爲這裡剛剛這四個
角度的,四個角度跟長度的定義,以及它在所謂桿件上面的相對幾何
的關係,我們之前都比較詳盡地説明,我在這裡把它放過來,是因爲我們等一下要導入另外一- 個表達法
讓各位同學來針對這兩個表達法去做一個比較 那在這個定義下面,我們知道說它是先經過一個
α 再經過一個 a,再經過一個 θ,再經過一個 d,來讓我們可以從
i-1 的 frame 跑到 i,或是從 i 再跑到 i+1
所以我這裡列出來的順序也是我們從低的 低數字的
frame 跑到高數字的 frame,所需要操作的順序,那這等於說是 α 在
a,θ 在 d 那在這個操作順序下面,我們所得到的 transformation
matrix,就像是剛剛之前所講的 是經過了四個,也是 α、 a、 θ、
d,最後得到的矩陣是長這個樣子 那這個表達法主要是在 Craig 課本上面
所用的方式,那 Craig 課本其實因爲在很多的學校裡面都當成是教機器人簡介的課本
所以我們今天基本上是以這個方式來做定義,然後來做一些説明
那各位同學發現說,在這個表達法上 它的一個比較,看起來比較奇怪的地點就是説
它今天的表達法的兩個參數需要是減一的,兩個參數是在當下的,等於說我們今天是第 i
個 link 的話 我們 θ 跟 d 是在第 i 個 link 下面來看,但是我們所用到的
α 跟 a 這樣看起來就是要用到 i-1 的 link 的,所以等於說在這個部分是比較不直觀的
因爲我們從下面來看就知道說,我們的 θ 跟 d 的確是在我們這個的 joint
上面,但是我們今天往回拉的時候,在找 α 跟 a 的時候 我們是要連結到
i-1 的 link 來看,所以才會說這兩個 是同時都得跑在我們的式子裡面。
那我們現在就來看一個除了這個 Craig 之外,大家也很常用的一個
表達法,或者說甚至在 Craig 之前,在很多一些比較
早期的書籍裡面,都是采用這個方式,也是在一開始 這個方法剛發明的時候的表達法。
那這一個表達法下面,我一樣是把這幾個桿件都畫出來 那在這裡可以看到說,比較不一樣的是說
在這個表達法上,大家比較習慣講 joint,不是講 axis 那在講 joint
之後,不衹是名稱上的差異 大家會發現說,在這個表達法上每一個
link 所對應到的 joint 是放在這個 link 的後方
那這個就造成了許多的差異,剛剛在 Craig 的表達法下
我們 axis i-1 會是在 link
i-1 的前方,就等於說 我們今天每一個
link,它的前方是它的轉軸 那在這一個表達法下面,每一個
link 它的轉軸是放在這個 link 的後方,就等於說它代表的是這個
link 跟下一個 link 中間的轉動 所以,大家可以看到說,我的 link,這裡是
link i,我這個是 joint i 那在剛剛 Craig 表達法下面,這邊是 link
i-1 嘛 所以就是 axis i-1,那在這個表達法下面
這個是 joint i,那這邊就從 link i-1 變成 link
i,所以我們的 joint 才會在這個 link 的後方 那這個是第一個差異。
那第二個差異是說,好,我們今天在這個 joint 下面 我們仍然會有屬於這個
joint 的座標繫定義在上面 那這個 i 跟 i 下面是對應到的,所以
joint i 上面的座標繫 就是 frame i,joint i-1 的座標繫就是
frame i-1 那這個差別就在於說,我今天這個 frame,Z
軸的方向定義的是一樣 我的 X 軸就比較不一樣了,我這裡在
joint i 上面的 frame 的 X 軸,它所對應到的方向并不是
從 Zi 到 Zi+1 的方向,而是從 Zi-1
到 Zi 的方向,是變成是我們的 Xi 所以就等於說,我們在算出這個
Xi 的方向的時候,我們是要往回追,追到說 Zi-1 在哪裡
所以這是 Xi 方向上面會有一點不同 Xi
不同之外,我們的符號定義會有一些差異 像我們今天 joint
i、 frame i 所對應到的角度 就變成是 θi+1,所以這等於說這一個方法上面
它在某些運算上面是比較一致,像等於說我們今天 joint
i 它就是 θi di ai αi,至於感覺是有四個符號,可是我們今天在對應到這個
joint 的時候,有些比較不直觀的點 譬如說今天 joint i 就對應到
θi,i+1 的 角度,所以等於說就變成說兩個方法 各有它的好壞。
我們等一下還可以再進一步看說兩個方法上 在真實應用上面的一些差異。
那各位同學可以現在把這個圖仔細地想一想,消化一下說 我們看說今天在這個定義下面,它應該是怎麽去跑
那今天在這一個架構下面,我們也一樣像之前的 Craig 的表達法 我們從 i 換回 i-1
的時候,也要經過四步的轉換 那在這裡四步的轉換跟剛剛不一樣就是説
這個四步的轉換,同樣是四個參數,因爲我們定義方式的不同 我們在一路轉過去的過程中,它的順序就會不一樣
像在這裡可以看到說,我們第一個的動作反而是先轉 θ
就等於說我們從這個 frame a,我們從 i-1 的 這個 frame,先轉了
θ 動了 d,移了 a,最後才是轉這個
α 所以就等於說跟剛剛的順序就不一樣了,我們在這個定義下
我們的 frame 要先經過對 θ,對 Zi-1 軸轉 θi
然後對 ZR 軸轉 di,然後對 XQ 軸轉
ai,對 XP 軸轉 αi,我們中間還是一樣,跟剛剛一樣會有三個
内插的一個 frame 來做一個順序性的移動或轉動 但是這幾個内插的 frame
所代表的,所相乘起來的順序 就跟剛剛是不一樣的,所以等於說今天雖然說是這四個參數
每個矩陣的本身是一樣的,因爲我們都是兩個 θ,兩個 d 嘛,如果單獨看每一個
T 它是一樣的,因爲前後的排列不一樣,它最後乘出來的矩陣的内容就會跟剛剛 Craig 表達法下是不一樣的。
那各位同學可以看一下,這一個方式下面所乘出來矩陣是長這樣 那我們就再快速地把剛剛
的例題再來跑一遍,那各位同學就可以比較說這兩個方法 所表達下面的差異到底是什麽。
那首先我們先用 Craig 的方式 那這個例題剛剛有做過,所以我這裡就比較快的速度把它走完
我們先找到 joint axis,是這三個
那找到了它之間相互的綫段,就是中間兩個的咖啡色 然後定義我們的
Z 軸,Z1、 Z2、 Z3 在這裡,因爲等於說我們的桿件
1 的轉軸是在桿件 1 的前端,所以桿件 2 的轉軸在前端,桿件 3
的轉軸在前端,所以 1、 2、 3 在這三個位置 然後我們找到了
X,就等於說我們 X1 是 1 到 2 的方向
X2 是 Z2 到 Z3 的這個方向的一個連綫
然後接下來把 Y 補上來,那之後來找到 frame 0 跟 frame n
frame 0 跟 frame 1 基本上是重合,在 θ1 等於 0 的時候 就是
frame 0 的姿態,那 frame n 在這裡是 3 嘛,也跟剛剛
一樣,是 θ3 等於 0 的時候,跟 2 的一樣的姿態,是 frame
3 那我們就可以像剛剛一樣,就有一個 DH 表
那我們的 P 點一樣,跟剛剛一樣,就是説我們今天是一個在 X3
方向上的平移,所以等於說我的 P 在 3 下面是 {L3,0,0} 這個是我們在 Craig
表達法下面的一個設定是長這樣子,我們的 frame 長這樣子 那在這個 frame
下面,我們算出來了三個 transformation matrices,我這裡幫各位同學算出來
那因爲我們三個都是轉動,所以我們知道說,今天這三個 θ 我們這裡的
θ,我這裡因爲在程式上面打字的關係,是用 t 來代表 所以這個 1
0 等於說這個 t1 代表 θ1,2 1 的 t2 代表 θ2 3 2
的這個 t3 代表 θ3,那所以這剛剛的參數,有平移的就是
L1 L1 L2,然後是這個是 0 跟 1 frame 是沒有移動,所以就等於說是這三個是
0 等於說我們這裡就找到了,我們在這個例題下面 所使用到的三個
transformation matrices,各自是這 show 出來的這三個 那這個是用
Craig 方法所算出來的 那麽現在就來看一下用剛剛後來教的那個
standard DH 方式 跑出來又有什麽不一樣?那我們的題目是一模一樣,我們這裡有三個
link,然後有三個轉動 那首先第一步,我們一樣找到了三個轉軸
那這裡就可以發現說,我們 joint 的編號方式就跟剛剛不一樣了
我們剛剛的 link 1 的 axis 1 是在左側的現在 joint 0 的位置
等於說我們今天本來在 Craig 方式下面,是 axes
是定義在 link 的前端,那在標準的方式下面 我們的 joint
是定義在 link 的後端,所以 joint 1 變成跑到了剛剛
axis 2 的位置,joint 2 跑到了 剛剛 axis
3 的位置,所以等於說我們從前端跑到後端,所以就變成是這樣子鏈
那這樣鏈完之後,我們一樣找 common normal,那因為是同樣的幾何
所以 common normal 就等於說 common prependicular 中間的這個線段就沒有變動
那因為我們跑到後面之後,所以我們 今天的 Z 就會不一樣了,我們這個 Z0
的位置在這裡 Z1 就跑到了剛剛原本 Craig 下面 Z2 的位置 那這裡的
Z2 就跑到了剛剛 Craig 下面 Z3 的位置,就是等於說今天在編號上面會平移了一個位置
就是我們在這個標準法下面的定義是長這個樣子 那這個時候的
X 就不一樣了 我們剛剛的 X 是,譬如說我們
X1 是 Z1 指到 Z2 的方向,是我們的 X1
那這裡的 X1 就變成是 Z0 指到 Z1 的方向,是我們的
X1 所以等於說在這個架構下面,我們的坐標定義在桿件的最後端,然後它
有點像是沿著桿件原本的方向再放射出去,所以我們的 X1 在這個方向 我們的 X2 在這個上下的方向。
有了 X 之後,有了 Z,我們就可以把 Y 補上了,那基本上就是
因為是一個平面的一個手臂,所以它的 X1
大概就是長這樣,就跟我們一般的右手坐標系是一樣的表達法 那接下來我們就可以把
0 補上來 那在這裡就可以比較明顯地看到,0 跟 1
就會在不同的位置上面 因為我們現在已經把 1 的 frame 定義在桿件的末端,所以我們的
0 就會定義在桿件的前端,那用桿件的前端來接地
所以我們的 X0 Y0 就會在這個 link1 的左側,就相當於是桿件的前端 那
1 就跑到 link1 的末端,frame 2 跑到 link2 的末端,frame
3 也會跑到 link3 的末端,那我們就等於說方向的設定就比較剛剛前面的方式辦理
比較像是說這個桿件在往後在放射出去,就是 X3 跟 Y3 長這樣子。
那我們就把 這裡只是把剛剛的 θ
角補回來,把 θ 角補回來 那 θ3 就變成是 X2
跟 X3 之間的關係 這個的方式就跟剛剛其實是一樣,我們的
θ1 是 0 跟 1 之間的角度 那在兩個表達法都是這樣子。
那在這個新的表達法下我們的 P3 就不一樣了 因為我們的 P3
其實就已經移到了桿件的末端點 那如果這個末端點,像我們剛剛講的,我們是一個手臂要夾的位置的話
那變成說我們 P3 的原點就會剛好落在我們手臂要夾的位置,所以我們今天的
P 點 以這個新的這個 frame 3 的表達法來看,它會在原點上面就變成了 (0,0,0)
那各位同學還記得的話,剛剛在 Craig 表達法上 frame 3 是在這個桿件 3
的前端 所以它的表達法上會是 (L3,0,0),因為等於說我需要沿著
X 軸平移一個 L3 的長度 那在這個表達法下面,它就會回到 (0,0,0),就等於說它在原點上面
那經由這樣子的設定之下,我們就可以 找出今天在這個 standard DH
下面的參數表 那很多是因為是幾何的條件,所以等於說參數本身是沒有變動的,譬如說我們的
α 因為今天全部的轉軸都互相平行,所以我們並沒有去做一個扭轉的動作,所以
α 一樣全都是 0 那今天 a 就不一樣了,因為我們從 0 到
1 有偏移 1 到 2 有偏移,2 到 3 有偏移,所以等於說我們今天從 0 到 1,1
到 2,2 到 3 就剛好把我們三個桿件的偏移就都放進來。
所以就等於說在這個方法下面 剛剛我們原本的 L3
是隱藏在 P3 裡面,在這個表達法下 我們的 L3
就會跑進我們的 DH table 裡面,因為等於說我們的坐標就定義到了我們手臂的最後一個點
所以這個也是這個方式下面的好處,因為等於說我們的 末端點上面都會有一個依照本身定義方式的坐標建在上面
我們就不用針對說,在有些場合我們要針對這個末端點還需要一個坐標的時候 要再另外定義,它在本來定義法下就會有
那因為我們都在平面上面,所以一樣三個 d 就全都是 0
那一樣三個驅動關節,所以三個 θ 都在,那這個方式跟剛剛 Craig
方式比起來,就差在於說我們把 L3 放進來了 所以等於說剛剛有 7 個
0,現在變成是 6 個 0 那因為定義的不同,所以我們的 1,2,3
的位置也會上下地跑動 像剛剛的 L1,L2 是在 2 跟 3 的位置,現在是往上跑了
然後補了一個 L3 在最後面
好,那接下來等於說我們就把 剛剛所定義的
DH 用這個標準的方法把我們的 T 寫出來 那我們的
T 也可以看到說,因為我們其實這三個都是轉動的轉角 所以我們的
θ1,θ2,θ3 沒有動,它這個轉角的矩陣基本上也不會動
對不對?基本上都是對 Z 軸轉,所以我們發現說 今天這個旋轉矩陣裡面都是右上角的
2x2 會有值 那這個值的方式就等於說把 θ1,θ2,θ3 代進來
那各位同學可以發現說,比較不一樣的地方就在這裡了 剛剛在之前
Craig 的表達法下面,我們的移動的描述會比較干淨
等於說,因為我們今天等於說,我們的 frame
在前方的時候,我們要描述下一個桿件的原點 或者說下一個 frame
的原點相對這個 frame 的時候 因為我們這個桿件是依照在這個桿件方向上來看
比如說等於說都在 X 軸上面的偏移,所以我們剛剛的這邊的數字 基本上都是只在
X 上面有,不會說在這個表達法下面,它除了長度之外,它因為
要表達這個點在這個坐標下面,它變成說我們 θ1 的角度就會
跑進來,像剛剛是 frame 在,X 在這個上面,所以等於說跟角度無關,我們要
描述 frame 2 的原點,以 frame 1 來看的話,基本上只是
X 方向的平移 只跟長度有關,跟角度無關。
但在現在這個表達法下面,我們就必須 把角度放進來,因為等於說今天譬如說
frame 1 的原點,以 frame 0 來看 的話,它必須要考慮到這個長度之外,還要考慮到
θ1 的夾角 所以才會說在今天我們這個表達法下面 這個三個移動的部分同時都變成是長度跟角度的函數
所以等於說事實上在運算上面,這個方式事實上會比較複雜一點,因為等於說它在所有的移動- 運算上面 它都變成是
θ 的函數了,這是這個的差別 那最後我們來比較一下,好,我們今天如果把它整個乘開來,我們只用說從
Craig 的方式 從 3 到 0,跟用剛剛 standard 的方式 3
到 0 是這樣 那 3 到 0 我們知道說,今天兩個
3 的 frame 基本上是一樣的姿態嘛,因為都是定義在最後
一個桿件上,只是定義在最後一個桿件的前頭或是後頭 所以我們會發現說,這樣子定義之下,左上角
的這個旋轉矩陣當然就理論上會長的一模一樣,對不對?因為它定義的都是 最後的這個桿
3 的姿態相對於地世界坐標下它的姿態是什麼 所以左上角這個會一樣。
那我們會發現說最後這個 第三個 frame 的原點相對世界坐標這個就不一樣了
那這個是可以理解的,因為我們可以知道說,我們今天 frame 3 的原點,在
Craig 下面的 frame 3 的位置 跟用 standard 方法下面 frame
3 的位置,在空間中是不同的位置 所以當換到地坐標來看的時候,當然會處在不同的狀況下面。
那我們也知道說我們今天 從 Craig 3 的表達法,我們必須要經過一個
L3 的平移,才會讓它到達真正的末端點 所以我們如果說真的要比較空間中的同一個點的時候
我們的 Craig 的方式還必須要繼續乘上一個最後的一個轉換,就是我們等於說
因為 Craig 的 3 跟 0,我們只定義到了 Craig 3 坐標 3 的原點,那我們往前平移一個
L3 之後 理論上才會跑到 standard 方式 frame 3 的
原點,所以我們今天如果說後方再多乘一個這個 T,沿著 X3
軸平移一個 L3 之後,我們最後得到的矩陣的確就會跟 standard
的方式一模一樣 那在空間中也的確代表的是同一個點,所以今天用這個方式來間接證明說我們剛剛兩個方-
式的算法 中間的定義不同,可是最後得到的答案會一樣
那這個是合理的,因為等於說今天這個點在空間中是固定的一個點,不管你中間用什麼樣- 的表達法
你今天站在世界坐標看,在空間中的同一個點,理論上就是同一個量值 所以我們等於說只是用兩個不同的定義法去做
當然最後回歸到同一個點的時候,理論上不同的方法都應該殊途同歸,會跑到同一個參數解下面
那這個例子等於說就用來驗證這個點,就是等於說我們今天 Craig 的 3 0 跟
standard 的 3 0 是不一樣 可是我們 Craig 3 0 再經過一個平移,把它平移到跟
standard 3 0 的原點的時候,理論上會是一一樣的答案
那在數字上面,我們也的確看到了一樣的答案,證明說這兩個方法的運算過程中都沒有錯