欧拉角的概念,目的和推导过程

欧拉角的概念,定义网上有很多,大家去搜一下就知道了,但这些概念,定义看起来都懂,但对于有些初学者来说,可能有些地方难以理解,本文抛砖引玉,尝试描述一下这个问题,如有错误,欢迎指正.
本文重点描述概念,不涉及具体计算。

先看一个问题,空间中一个点p绕一个轴旋转ω角度到p'点,求p'的坐标和旋转矩阵.这就是欧拉角要解决的问题.
只不过,欧拉角法将“绕1个轴旋转1个角度”分解成“连续绕3个轴旋转3个角度”.(即轴角和欧拉角的转换问题,有兴趣的同学可以自行研究).
分解之后,出现3个旋转轴,而且随着旋转3个旋转轴的方向不断变化,这个旋转轴的方向(右手法则)就代表刚体的"方向","定向",或"取向","朝向".这就是这些名词在一些欧拉角概念中的意思.
下面详细解释一下.然后再推导一下欧拉角该怎样计算.

刚体上一点p在固定坐标系xyz中的向量为v.刚体上的活动坐标系X0Y0Z0与xyz重合,且X0Y0Z0随刚体同步运动.

内旋/动态欧拉角

内旋/动态欧拉角,轴序:Z0-X1-Y2;角序:(γ,α,β).
3次逆时针旋转,活动坐标系分别为oX0Y0Z0->oX1Y1Z1->oX2Y2Z2->oX3Y3Z3.
完成3次旋转后,设点p在oX3Y3Z3中的向量为V3.因为是同步旋转,所以V3 =v.
需要注意,内旋的旋转轴是"活动坐标系的轴".或者说,"活动坐标系绕着自己的轴旋转"

现在,要计算的是"oX3Y3Z3中向量V3在oX0Y0Z0中的向量V30".相当于计算:
"完3次旋转后的p点"在"oX0Y0Z0中的向量V30".因为oX0Y0Z0与oxyz重合,所以也就是计算"完3次旋转后的p点"在oxyz中的向量V30.

V3是oX3Y3Z3中的向量,其在oX0Y0Z0中的向量是V30,根据V3V30,这明显是一个坐标变换,也就是将oX3Y3Z3中的向量V3变换成oX0Y0Z0中的向量V30.
设变换矩阵为R,则有: V30 = R * V3
只要求出变换矩阵R,即可求得V30.

当然,直接求R非常麻烦,所以需要通过间接的办法来求得R,主要分3步进行计算.
1.先求V3在oX2Y2Z2中的向量V32,即将oX3Y3Z3中的向量V3变换到oX2Y2Z2中的V32.相当于坐标系oX3Y3Z3绕旋转轴oY3顺时针旋转β到oX2Y2Z2位置(或者逆时针旋转-β到oX2Y2Z2位置).设变换矩阵为R32,有: V32 = R(Y3,-β) * V3

2.再求V32在oX1Y1Z1中的向量V31,即将oX2Y2Z2中的向量V32变换到oX1Y1Z1中.相当于坐标系oX3Y3Z3从oX2Y2Z2位置绕旋转轴oX2顺时针旋转α到oX1Y1Z1位置(或者逆时针旋转-α到oX1Y1Z1位置).设变换矩阵为R31,有: V31 = R(X2,-α) * V32

3.再求V31在oX0Y0Z中的向量V30,即将oX1Y1Z1中的向量V31变换到oX0Y0Z0中.相当于坐标系oX3Y3Z3从oX1Y1Z1位置绕旋转轴oZ1顺时针旋转γ到oX0Y0Z位置(或者逆时针旋转-γ到oX0Y0Z0位置).
.设变换矩阵为R(Z1,-γ),有: V30 = R(Z1,-γ) * V31

4.最终求得: V30 = R(Z1,-γ) * V31 = R(Z1,-γ) * R(X2,-α) * V32 = R(Z1,-γ) * R(X2,-α) * R(Y3,-β) * V3.

5.设复合变换矩阵R(γ,α,β):V30 = R(γ,α,β) * V3 = R(γ,α,β) * v.
R(γ,α,β) = R(Z1,-γ) * R(X2,-α) * R(Y3,-β)

扫描二维码关注公众号,回复: 12103982 查看本文章

最终结果为:
欧拉角的概念,目的和推导过程
最终求得的结果跟万维百科请添加链接描述中的结果一样(底部的列表最后一个Z1X2Y3=...注意,这Z1X2Y3表示矩阵相乘的顺序.这个结果其实是静态欧拉角复合旋转矩阵,其角序(γ,α,β),轴序为y-x-z;不过静/动态欧拉角等效,因此就相当于动态欧拉角(γ,α,β),轴序Z0-X1-Y2).

关于复合旋转矩阵和复合变换矩阵
上述的复合变换矩阵是针对活动坐标系来说的,它涉及活动坐标系中坐标的变换.
上述旋转过程,也可以认为刚体上一点从固定坐标系oxyz中的p坐标连续绕3个不同的轴(oxyz中的3条直线)旋转到p'坐标,设复合旋转矩阵为R,那么有:
p' = R * p.
这里的复合旋转矩阵R其实就是有复合变换矩阵R(γ,α,β): R = R(γ,α,β)
注意:p,p'都表示固定坐标系oxyz中的坐标,跟活动坐标系没关系.

虽然计算过程使用了"变换矩阵",但其实最终目的其实是为了求"复合旋转矩阵",以便求出p'的坐标.

外旋/静止态欧拉角

外旋/静态欧拉角,轴序:y-x-z; 角序: (γ,α,β).
3次逆时针旋转,活动坐标系分别为oX0Y0Z0->oX1Y1Z1->oX2Y2Z2->oX3Y3Z3.
需要注意,外旋的旋转轴是"固定坐标系的轴".或者说,活动坐标系绕着"固定坐标系的坐标轴"旋转,而不是绕着自己的坐标轴旋转.

这种欧拉角比较容易理解,就得点在3D坐标系oxyz中连续z-x-y坐标轴连续旋转(β,α,γ),没什么好解释。
因为刚体上的点p始终绕固定坐标系oxyz的坐标轴旋转,所以跟活动坐标系没关系,计算过程也不涉及活动坐标系.

设p点在固定坐标系oxyz中的向量v.
计算过程:
1.第1次旋转,p点绕y轴逆时针旋转γ,设基础旋转矩阵r(y,γ),旋转后的向量v1: v1 = r(y,γ) v.
2.第2次旋转,p点继续绕x轴逆时针旋转α,设基础旋转矩阵r(x,α),旋转后的向量v2: v2 = r(x,α)
v1.
3.第3次旋转,p点继续绕z轴逆时针旋转β,设基础旋转矩阵r(z,β),旋转后的向量v3: v3 = r(z,β) v2
4.v3 = r(z,β)
v2 = r(z,α) r(x,α) v1 = r(z,β) r(x,α) r(y,γ) v.
5.设复合旋转矩阵r(γ,α,β): v3 = r(γ,α,β)
v
r(γ,α,β) = r(z,β) r(x,α) r(y,γ)
最终结果:
欧拉角的概念,目的和推导过程
这个结果跟万维百科结果请添加链接描述一致(最后一个Z1X2Y3=...Z1X2Y3是基础旋转矩阵相乘的顺序,轴序其实是y-x-z).

内旋和外旋等效

内旋欧拉角和外旋欧拉角等效,意思是最终的"复合旋转矩阵相同",如上述计算的结果:
r(γ,α,β) = r(z,β) r(x,α) r(y,γ) = R(γ,α,β) = R(Z1,-γ) R(X2,-α) R(Y3,-β)
当然,这两种欧拉角的"角序相同","轴序相反".

猜你喜欢

转载自blog.51cto.com/jetyi/2551233