☰
《飞控数学与控制 · 新手入门连载》第 1 期|线性代数入门:向量、矩阵与旋转矩阵 SO(3)
2026/10/14 12:48:01 网站建设 项目流程

《飞控数学与控制 · 新手入门连载》第 1 期|线性代数入门:向量、矩阵与旋转矩阵 SO(3)

导读:从零开始建立飞控的数学地基。这一期我们只讲一件事——怎么用向量和矩阵描述"旋转"。无人机在空中翻身、转向,飞控内部其实一直在用旋转矩阵做坐标变换。读完本期,你将理解:旋转矩阵长什么样、它是怎么从几何推导出来的、为什么它叫 SO(3),以及它如何用于无人机姿态表示。全程零基础可读,公式逐步推导不跳步。


一、为什么飞控工程师要先学这个

一架无人机在空中,飞控芯片每秒要做几百次姿态估计和控制计算。其中反复出现的核心问题只有两类:

  • “机身现在朝向哪?”—— 需要用一个数学对象描述姿态;
  • “传感器测到的是机体坐标,怎么换算到地面坐标?”—— 需要做坐标变换。

这两个问题落到数学上,就是旋转矩阵(Rotation Matrix)。姿态估计(如卡尔曼滤波的状态里就含旋转)和姿态控制(把期望姿态换算成角速度指令)全都建立在它之上。所以我们的连载从它开始。

二、向量与矩阵:两分钟的直觉

  • 向量:带方向和大小的量。飞控里到处都是:速度v、角速度ω、力F、磁场的测量值,都是三维向量。
  • 矩阵:可以理解为"对向量做线性变换的机器"。一个矩阵乘上一个向量,得到一个新向量。
  • 矩阵乘法:多个变换依次作用,等于这些矩阵相乘——变换的复合。

举个例子:把向量v = (2, 1)旋转 90°,得到v' = (-1, 2)。这个"旋转 90°"的动作,就对应一个矩阵R,满足v' = R v。我们要做的,就是把R长什么样推导出来。

三、从几何推导出 2D 旋转矩阵(详细推导)

设二维平面里有一个向量v = (x, y),长度为r,与 x 轴夹角为α。由三角定义:

x=rcos⁡α,y=rsin⁡αx = r\cos\alpha, \qquad y = r\sin\alphax=rcosα,y=rsinα

现在把v绕原点逆时针旋转角度θ,得到新向量v' = (x', y')。旋转不改变长度,所以v'与 x 轴夹角变为α + θ:

x′=rcos⁡(α+θ),y′=rsin⁡(α+θ)x' = r\cos(\alpha+\theta), \qquad y' = r\sin(\alpha+\theta)x′=rcos(α+θ),y′=rsin(α+θ)

技巧:用两角和公式展开(这是本推导唯一用到的恒等式):

cos⁡(α+θ)=cos⁡αcos⁡θ−sin⁡αsin⁡θ\cos(\alpha+\theta) = \cos\alpha\cos\theta - \sin\alpha\sin\thetacos(α+θ)=cosαcosθ−sinαsinθ

sin⁡(α+θ)=sin⁡αcos⁡θ+cos⁡αsin⁡θ\sin(\alpha+\theta) = \sin\alpha\cos\theta + \cos\alpha\sin\thetasin(α+θ)=sinαcosθ+cosαsinθ

代入并整理:

x′=rcos⁡αcos⁡θ−rsin⁡αsin⁡θ=xcos⁡θ−ysin⁡θx' = r\cos\alpha\cos\theta - r\sin\alpha\sin\theta = x\cos\theta - y\sin\thetax′=rcosαcosθ−rsinαsinθ=xcosθ−ysinθ

y′=rsin⁡αcos⁡θ+rcos⁡αsin⁡θ=xsin⁡θ+ycos⁡θy' = r\sin\alpha\cos\theta + r\cos\alpha\sin\theta = x\sin\theta + y\cos\thetay′=rsinαcosθ+rcosαsinθ=xsinθ+ycosθ

写成矩阵形式:

[x′y′]=[cos⁡θ−sin⁡θsin⁡θcos⁡θ][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}[x′y′​]=[cosθsinθ​−sinθcosθ​][xy​]

于是 2D 旋转矩阵就是:

R(θ)=[cos⁡θ−sin⁡θsin⁡θcos⁡θ]R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}R(θ)=[cosθsinθ​−sinθcosθ​]

图1 旋转矩阵 R(θ) 将向量 v 旋转角度 θ 得到 v',长度保持不变(示意)

四、三维旋转矩阵:绕轴旋转

无人机是三维的,我们需要绕 x、y、z 三个轴旋转的矩阵。绕 z 轴旋转时,z 分量不变,x-y 平面内的旋转正好是上面的 2D 结果:

Rz(θ)=[cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001]R_z(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix}Rz​(θ)=​cosθsinθ0​−sinθcosθ0​001​​

绕 x 轴旋转(y-z 平面内旋转):

Rx(θ)=[1000cos⁡θ−sin⁡θ0sin⁡θcos⁡θ]R_x(\theta) = \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\theta & -\sin\theta \\ 0 & \sin\theta & \cos\theta \end{bmatrix}Rx​(θ)=​100​0cosθsinθ​0−sinθcosθ​​

绕 y 轴旋转(x-z 平面内旋转),注意符号与直觉相反:

Ry(θ)=[cos⁡θ0sin⁡θ010−sin⁡θ0cos⁡θ]R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix}Ry​(θ)=​cosθ0−sinθ​010​sinθ0cosθ​​

为什么 R_y 的符号是反的?因为右手坐标系中,绕 y 轴旋转时 x→z 的旋转方向与 x-y 平面内相反。工程上这是最常见的写错点,建议直接记住:负号跟着 sin 走,R_y 的负号在左下角。

图2 绕 z 轴旋转 60°:Rz(60°) 只改变 x-y 平面分量,z 分量保持不变(示意)

五、SO(3):旋转矩阵组成的集合

把"所有三维旋转矩阵"看成一个整体,它有个学名叫SO(3)(Special Orthogonal group,特殊正交群):

SO(3)={R∈R3×3 | RTR=I, det⁡R=1}SO(3) = \left\{ R \in \mathbb{R}^{3\times 3} \;\middle|\; R^T R = I,\; \det R = 1 \right\}SO(3)={R∈R3×3​RTR=I,detR=1}

两个性质各有直观含义,我们逐一推导。

性质一:正交性 R^T R = I(旋转不改变长度)

旋转前后向量长度必须不变:对任意向量v,有||Rv|| = ||v||。两边平方并用向量内积展开:

(Rv)T(Rv)=vTv(Rv)^T (Rv) = v^T v(Rv)T(Rv)=vTv

利用矩阵乘法的结合律(技巧:转置的乘积满足(AB)^T = B^T A^T):

vTRTRv=vTv ⇒ vT(RTR−I)v=0v^T R^T R v = v^T v \;\Rightarrow\; v^T \left( R^T R - I \right) v = 0vTRTRv=vTv⇒vT(RTR−I)v=0

这个等式对任意v都成立,因此括号里的矩阵必须为零矩阵(若不然,取v为它的某个特征向量即可得矛盾):

RTR=IR^T R = IRTR=I

性质二:det R = 1(旋转不翻转)

对正交矩阵两边取行列式(技巧:det(AB) = det A · det B,det(A^T) = det A):

det⁡(RTR)=det⁡I=1 ⇒ det⁡R⋅det⁡R=1 ⇒ det⁡R=±1\det(R^T R) = \det I = 1 \;\Rightarrow\; \det R \cdot \det R = 1 \;\Rightarrow\; \det R = \pm 1det(RTR)=detI=1⇒detR⋅detR=1⇒detR=±1

其中+1对应纯旋转(保持右手系),-1对应带镜像的翻转(如照镜子)。飞控里只关心不翻转的旋转,所以det R = 1。

图3 R^T R = I 的几何含义:旋转前后向量长度不变、两向量夹角不变(示意)

六、飞控应用:机体坐标系与姿态

无人机上定义两个常用坐标系:

  • 机体坐标系 b:原点在质心,x 轴指机头、y 轴指右翼、z 轴指向机腹(右手系);
  • 地面坐标系 n:固定在地面(北-东-地,即 NED)。

如果机身在空中有某个姿态,用一个旋转矩阵R_b^n描述"从机体系到地面系"的变换,那么同一个向量在两套坐标下的分量满足:

pn=Rbn pbp^n = R_b^n \, p^bpn=Rbn​pb

R_b^n的三列,恰好就是机体三轴在地面坐标系下的投影——这给了工程师一个直觉:读旋转矩阵,就是读"机头/右翼/机腹分别指向哪个方向"。

实际场景:GPS 给出的是地面系速度,而加速度计测得的是机体系加速度,做传感器融合(后面卡尔曼滤波章节会用到)之前,必须先用旋转矩阵把它们统一到同一个坐标系。姿态控制也一样:期望姿态和当前姿态都用旋转表示,二者之差经过转换才是正确的角速度指令。

小结

  1. 向量是飞控的基本量,矩阵是"线性变换机器";
  2. 2D 旋转矩阵由两角和公式严格推导得出,3D 旋转矩阵是它的绕轴推广(注意 R_y 符号);
  3. SO(3) = 正交矩阵(R^T R = I)+ 右手系(det R = 1);
  4. 旋转矩阵是无人机姿态表示与坐标变换的数学基础。

思考题

  1. 把向量(1, 0)先旋转 90° 再旋转 90°,等价于一次旋转多少度?对应的矩阵乘法是什么?(提示:两个 R(90°) 相乘,验证结果是否等于 R(180°)。)
  2. 为什么 R_y 的负号在左下角而不是右上角?用"右手定则绕 y 轴转"比划一下。
  3. 旋转矩阵的三个列向量有什么几何意义?(提示:列向量是机体轴在地面系的投影,它们的长度和夹角是多少?)

下期预告

下一期《行列式、特征值与系统稳定性》:旋转矩阵告诉你"刚体转了多少",而特征值能告诉你"系统会不会发散"——这是飞控稳定性分析的第一块基石,也是之后所有控制律设计的理论起点。

参考资源

  • 全权:《多旋翼飞行器设计与控制》,电子工业出版社(第 2 章 坐标系与姿态描述)
  • Beard & McLain:Small Unmanned Aircraft: Theory and Practice, Princeton Univ. Press(第 2 章 坐标系)
  • 3Blue1Brown《线性代数的本质》系列视频:直观理解向量、矩阵与旋转

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询