欧拉角速度与角速度的关系推导——欧拉运动方程

欧拉角速度与角速度的关系推导——欧拉运动方程

最近研究欧拉角速度与角速度之间的关系,特别折磨,网上的资料要不就是地理学的进动——章动——自转那一套欧拉角与角速度的关系,要不就是陀螺仪那一套欧拉角与角速度的关系,不具有普遍性,因此在大干三天后,将自己的心得写上来供大家参考。

欧拉角

欧拉角的定义不再赘述,简单来说它是确定定点转动刚体位置的3个一组独立角参量。这个东西坏就坏在它有太多种了。绕轴转动的顺序不同(如x-y-z和x-z-y),绕轴转动的类型不同(指绕惯性坐标系x-y-z或刚体固连坐标系x-y’-z’’),两次转动绕同一轴如(z-x’-z’’)等等,都会产生不同的欧拉角。而且不同学科不同场合使用的欧拉角不同,甚至同一欧拉角的俗称也不同,带来了非常大的不便。在机器人学中,常用的是以下两种欧拉角:
RPY角 :指绕惯性坐标系旋转(即绕的轴在整个旋转中是固定不变的),依次绕X轴(roll角),Y轴(pitch角),Z轴(yaw角)进行旋转。
ZYX角:指绕刚体固连坐标系旋转(即绕的轴会随着旋转变化而变化),依次绕z轴(yaw角),旋转后的y’轴(pitch角),两次旋转后的x’‘轴(roll)角进行旋转。
注意,这两种旋转是完全等价的,即若roll,pitch,yaw取相同的值,按这两种过程进行旋转,得到的结果相同。
在一些设计仿真软件(如adams)中,它们的Eular Angel指的是ZYZ角,即绕刚体固连系的z轴,y’轴,z’'轴进行旋转。

角速度

角速度很简单,初中生都知道。但是具体使用起来却容易出错。因为角速度有两种表示方式,一种表示在惯性坐标系,为全局角速度。常用在机器人运动学求解等领域。另一种表示在刚体固连坐标系,为随体角速度。常用在陀螺仪、惯导等领域。这两种角速度在于欧拉角之间进行转换时,思路是不同的。

全局角速度与ZYX欧拉角速率之间的转换

角速度w是表示在惯性坐标系的,可分解为
w = w x i + w y j + w z k w=w_{x}i+w_{y}j+w_{z}k w=wxi+wyj+wzk
同时,有可以将它分解到刚体固连坐标系三次旋转的转轴上:
w = d r ⋅ e 1 + d p ⋅ e 2 + d y ⋅ e 3 w=dr·e_{1}+dp·e_{2}+dy·e_{3} w=dre1+dpe2+dye3
dr、dp、dy即为roll、pitch、yaw角速度的值.
(1)首先,绕着固连系z轴(也是惯性系z轴)旋转dy完成了第一次旋转,其值为
d y ⋅ e 3 = [ 1 0 0 0 1 0 0 0 1 ] ⋅ [ 0 0 d y ] dy·e_{3}=\left[\begin{array}{ccc} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{array}\right] \cdot\left[\begin{array}{c} 0 \\ 0 \\ dy \end{array}\right] dye3=10001000100dy
(2)其次,绕着固连系(这里的固连系并非狭义上的固连系,而是值进行过一次roll旋转的坐标系,注意是roll旋转而不是上文提到的dr旋转)的y’轴进行第二次旋转,旋转量为dp,固连系的y’轴与惯性系的y轴之间存在 R y a w R_{yaw} Ryaw的变换,即
d p ⋅ e 2 = [ c o s ( y a w ) − s i n ( y a w ) 0 s i n ( y a w ) c o s ( y a w ) 0 0 0 1 ] ⋅ [ 0 d p 0 ] 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] dpe2=cos(yaw)sin(yaw)0sin(yaw)cos(yaw)00010dp0
(3) 最后,绕着固连系的x’‘轴轴旋转dr。此时的x’'轴和惯性系的x轴之间存在 R y a w R p i t c h R_{yaw}R_{pitch} RyawRpitch的变换,即
d p ⋅ e 2 = [ c o s ( y a w ) − s i n ( y a w ) 0 s i n ( y a w ) c o s ( y a w ) 0 0 0 1 ] [ c o s ( p i t c h ) 0 s i n ( p i t c h ) 1 0 − s i n ( p i t c h ) 0 c o s ( p i t c h ) ] ⋅ [ 0 0 d y ] 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] dpe2=cos(yaw)sin(yaw)0sin(yaw)cos(yaw)0001cos(pitch)sin(pitch)010sin(pitch)0cos(pitch)00dy
将三者相加,就可得到角速度与欧拉角速度率的关系:
换,即
[ w x w y w z ] = [ c o s ( p i t c h ) ∗ c o s ( y a w ) − s i n ( y a w ) 0 c o s ( p i t c h ) ∗ s i n ( y a w ) c o s ( y a w ) 0 − s i n ( p i t c h ) 0 1 ] ⋅ [ d r d p d y ] \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)0001drdpdy
若要求得随体角速度和ZYX角速度的关系,方法与上面类似,但要注意顺序是反过来的,即dr是绕随体坐标系中的x轴,无需进行变换,dp需要进行 R y a w R_{yaw} Ryaw的逆变换等等。结果如下:
w = d r + R r o l l ′ ⋅ d p + R r o l l ′ R p i t c h ′ ⋅ d y w=dr+ R_{roll}'·dp+R_{roll}'R_{pitch}'·dy w=dr+Rrolldp+RrollRpitchdy
即:
[ w x w y w z ] = [ 1 0 − s i n ( p i t c h ) 0 c o s ( r o l l ) − c o s ( p i t c h ) ∗ s i n ( r o l l ) 0 s i n ( r o l l ) c o s ( p i t c h ) ∗ c o s ( r o l l ) ] ⋅ [ d r d p d y ] \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=1000cos(roll)sin(roll)sin(pitch)cos(pitch)sin(roll)cos(pitch)cos(roll)drdpdy
对于全局RPY角,由于其与ZYX角等效,结果完全相同,推导方法也类似。至于其他的欧拉角种类,推导方法也是相似的,朋友们可以自己尝试一下。

猜你喜欢

转载自blog.csdn.net/a735148617/article/details/116740453
今日推荐