旋转矩阵及左右乘的意义,看这一篇就够了

旋转矩阵及左右乘的意义,别浪费时间了,看这一篇就够了

前言

这些天研究旋转矩阵,被教科书和视频课绕迷糊了,可悲的是 ,如此简单的概念竟然没有一篇文章 (至少我没搜到)能够直观解释清楚,一气之下,我决定自己研究,经过不懈努力,终于解决了这一可爱又可恨的概念,也希望看到这篇文章的人能够静下心来好好阅读,对你肯定有帮助。

一、什么是旋转矩阵?

首先,我需要花一点时间来谈谈旋转矩阵的含义。你必须知道旋转矩阵有两层含义:坐标变换旋转向量。为了让大家明白,我将举一个最简单的例子。

[En]

First of all, I need to take a moment to talk about the meaning of the rotation matrix. You must know that the rotation matrix has two meanings: * coordinate transformation * and * rotation vector . In order for you to understand, I will give the simplest example.*

1.坐标变换

如图所示,对于p点(或者叫向量),可以分别在不同坐标系下表示,红色坐标系绕黑色坐标系旋转了α角度:

旋转矩阵及左右乘的意义,看这一篇就够了

其坐标变换关系如下:

旋转矩阵及左右乘的意义,看这一篇就够了

变换关系是由几何关系派生出来的,不管细节如何,我们来看看上面的公式以矩阵形式是什么样子:

[En]

The transformation relation is derived from the geometric relation, regardless of the details, let’s see what the above formula looks like in matrix form:

旋转矩阵及左右乘的意义,看这一篇就够了

中间的2×2矩阵即为我们所说的旋转矩阵,这里 特别要注意,这个矩阵的意义是将p点在 旋转后的坐标系(红色)中的坐标,转换为 旋转前的坐标系(黑色)中的坐标。

是什么原因?从代数的角度来看,这是最容易理解的。请不要费心一步一步地跟着我:

[En]

What causes it? It’s easiest to understand from an algebraic point of view. Please don’t bother to follow me step by step:

旋转矩阵的列向量:

旋转矩阵及左右乘的意义,看这一篇就够了

可以看到,按照几何关系书写的旋转矩阵的列矢量恰好是旋转坐标系(红色)在旋转前的坐标系(黑色)中的坐标轴的坐标,或者方向余弦。

[En]

It can be seen that the column vector of the rotation matrix written according to the geometric relationship happens to be the coordinate of the coordinate axis of the rotating coordinate system (red) in the coordinate system (black) before rotation, or the direction cosine.

也就是说,我想写出坐标系B相对于坐标系A的旋转矩阵,只需要将坐标系B相对于坐标系A的方向余弦写成矩阵的形式即可,如下图所示:

旋转矩阵及左右乘的意义,看这一篇就够了
看到这个矩阵不要蒙,单独看其中一列,就是 B坐标系的某一轴A坐标系的X轴、Y轴和Z轴的投影,也就是我们所说的方向余弦,这里不做过多解释。

接着,我们把这个一般形式的全貌写出来:

旋转矩阵及左右乘的意义,看这一篇就够了
取第一行,其实际运算的时候是这样:

旋转矩阵及左右乘的意义,看这一篇就够了

看最左侧,为p点(向量)在A坐标系下的x方向坐标,以此类推,旋转矩阵将p点在B坐标系下的坐标,转换为在A坐标系下的坐标。

; 2.向量旋转

除了坐标变换的功能外,旋转矩阵的另一个功能是可以旋转向量,这一点我们仍然可以从代数的角度来考虑。

[En]

In addition to the function of coordinate transformation, another function of the rotation matrix is that it can rotate the vector, which we can still consider from an algebraic point of view.

向量p经过旋转矩阵变换后变为p’,如图所示:

旋转矩阵及左右乘的意义,看这一篇就够了

可以看出,原本的向量p经过与旋转矩阵相乘,变换到了新的p’位置,并且二者夹角为α。我可以很明确告诉你,这步操作的旋转矩阵同上一述坐标变换的旋转矩阵一样:

旋转矩阵及左右乘的意义,看这一篇就够了
到这您可能会问了,同一旋转矩阵为何有两种功能呢?

好,看代数,上述操作可以写如下形式:

旋转矩阵及左右乘的意义,看这一篇就够了
再看第一行:
旋转矩阵及左右乘的意义,看这一篇就够了

发现没有, 蓝框里表示坐标系B中的一个向量只不过该向量的坐标与坐标系A中的向量坐标相同。也就是说,旋转矩阵先将坐标系旋转,再在旋转后的坐标系上取与原坐标系坐标相同的向量,然后再将其投影到原坐标系,得到旋转后向量的坐标。

我想了很多话来描述这个操作,后来发现画的还是比较直观的,请继续往下看:

[En]

I thought a lot of words to describe this operation, and later found that the drawing is still intuitive, please read on:

画坐标系A和B,将坐标系B绕A旋转α角度:

旋转矩阵及左右乘的意义,看这一篇就够了
再在图中加一个点p,并标出坐标:
旋转矩阵及左右乘的意义,看这一篇就够了
在坐标系B中取与坐标系A相同的坐标,画点,记为p’,注意是相同的坐标

旋转矩阵及左右乘的意义,看这一篇就够了
得到p’点在A坐标系上的坐标:
旋转矩阵及左右乘的意义,看这一篇就够了
拿掉B坐标系,发现向量p发生了旋转,坐标系B仅起到中介作用,可以理解为向量p绕坐标系A转动了一定的角度:

旋转矩阵及左右乘的意义,看这一篇就够了
到目前为止,我想你已经理解了旋转矩阵的两个功能,一个是坐标变换,一个是向量旋转,同样的旋转矩阵,同样的公式,这取决于你如何解释它,这一点很重要,我们必须弄清楚。
[En]

So far, I think you have understood the two functions of the rotation matrix, one is coordinate transformation, the other is vector rotation, the same rotation matrix, the same formula, it depends on how you explain it, this point is very important, we must be clear.

我知道到这里肯定还有人和我一样不是很懂,我再加以说明:

看这两个式子:

旋转矩阵及左右乘的意义,看这一篇就够了
上面是坐标变换,下面是矢量旋转,旋转矩阵必须是相同的,如果我右边蓝色框中的矢量是相同的怎么办?那么左边的价值是一样的吗?那么,左值和右值的物理意义到底是什么呢?这取决于你如何解释它,你是将它解释为向量旋转还是坐标变换。
[En]

The top is the coordinate transformation, the bottom is the vector rotation, the rotation matrix must be the same, what if the vector in the blue box on my right is the same? So is the value on the left the same? So what exactly is the physical meaning of the left and right values? It depends on how you explain it, whether you interpret it as a vector rotation or as a coordinate transformation.

二、矩阵的左右乘

可能大家都听到过, 左乘旋转矩阵绕固定坐标系旋转,右乘旋转矩阵绕自身坐标系旋转。单纯记这句话很容易让人产生误解!首先,这里的左右乘指的并不是某一向量左乘或者右乘旋转矩阵,而是多个旋转矩阵的组合方式是左乘还是右乘。其次,这句话还遗漏了一个相当重要的信息, 绕固定坐标系旋转讨论的是向量的旋转,绕自身坐标系旋转讨论的是坐标变换! 这是完全不一样的 两种功能,例如我想研究向量的旋转,我可以也只可以将其视为向量绕固定坐标系的旋转。往下看。

1.旋转矩阵左乘

我想要一个向量p0先绕x轴转α度,再绕y轴转β度,最后绕z轴转γ度,求旋转后向量的位置。
可见这是一个旋转矩阵组合的问题,之前讨论过,向量绕某一坐标轴旋转在数学上展现为向量左乘旋转矩阵,我们按照题意,当然是先让它绕x轴旋转:

旋转矩阵及左右乘的意义,看这一篇就够了

再绕y轴旋转:

旋转矩阵及左右乘的意义,看这一篇就够了

再绕z轴旋转,那么p3即为所求向量:

旋转矩阵及左右乘的意义,看这一篇就够了

连起来就是:

旋转矩阵及左右乘的意义,看这一篇就够了

总的旋转矩阵R:

旋转矩阵及左右乘的意义,看这一篇就够了
重点来了,让向量p0先后绕x、y、z轴旋转, 其总的旋转矩R为绕x轴旋转的矩阵左乘绕y
轴旋转的矩阵再左乘绕z轴旋转的矩阵。

由此才引入的那句话,左乘绕固定坐标系旋转,现在我们来改一下,应该这么说 :讨论向量旋转问题时,认为向量绕固定坐标轴旋转, 旋转矩阵按旋转次序依次左乘,得到最终的 旋转矩阵R

; 2.旋转矩阵右乘

右乘讨论的就是坐标变换了,来看问题:已知在C坐标系下表示的向量pC,我想求pC在原始坐标系0下的表示p0,已知C坐标系由原始坐标系0绕轴X0旋转α度成为坐标系A,再绕轴YA旋转成为坐标系B,再绕轴ZB旋转成为坐标系C。

如果这里的逻辑不合理,只需考虑一段时间(大脑修复如何旋转,这一次是围绕自己的坐标系)。

[En]

If the logic doesn’t make sense here, just think about it for a while, (brain repair how to rotate, this time around its own coordinate system).

还记得之前那个图吗?我给你拿到这里来再看一下:

旋转矩阵及左右乘的意义,看这一篇就够了
再复习一遍,p点在B坐标系下的坐标,乘以旋转矩阵,得到的是在A坐标系下的坐标,而B坐标系是由A坐标系转了α角转过去的,可以发现,这是一种”退回”效果,也就是p点在旋转后的坐标系下的坐标左乘旋转矩阵后,会变为旋转前坐标系下的坐标,这种效果表明旋转后的坐标系一定是绕旋转前坐标系的某一轴转过去的,对于旋转前的坐标系,可以理解为 绕自身坐标系的坐标轴旋转后成了旋转后的坐标系。换句话说, 因为你退回来得到的是前坐标系下的坐标,你转过去也必须是绕前坐标系中的坐标轴转过去的,故我们称之为绕自身坐标系旋转(感觉绕的话就多读两遍)这里一定要懂。

再回过来看,咱不是已知pC求p0吗,那咱们就一步一步往回退,退到坐标系0为止:
首先由坐标系C退回到坐标系B,(应该说p向量在C系中的表示变换为在B系中的表示):

旋转矩阵及左右乘的意义,看这一篇就够了
再由坐标系B退回到坐标系A:
旋转矩阵及左右乘的意义,看这一篇就够了
再由坐标系A退回到坐标系0:
旋转矩阵及左右乘的意义,看这一篇就够了
连起来为:
旋转矩阵及左右乘的意义,看这一篇就够了
总的旋转矩阵R为:
旋转矩阵及左右乘的意义,看这一篇就够了
之前说过坐标系C是由坐标系0经过绕轴X0变为坐标系A,再绕轴YA变为坐标系B,再绕轴ZB旋转才得到的,为了使其退回去,看看旋转矩阵R的写法,是不是绕x轴旋转矩阵右乘y轴旋转旋转右乘z轴旋转矩阵? 这就是我们所说的绕自身坐标轴旋转要右乘旋转矩阵。

总结

根据大数定律以及正态分布,我们大多数人的智商都处于人类的平均水平,可是精英教育不允许出现这种基础且冗长的讲解方式,晦涩难懂的课本、千篇一律的ppt、漫不经心的讲解是我们普通学生汲取知识的最大障碍,这就导致很大一部分人是看不懂课本跟不上课程的,csdn的出现或许能够为普通学生的学习搭建一个快速通道,我希望大家能共同努力,以尽可能通俗易懂的角度来说明问题,一起营造好的知识环境。
如有错误,请指正,如有好的概念,请补充。

Original: https://blog.csdn.net/weixin_45632220/article/details/117735223
Author: 默以成之
Title: 旋转矩阵及左右乘的意义,看这一篇就够了

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/10510/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

免费咨询
免费咨询
扫码关注
扫码关注
联系站长

站长Johngo!

大数据和算法重度研究者!

持续产出大数据、算法、LeetCode干货,以及业界好资源!

2022012703491714

微信来撩,免费咨询:xiaozhu_tec

分享本页
返回顶部