欧拉角与旋转矩阵的转换

网上关于欧拉角与旋转矩阵的转换关系的帖子可以说是铺天盖地,但大部分感觉说的都没让我很明白,这里记录一下我的理解。

首先,需要明确的是旋转矩阵有两个作用,一个是向量的旋转,另一个是坐标的转换,这件事非常重要。另外,是欧拉角与旋转矩阵的关系,欧拉角只是一种姿态描述方式,我的理解就是他给出了一种利用\alpha ,\beta ,\gamma三个参数(以及规定的转序)来表示从一个姿态到另一个姿态的关系(在气浮台控制领域往往是地理坐标系,本体坐标系等等坐标系间的关系)的方法。但欧拉角不具备运算能力,也就是说,他只给出了姿态的描述,但是他不能直接进行向量的旋转以及坐标的转换。于是,旋转矩阵的作用就是充当了从欧拉角到向量旋转以及坐标转换的桥梁。

所以,接下来的重点就是欧拉角是怎么转换成旋转矩阵的。

我们知道,欧拉角代表三次旋转,我们这里先搞清一次旋转与旋转矩阵的关系,先以绕Z轴旋转\gamma为例。

对于向量旋转,是在一个固定坐标系(气浮台控制领域通常是地理坐标系)下描述的,设旋转前为向量\vec{A},旋转后为向量\vec{B},则对应旋转矩阵R(Z,\gamma ).(注意!我这里旋转矩阵的形式,如果写成其转置的形式,那顺序就反过来了,所以,下面的旋转矩阵都是按以下形式规定的)

R(Z,\gamma )= \begin{bmatrix} \cos \gamma & -\sin \gamma &0 \\ \sin \gamma &\cos \gamma & 0\\ 0&0 &1 \end{bmatrix} , \vec{B} = R(Z,\gamma )\vec{A}

对于坐标变换,假设坐标系B由坐标系A旋转得到,旋转矩阵R(Z,\gamma )与上式相同,坐标变换的关系为

\begin{bmatrix} X_{A}\\ Y_{A} \\ Z_{A} \end{bmatrix} =R(Z,\gamma ) \begin{bmatrix} X_{B}\\ Y_{B} \\ Z_{B} \end{bmatrix}

注意!上面两个式子虽然看着很像,而且旋转矩阵是一样的,但是我们可以发现,向量旋转与坐标转换像是倒过来的关系。这点很重要,这点决定了后续的旋转矩阵左乘与右乘的区别。

以上是一次旋转,而欧拉角是三次旋转的合成,所以接下来将是本文的重点,旋转矩阵的复合方式。

我们这里规定欧拉角转序为ZYX,对应转角为\gamma, \beta, \alpha

这里先直接给出分别绕ZYX轴单次旋转的旋转矩阵:

R(Z,\gamma )= \begin{bmatrix} \cos \gamma & -\sin \gamma &0 \\ \sin \gamma &\cos \gamma & 0\\ 0&0 &1 \end{bmatrix}

R(Y,\beta )= \begin{bmatrix} \cos \beta & 0 &\sin \beta \\ 0&1 & 0\\ -\sin \beta &0 &\cos \beta \end{bmatrix}

R(X,\alpha )= \begin{bmatrix}1 &0 &0 \\ 0&\cos \alpha & -\sin \alpha \\ 0&\sin \alpha&\cos \alpha \end{bmatrix}

接下来就是旋转的复合,网上的说法是向量旋转和坐标转换分别对应左乘和右乘,但我认为没必要刻意去记是左乘还是右乘,按照下面方法分析就行。

对于向量旋转:设初始向量为\vec{A},经ZYX三次旋转分别得到\vec{B}\vec{C}\vec{D},由上面绕Z轴的一次旋转可知,旋转矩阵R(Z,\gamma )乘以向量\vec{A}得到旋转后的向量\vec{B},故有:

\vec{B} = R(Z,\gamma )\vec{A}

\vec{C} = R(Y,\beta )\vec{B}

\vec{D} = R(X,\alpha )\vec{C}

\Rightarrow \vec{D} = R(X,\alpha ) R(Y,\beta ) R(Z,\gamma )\vec{A}

对于坐标转换,设初始坐标为\begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix},经ZYX三次旋转,中间坐标以及最终坐标为\begin{bmatrix} X_{1}\\ Y_{1} \\ Z_{1} \end{bmatrix}\begin{bmatrix} X_{2}\\ Y_{2} \\ Z_{2} \end{bmatrix}\begin{bmatrix} X_{end}\\ Y_{end} \\ Z_{end} \end{bmatrix},由上面绕Z轴的一次旋转可知,旋转矩阵R(Z,\gamma )乘以\begin{bmatrix} X_{1}\\ Y_{1} \\ Z_{1} \end{bmatrix}得到旋转前的坐标\begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix},故有:

\begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix} =R(Z,\gamma ) \begin{bmatrix} X_{1}\\ Y_{1} \\ Z_{1} \end{bmatrix}

\begin{bmatrix} X_{1}\\ Y_{1} \\ Z_{1} \end{bmatrix} =R(Y,\beta ) \begin{bmatrix} X_{2}\\ Y_{2} \\ Z_{2} \end{bmatrix}

\begin{bmatrix} X_{2}\\ Y_{2} \\ Z_{2} \end{bmatrix} =R(X,\alpha ) \begin{bmatrix} X_{end}\\ Y_{end} \\ Z_{end} \end{bmatrix}

\Rightarrow \begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix} =R(Z,\gamma ) R(Y,\beta ) R(X,\alpha ) \begin{bmatrix} X_{end}\\ Y_{end} \\ Z_{end} \end{bmatrix}

将R代入具体的旋转矩阵可以得到:(注意,这里给出的是ZYX转序的欧拉角到旋转矩阵的关系)

向量旋转:

\vec{D} = \begin{bmatrix}1 &0 &0 \\ 0&\cos \alpha & -\sin \alpha \\ 0&\sin \alpha&\cos \alpha \end{bmatrix}\begin{bmatrix} \cos \beta & 0 &\sin \beta \\ 0&1 & 0\\ -\sin \beta &0 &\cos \beta \end{bmatrix}\begin{bmatrix} \cos \gamma & -\sin \gamma &0 \\ \sin \gamma &\cos \gamma & 0\\ 0&0 &1 \end{bmatrix}\vec{A}

\vec{D} = \begin{bmatrix} \cos \beta \cos \gamma & -\cos \beta \sin \gamma & \sin \beta \\ \cos \alpha \sin \gamma +\sin \alpha \sin \beta \cos \gamma & \cos \alpha \cos \gamma -\sin \alpha \sin \beta \sin \gamma &-\sin \alpha \cos \beta \\ \sin \alpha \sin \gamma -\cos \alpha \cos \gamma \sin \beta & \cos \gamma \sin \alpha +\cos \alpha \sin \beta \sin \gamma & \cos \alpha \cos \beta \end{bmatrix}\vec{A}

坐标转换:

\begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix} = \begin{bmatrix} \cos \gamma & -\sin \gamma &0 \\ \sin \gamma &\cos \gamma & 0\\ 0&0 &1 \end{bmatrix}\begin{bmatrix} \cos \beta & 0 &\sin \beta \\ 0&1 & 0\\ -\sin \beta &0 &\cos \beta \end{bmatrix}\begin{bmatrix}1 &0 &0 \\ 0&\cos \alpha & -\sin \alpha \\ 0&\sin \alpha&\cos \alpha \end{bmatrix} \begin{bmatrix} X_{end}\\ Y_{end} \\ Z_{end} \end{bmatrix}

\begin{bmatrix} X_{begin}\\ Y_{begin} \\ Z_{begin} \end{bmatrix} = \begin{bmatrix} \cos \beta \cos \gamma & \sin \alpha \sin \beta \cos \gamma -\cos \alpha \sin \gamma & \cos \sin \beta \cos \gamma +\sin \alpha \sin \gamma \\ \cos \beta \sin \gamma & \sin \alpha \sin \beta \sin \gamma +\cos \alpha \cos \gamma &\cos \alpha \sin \beta \sin\gamma -\sin \alpha \cos \gamma \\ -\sin \beta & \sin \alpha \cos \beta & \cos \alpha \cos \beta \end{bmatrix}\begin{bmatrix} X_{end}\\ Y_{end} \\ Z_{end} \end{bmatrix}

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值