作者Assassin81 (R00M335)
看板Mechanical
標題Re: [請益] 空間的旋轉矩陣(尤拉轉換)
時間Mon Aug 10 22:22:41 2009
※ 引述《GOGUEST (有點空虛的大貓)》之銘言:
: 謝謝板上各位版大的解惑~~
: 想再請問版上的各位
: 有沒有推薦有關於空間中尤拉角的書籍阿
: 因為我對尤拉角轉換 xyz zyx yzx xzy ...... xyx ......
: 等12種的尤拉轉換方式不太懂它們各自的物理意義@@"
: (只知道xyz是先繞x軸旋轉、再繞y軸最後再繞z軸,其他依此類推,但是xyx的意義呢? )
: 找了很多paper~~
: 大都只是簡單敘述有這12種方法而已
: 圖書館也找不太到類似的書籍(還是我找錯方向= =")
: 也都搜尋不到有關於這方面的知識
: 想請問各位版大能不能指引一些方向
: 讓我去參考一下
: 謝謝^^"
打euler angle的關鍵字在網路上搜尋,就可以搜尋到許多相關的文章和解釋,
wiki:
http://en.wikipedia.org/wiki/Euler_angles
http://chsfpc5.chem.ncsu.edu/~franzen/CH795Z/math/lab_frame/lab_frame.html
http://mathworld.wolfram.com/EulerAngles.html
http://ozviz.wasp.uwa.edu.au/~pbourke/geometry/eulerangle/
參考書的話,Thornton & Marion 的 classical dynamics 和
Goldstein 的 Classical mechanics都有euler angle的解釋。
如果懶的看英文的話,可以參考小弟下面簡易的說明。
參考座標系可以經由繞著不同的座標軸旋轉後,變成新的座標系,每次座標軸旋轉的
角度就是尤拉角。舉例來說,xyx表示依序繞x、y、x軸旋轉,其中兩個x代表的x軸並
不是一樣的,第二個x是經過繞y軸旋轉後的新x軸,第一個則是一開始的x軸,其他以
此類推。
ps.要有圖比較好理解,上面的網站就有相關的示意圖
先把繞著x或y或z軸的旋轉矩陣寫出,再看是繞著哪一個軸轉,乘以相對應的旋轉矩陣
就可以得出經過整個尤拉角轉換後的轉換矩陣:
◎以xyz為例:
設原本的座標為[r],為3x1之矩陣,經尤拉角轉換後的座標為[r'],
尤拉角轉換矩陣為[Te]
[r']=[Te][r]------(1)
繞x、y、z軸旋轉的角度和旋轉矩陣各為α、[Tx],β、[Ty],γ、[Tz],
依照繞的順序,[r']可用下面的式子來表示,
[r']=[Tz][Ty][Tx][r]------(2)
比較(1)(2)式可得
[Te]=[Tz][Ty][Tx]------(3)
[Tz]、[Ty]、[Tx]如下:
z軸:
┌ ┐
│ cosγ sinγ 0 │
[Tz]=│-sinγ cosγ 0 │
│ 0 0 1 │
└ ┘
y軸:
┌ ┐
│ cosβ 0 -sinβ │
[Ty]=│ 0 1 0 │
│ sinβ 0 cosβ │
└ ┘
x軸:
┌ ┐
│ 1 0 0 │
[Tx]=│ 0 cosα sinα│
│ 0 -sinα cosα│
└ ┘
[Tz]、[Ty]、[Tx]代入(3)後可得[Te]如下,
┌ ┐
│ cosγcosβ sinγcosα+cosγsinβsinα sinγsinα-cosγsinβcosα│
[Te]=│-sinγcosβ cosγcosα-sinγsinβsinα cosγsinα+sinγsinβcosα│
│ sinβ cosβsinα cosβcosα │
└ ┘
仿照上面的程序就可以得出其他如xzx,yzx....等尤拉角轉換方式的轉換矩陣
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.142.86
1F:推 GOGUEST:謝謝你的詳細解說^^" 08/10 22:38
2F:→ GOGUEST:你說的這些我在很多文獻上都有看過了~~ 08/10 22:39
3F:→ GOGUEST:我現在比較有疑惑的是這12種尤拉轉換有甚麼相異處? 08/10 22:41
4F:→ GOGUEST:我的意思是我知道尤拉轉換的組成運算原理 08/10 22:42
5F:推 GOGUEST:但是為什麼XYZ和ZYX代公式求解得出的角度會有一些的差距 08/10 22:46
6F:推 GOGUEST:這些差異的因素到底是怎麼發生的? 08/10 22:49
7F:→ Assassin81:差距的意思是指?? 08/10 22:50
8F:→ GOGUEST:因為做專題~~偶然發現這個問題~~結果發現好像沒有人在探討 08/10 22:50
9F:→ GOGUEST:就是利用這12種尤拉轉換導出的角度不會都完全一樣 08/10 22:52
10F:→ GOGUEST:有的甚至差很多~~所以才覺得奇怪 08/10 22:53
11F:→ Assassin81:你的意思是說,對同樣的新舊座標系,尤拉轉換方式不同 08/10 22:57
12F:→ Assassin81:所對應的尤拉角就不同? 08/10 22:58
13F:推 GOGUEST:意思應該差不多~~我們用同樣的DATA~~利用自己寫的Matlab 08/10 23:09
14F:→ GOGUEST:程式去算角度~~每個尤拉角度算出來的都不會相同 08/10 23:10
15F:推 MiyaKami:本來就不會一樣吧?有限大小的角位移不是向量疊加不會相同 08/10 23:21
16F:推 alamabarry:相異處????...不就方法不同而已...怎麼轉怎麼切的定義 08/10 23:22
17F:推 pk007:定義不一樣,角度會一樣才奇怪.驗證最後的4*4矩陣是一樣就好! 08/10 23:44
18F:推 GOGUEST:喔喔~~我是想說有沒有什麼互相規則的@@" 08/11 00:40
19F:→ GOGUEST:因為這樣我要怎麼選擇哪一個轉換才是最符和現實中的角度? 08/11 00:41
20F:→ Assassin81:用最少的旋轉度數或次數達到一樣的位置嗎? 08/11 01:05
21F:推 GOGUEST:應該是說~假設我要算手腕的旋轉範圍~~我分別在手肘和手掌 08/11 01:43
22F:→ GOGUEST:都各定義一個空間座標~~然後用尤拉轉換求角度 08/11 01:44
23F:→ GOGUEST:這樣我怎麼知道哪一個尤拉轉換所求的角度更貼近實際範圍? 08/11 01:45
24F:推 pk007:那一套都可以!那有分貼不貼近實際角度!每套都是對的! 08/11 02:07
25F:→ pk007:也沒有說用那一套可以用最少的旋轉度數或次數達到一樣的位置 08/11 02:09
26F:→ pk007:尤拉角拿來幹麻的? 想清楚用途! 不要太多天馬行空的想法 08/11 02:12
27F:→ pk007:只須搞懂定義跟用途就好! 08/11 02:12
28F:推 zetatmrptt:你如果是要搞定手腕這個case 看看ISB制定的規則 08/11 02:54
29F:推 alamabarry:要知道旋轉怎麼算~~就要有張量的概念 08/11 03:48
30F:→ alamabarry:至於怎麼定義~~簡單說就是排列組合... 08/11 03:49
31F:推 pk007:他定義跟排列組合沒關係. 08/11 11:20
32F:推 miniyogo:不知道我這樣講對不對...可是尤拉角不就是定義三次旋轉能 08/11 11:52
33F:→ miniyogo:達到所需要的座標位置從正向XYZ座標開始,所以不管怎樣變 08/11 11:53
34F:→ miniyogo:換XYZ的排列方法,都是依照最原始的三次旋轉來做運動 08/11 11:53
35F:→ miniyogo:所以得出的最終相對座標會是一樣的,不是這樣嗎?? 08/11 11:54
36F:→ miniyogo:只是他排列方式不同,三次旋轉的順序會不同 08/11 11:55
37F:推 pk007:不是,並不是依最原始的三次旋轉來做運動,有的是,有的不是, 08/11 12:51
38F:→ pk007:就說每套的定義都不同,有的是對旋轉後的座標系再做轉換. 08/11 12:52
39F:推 pk007:有的是一直對原座標系做轉換. 08/11 12:55
40F:→ Assassin81:G大是指因為人的手肘和手掌有先天的轉動角度限制 所以 08/11 18:43
41F:→ Assassin81:想要找個適合的尤拉轉換使得旋轉的角度不會超出限制吧 08/11 18:45
42F:→ Assassin81:機械手的關節不知是否也有這樣的問題 08/11 18:47
43F:推 alamabarry:他定義跟排列組合沒關係?...你真的懂尤拉角嗎 08/11 19:39
44F:推 pk007:肯定沒關係. 08/11 19:42
45F:推 alamabarry:xyz yzx請問這是排列組合嗎? 08/11 19:44
46F:推 pk007:把排列組合用在這說明尤拉角! 重點是在這嗎? 08/11 19:55
47F:→ pk007:那只是最後下的一個結論.挖!原來有這摸多種組合喔! 08/11 19:56
48F:推 alamabarry:原來重點不在這就可以解釋為跟排列組合無關 厲害 08/12 05:43
49F:推 alamabarry:還可以說成肯定沒關係...12種又是怎麼來的 08/12 05:47
50F:推 alamabarry:還有我不知道你是幾維度的空間4*4矩陣請問是哪一個 08/12 05:57
51F:→ alamabarry:另外就你說得轉原座標或是變動座標..依你的'定義' 08/12 05:58
52F:→ alamabarry:是不都是12種..這我就不要求你不要用排列組合算了 08/12 05:59
53F:→ alamabarry:即使你都說跟排列組合肯定沒關係了 08/12 06:00
54F:推 alamabarry:還有別亂扣帽子 尤拉角不是什麼難的東西 08/12 06:06
55F:→ alamabarry:我要說明的是為何有12種定義..你會有這種質疑 08/12 06:06
56F:推 alamabarry:跟誤解 我還挺意外的 08/12 06:11
57F:推 pk007:^^! 08/12 10:22
58F:推 knon060718: 這篇寫錯啦啦啦啦啦 04/09 16:54
59F:→ knon060718: x-y-z尤拉角的轉換矩陣是[Tx][Ty][Tz]才對 04/09 16:56
60F:→ knon060718: [Tz][Ty][Tx]變成是對固定座標系旋轉了 04/09 16:57