欧拉角速度与角速度的关系推导——欧拉运动方程
歐拉角速度與角速度的關(guān)系推導(dǎo)——歐拉運動方程
最近研究歐拉角速度與角速度之間的關(guān)系,特別折磨,網(wǎng)上的資料要不就是地理學(xué)的進動——章動——自轉(zhuǎn)那一套歐拉角與角速度的關(guān)系,要不就是陀螺儀那一套歐拉角與角速度的關(guān)系,不具有普遍性,因此在大干三天后,將自己的心得寫上來供大家參考。
歐拉角
歐拉角的定義不再贅述,簡單來說它是確定定點轉(zhuǎn)動剛體位置的3個一組獨立角參量。這個東西壞就壞在它有太多種了。繞軸轉(zhuǎn)動的順序不同(如x-y-z和x-z-y),繞軸轉(zhuǎn)動的類型不同(指繞慣性坐標(biāo)系x-y-z或剛體固連坐標(biāo)系x-y’-z’‘),兩次轉(zhuǎn)動繞同一軸如(z-x’-z’‘)等等,都會產(chǎn)生不同的歐拉角。而且不同學(xué)科不同場合使用的歐拉角不同,甚至同一歐拉角的俗稱也不同,帶來了非常大的不便。在機器人學(xué)中,常用的是以下兩種歐拉角:
RPY角 :指繞慣性坐標(biāo)系旋轉(zhuǎn)(即繞的軸在整個旋轉(zhuǎn)中是固定不變的),依次繞X軸(roll角),Y軸(pitch角),Z軸(yaw角)進行旋轉(zhuǎn)。
ZYX角:指繞剛體固連坐標(biāo)系旋轉(zhuǎn)(即繞的軸會隨著旋轉(zhuǎn)變化而變化),依次繞z軸(yaw角),旋轉(zhuǎn)后的y’軸(pitch角),兩次旋轉(zhuǎn)后的x’‘軸(roll)角進行旋轉(zhuǎn)。
注意,這兩種旋轉(zhuǎn)是完全等價的,即若roll,pitch,yaw取相同的值,按這兩種過程進行旋轉(zhuǎn),得到的結(jié)果相同。
在一些設(shè)計仿真軟件(如adams)中,它們的Eular Angel指的是ZYZ角,即繞剛體固連系的z軸,y’軸,z’'軸進行旋轉(zhuǎn)。
角速度
角速度很簡單,初中生都知道。但是具體使用起來卻容易出錯。因為角速度有兩種表示方式,一種表示在慣性坐標(biāo)系,為全局角速度。常用在機器人運動學(xué)求解等領(lǐng)域。另一種表示在剛體固連坐標(biāo)系,為隨體角速度。常用在陀螺儀、慣導(dǎo)等領(lǐng)域。這兩種角速度在于歐拉角之間進行轉(zhuǎn)換時,思路是不同的。
全局角速度與ZYX歐拉角速率之間的轉(zhuǎn)換
角速度w是表示在慣性坐標(biāo)系的,可分解為
w=wxi+wyj+wzkw=w_{x}i+w_{y}j+w_{z}kw=wx?i+wy?j+wz?k
同時,有可以將它分解到剛體固連坐標(biāo)系三次旋轉(zhuǎn)的轉(zhuǎn)軸上:
w=dr?e1+dp?e2+dy?e3w=dr·e_{1}+dp·e_{2}+dy·e_{3}w=dr?e1?+dp?e2?+dy?e3?
dr、dp、dy即為roll、pitch、yaw角速度的值.
(1)首先,繞著固連系z軸(也是慣性系z軸)旋轉(zhuǎn)dy完成了第一次旋轉(zhuǎn),其值為
dy?e3=[100010001]?[dr00]dy·e_{3}=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{array}\right] \cdot\left[\begin{array}{c} dr \\ 0 \\ 0 \end{array}\right] dy?e3?=???100?010?001????????dr00????
(2)其次,繞著固連系(這里的固連系并非狹義上的固連系,而是值進行過一次roll旋轉(zhuǎn)的坐標(biāo)系,注意是roll旋轉(zhuǎn)而不是上文提到的dr旋轉(zhuǎn))的y’軸進行第二次旋轉(zhuǎn),旋轉(zhuǎn)量為dp,固連系的y’軸與慣性系的y軸之間存在RyawR_{yaw}Ryaw?的變換,即
dp?e2=[cos(yaw)?sin(yaw)0sin(yaw)cos(yaw)0001]?[0dp0]dp·e_{2}=\left[\begin{array}{ccc} cos(yaw) & -sin(yaw) & 0 \\ sin(yaw) & cos(yaw) & 0 \\ 0 & 0 & 1 \\ \end{array}\right] \cdot\left[\begin{array}{c} 0 \\ dp \\ 0 \end{array}\right] dp?e2?=???cos(yaw)sin(yaw)0??sin(yaw)cos(yaw)0?001????????0dp0????
(3) 最后,繞著固連系的x’‘軸軸旋轉(zhuǎn)dr。此時的x’'軸和慣性系的x軸之間存在RyawRpitchR_{yaw}R_{pitch}Ryaw?Rpitch?的變換,即
dp?e2=[cos(yaw)?sin(yaw)0sin(yaw)cos(yaw)0001][cos(pitch)0sin(pitch)10?sin(pitch)0cos(pitch)]?[00dy]dp·e_{2}=\left[\begin{array}{ccc} cos(yaw) & -sin(yaw) & 0 \\ sin(yaw) & cos(yaw) & 0 \\ 0 & 0 & 1 \\ \end{array}\right] \left[\begin{array}{ccc} cos(pitch) & 0 & sin(pitch) \\ & 1 & 0 \\ -sin(pitch) & 0 & cos(pitch) \\ \end{array}\right] \cdot\left[\begin{array}{c} 0 \\ 0 \\ dy \end{array}\right] dp?e2?=???cos(yaw)sin(yaw)0??sin(yaw)cos(yaw)0?001???????cos(pitch)?sin(pitch)?010?sin(pitch)0cos(pitch)????????00dy????
將三者相加,就可得到角速度與歐拉角速度率的關(guān)系:
換,即
[wxwywz]=[cos(pitch)?cos(yaw)?sin(yaw)0cos(pitch)?sin(yaw)cos(yaw)0?sin(pitch)01]?[drdpdy]\left[\begin{array}{c} wx \\ wy \\ wz \end{array}\right]=\left[\begin{array}{ccc} cos(pitch)*cos(yaw) & -sin(yaw) & 0 \\ cos(pitch)*sin(yaw) & cos(yaw) & 0 \\ -sin(pitch) & 0 & 1 \\ \end{array}\right] \cdot\left[\begin{array}{c} dr \\ dp \\ dy \end{array}\right] ???wxwywz????=???cos(pitch)?cos(yaw)cos(pitch)?sin(yaw)?sin(pitch)??sin(yaw)cos(yaw)0?001????????drdpdy????
若要求得隨體角速度和ZYX角速度的關(guān)系,方法與上面類似,但要注意順序是反過來的,即dr是繞隨體坐標(biāo)系中的x軸,無需進行變換,dp需要進行RyawR_{yaw}Ryaw?的逆變換等等。結(jié)果如下:
w=dr+Rroll′?dp+Rroll′Rpitch′?dyw=dr+ R_{roll}'·dp+R_{roll}'R_{pitch}'·dyw=dr+Rroll′??dp+Rroll′?Rpitch′??dy
即:
[wxwywz]=[10?sin(pitch)0cos(roll)cos(pitch)?sin(roll)0?sin(roll)cos(pitch)?cos(roll)]?[drdpdy]\left[\begin{array}{c} wx \\ wy \\ wz \end{array}\right]=\left[\begin{array}{ccc} 1 & 0 & -sin(pitch) \\ 0 & cos(roll) & cos(pitch)*sin(roll) \\ 0 & -sin(roll) & cos(pitch)*cos(roll) \\ \end{array}\right] \cdot\left[\begin{array}{c} dr \\ dp \\ dy \end{array}\right] ???wxwywz????=???100?0cos(roll)?sin(roll)??sin(pitch)cos(pitch)?sin(roll)cos(pitch)?cos(roll)????????drdpdy????
對于全局RPY角,由于其與ZYX角等效,結(jié)果完全相同,推導(dǎo)方法也類似。至于其他的歐拉角種類,推導(dǎo)方法也是相似的,朋友們可以自己嘗試一下。
總結(jié)
以上是生活随笔為你收集整理的欧拉角速度与角速度的关系推导——欧拉运动方程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何批量重命名图片,文档,文件夹名字
- 下一篇: [算法设计题] 双栈结构