《飞控数学与控制 · 新手入门连载》第 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θ]
四、三维旋转矩阵:绕轴旋转
无人机是三维的,我们需要绕 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θ0001
绕 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(θ)=1000cosθ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θ010sinθ0cosθ
为什么 R_y 的符号是反的?因为右手坐标系中,绕 y 轴旋转时 x→z 的旋转方向与 x-y 平面内相反。工程上这是最常见的写错点,建议直接记住:负号跟着 sin 走,R_y 的负号在左下角。
五、SO(3):旋转矩阵组成的集合
把"所有三维旋转矩阵"看成一个整体,它有个学名叫SO(3)(Special Orthogonal group,特殊正交群):
SO(3)={R∈R3×3 | RTR=I, detR=1}SO(3) = \left\{ R \in \mathbb{R}^{3\times 3} \;\middle|\; R^T R = I,\; \det R = 1 \right\}SO(3)={R∈R3×3RTR=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)=detI=1 ⇒ detR⋅detR=1 ⇒ detR=±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。
六、飞控应用:机体坐标系与姿态
无人机上定义两个常用坐标系:
- 机体坐标系 b:原点在质心,x 轴指机头、y 轴指右翼、z 轴指向机腹(右手系);
- 地面坐标系 n:固定在地面(北-东-地,即 NED)。
如果机身在空中有某个姿态,用一个旋转矩阵R_b^n描述"从机体系到地面系"的变换,那么同一个向量在两套坐标下的分量满足:
pn=Rbn pbp^n = R_b^n \, p^bpn=Rbnpb
R_b^n的三列,恰好就是机体三轴在地面坐标系下的投影——这给了工程师一个直觉:读旋转矩阵,就是读"机头/右翼/机腹分别指向哪个方向"。
实际场景:GPS 给出的是地面系速度,而加速度计测得的是机体系加速度,做传感器融合(后面卡尔曼滤波章节会用到)之前,必须先用旋转矩阵把它们统一到同一个坐标系。姿态控制也一样:期望姿态和当前姿态都用旋转表示,二者之差经过转换才是正确的角速度指令。
小结
- 向量是飞控的基本量,矩阵是"线性变换机器";
- 2D 旋转矩阵由两角和公式严格推导得出,3D 旋转矩阵是它的绕轴推广(注意 R_y 符号);
- SO(3) = 正交矩阵(R^T R = I)+ 右手系(det R = 1);
- 旋转矩阵是无人机姿态表示与坐标变换的数学基础。
思考题
- 把向量
(1, 0)先旋转 90° 再旋转 90°,等价于一次旋转多少度?对应的矩阵乘法是什么?(提示:两个 R(90°) 相乘,验证结果是否等于 R(180°)。) - 为什么 R_y 的负号在左下角而不是右上角?用"右手定则绕 y 轴转"比划一下。
- 旋转矩阵的三个列向量有什么几何意义?(提示:列向量是机体轴在地面系的投影,它们的长度和夹角是多少?)
下期预告
下一期《行列式、特征值与系统稳定性》:旋转矩阵告诉你"刚体转了多少",而特征值能告诉你"系统会不会发散"——这是飞控稳定性分析的第一块基石,也是之后所有控制律设计的理论起点。
参考资源
- 全权:《多旋翼飞行器设计与控制》,电子工业出版社(第 2 章 坐标系与姿态描述)
- Beard & McLain:Small Unmanned Aircraft: Theory and Practice, Princeton Univ. Press(第 2 章 坐标系)
- 3Blue1Brown《线性代数的本质》系列视频:直观理解向量、矩阵与旋转