深入理解姿态解算进阶:探索旋转矩阵(方向余弦矩阵)的原理与应用
MultiMCU EDU 2023-07-13


旋转矩阵为何五花八门


有初学的读者有 这样一个问题:刚学,基础不太好,很勤奋的去网上找讲基础知识的文章,发现同类内容不同的文章讲得不一样,却又都是看起来很对的样子,究竟学哪个才是对的?
对于绕 Z 轴的旋转,网上的文章里有两种表述:

两种表述符号不同无伤大雅,但“负号不在同一位置”就让很多初学者挠头了(头发揪净了都不知道哪个对,Sugar 称此类问题为“揪净问题”)。
上图中都表示“绕 Z 轴旋转的偏航角”,只是转向不同。文中一直是以来定义转角正方向的,上面两个截图中的“第二种表述”是符合笛卡尔右手系规则的,而“第一种表述”与笛卡尔右手系规则正好相反。
对单轴的旋转矩阵最终会影响到最终的姿态旋转矩阵,这里给出下面的 MATLAB 代码,读者要自己动手试一下这个影响究竟是什么样的:

clearclc% cr:cos(roll) sr:sin(roll)% cp:cos(pitch) sp:sin(pitch)% cy:cos(yaw) sy:sin(yaw)syms cr sr cp sp cy sy% RX:Rotate X axis% RY:Rotate Y axis% RZ:Rotate Z axissyms RX RY RZ RX = [ 1 0 0; 0 cr -sr; 0 sr cr]RY = [ cp 0 sp; 0 1 0; -sp 0 cp]RZ = [ cy -sy 0; sy cy 0; 0 0 1]%-----------------from_euler_xyz-----------------% column : x y z% row : a b c% x y z% a [ cp*cy, cy*sp*sr - cr*sy, sr*sy + cr*cy*sp]% b [ cp*sy, cr*cy + sp*sr*sy, cr*sp*sy - cy*sr]% c [ -sp, cp*sr, cp*cr]from_euler_xyz = RZ*RY*RX

至此就不难理解 “在其文章本身环境下”是什么意思了,直白说就是:每个文章对旋转正方向的定义不同,所以公式存在差异。推荐一律采用笛卡尔右手系,这样不容易出错。有些文章是 X-Y 符合笛卡尔右手系规则,而 Z 与笛卡右手系规则相反,那么之后所有的旋转都要把 Z 单独转向才行,这样不利于算法总体的统一。

一起看 ArduPilot 里的旋转矩阵

先看一下从 github 上截的 ArduPilot 旋转矩阵代码的图:

不难看出上面 MATLAB 代码里的注释就是对这段代码写的。这就是“先绕 X 轴旋转、再绕 Y 轴旋转最后绕 Z 轴旋转”的旋转矩阵(网上也有叫“方向余弦矩阵”的)。下面 解释一下旋转矩阵的用法和注意点。

一、列向量左乘旋转矩阵
在笛卡尔三维直角坐标下,一个有方向的线段用三维向量表示。为了能够使用上面的旋转矩阵对向量进行旋转,这个表示有向线段的三维向量要以“列向量”形式存在。所以:

对一个三维列向量施加一个三维旋转的方法就是:将这个三维列向量左乘旋转矩阵。

下面看下用 MATLAB 做的旋转效果:

二、不同的旋转顺序得到不同的结果
 习惯使用的旋转顺序是:X-Y-Z 顺序。就是上面说到的:先绕 X 轴旋转、再绕 Y 轴旋转最后绕 Z 轴旋转。下面 以“横滚 30 度、俯仰 30 度、偏航 90 度”为例,看看“X-Y-Z 顺序”和“Z-Y-X 顺序”有多大差别。

事实说明:同样的旋转角度、不同的旋转顺序,效果可以是天差地别

三、gimbal lock 万向锁
关于万向锁网上能找到的解释很多,在这里不再赘述。下面 Sugar 通过分步 Z-Y-X 顺序旋转为例,演示一下 gimbal lock 现象在姿态解算上引起的乌龙事件(也说明一下上面 Z-Y-X 顺序的图为什么转成了那个样子)。
按上面的角度,首先绕 Z 轴转 90 度,如下:

上图就是下面乌龙事件的起因,下面我们该绕 Y 轴转出 30 度的俯仰角了,结果却:

因为第一步绕 Z 转遇到了 gimbal lock,所以导致第二步绕 Y 转俯仰角的效果变成了转出横滚的效果。
这里要注意的是:第二步绕 Y 轴转指的是“第一步旋转前的 Y 轴”(是上图中与红色虚线重合的绿色实线,而不是那个绿色虚线)。
下面还剩一步,绕红色实线 X 轴转出 30 度的横滚角。当然,因为第一步的 gimbal lock 导致变成了转俯仰角的效果,如下:


声明: 本文转载自其它媒体或授权刊载,目的在于信息传递,并不代表本站赞同其观点和对其真实性负责,如有新闻稿件和图片作品的内容、版权以及其它问题的,请联系我们及时删除。(联系我们,邮箱:evan.li@aspencore.com )
0
评论
  • 相关技术文库
  • 硬件
  • 原理图
  • 信号完整性
  • EMI
下载排行榜
更多
评测报告
更多
广告