第二章:坐标系与运动学基础

各位同学,今天我们来聊聊制导控制里最基础、也最绕不开的东西——坐标系。说实话,我见过不少新人,一上来就盯着复杂的制导律公式看,结果连坐标系都没搞明白,最后仿真出来的弹道乱七八糟。嗯,我自己刚入行那会儿也犯过这毛病。

坐标系这东西,说白了就是给飞行器一个“定位”和“描述运动”的基准。你想想看,导弹在天上飞,它怎么知道自己朝哪飞?怎么知道自己转了多少?全靠坐标系。今天这一章,我们就把它彻底讲透。

2.1 常用坐标系定义

我个人习惯把坐标系分成三类:惯性系、弹体系、速度系。这三类基本覆盖了制导控制里90%的场景。

2.1.1 惯性坐标系(i系)

惯性系,就是牛顿定律成立的那个坐标系。在导弹制导中,我们通常取地面某一点为原点,比如发射点。x轴指向正北,y轴指向天顶,z轴指向正东。为什么这么取?因为这样符合右手定则,计算方便。

我在项目中遇到过一个问题:有人把惯性系的原点选在了导弹发射架的中心,结果发射后导弹一转弯,坐标值变得特别大,数值计算精度都丢了。后来我建议他把原点选在地面固定点,问题就解决了。所以,原点选择要慎重。

2.1.2 弹体坐标系(b系)

弹体系是固连在导弹上的。原点在导弹质心,x轴沿弹体纵轴向前,y轴在纵向对称面内垂直于x轴向上,z轴按右手定则确定。这个坐标系最大的好处是——描述导弹自身的姿态非常直观。

你想想看,导弹的舵面偏转、推力矢量控制,都是相对于弹体系来描述的。如果你非要用惯性系去算舵面偏角,那计算量会大得吓人。

2.1.3 速度坐标系(v系)

速度系,也叫气流坐标系。原点在质心,x轴沿速度矢量方向,y轴在纵向对称面内垂直于x轴向上,z轴按右手定则。这个坐标系在分析气动力时特别有用。

我记得有一次做高攻角机动仿真,用弹体系算气动力,结果升力系数怎么都对不上风洞数据。后来换成速度系,一下子就对了。为什么?因为气动力本来就是相对于气流方向定义的。

2.2 坐标变换矩阵

有了坐标系,接下来就是怎么从一个系变到另一个系。坐标变换矩阵,就是干这个活的。

2.2.1 基本旋转矩阵

绕x轴旋转角度α:

R_x(α) = [1     0       0   ]
         [0   cosα   -sinα ]
         [0   sinα    cosα ]

绕y轴旋转角度β:

R_y(β) = [ cosβ   0   sinβ ]
         [ 0      1   0    ]
         [-sinβ   0   cosβ ]

绕z轴旋转角度γ:

R_z(γ) = [cosγ  -sinγ   0 ]
         [sinγ   cosγ   0 ]
         [0      0      1 ]

这三个矩阵,我建议你背下来。不是死记硬背,而是理解它的几何意义。每一列,其实就是旋转后的坐标轴在原坐标系中的投影。

2.2.2 从惯性系到弹体系的变换

通常我们用3-2-1转序:先绕z轴转偏航角ψ,再绕y轴转俯仰角θ,最后绕x轴转滚转角φ。变换矩阵为:

C_b^i = R_x(φ) * R_y(θ) * R_z(ψ)

这个顺序不是随便定的。我当年做半实物仿真时,发现如果转序搞反了,导弹的姿态解算会完全乱掉。后来我养成了一个习惯:每次写代码前,先把转序写在注释里。

2.3 刚体运动学方程

导弹在空中的运动,可以分解为质心运动和绕质心转动。质心运动用牛顿第二定律,绕质心转动用欧拉方程。

2.3.1 质心运动方程

在惯性系下:

m * dV/dt = F_总

其中F_总包括推力、气动力、重力。这里有个坑:气动力通常是在速度系下给出的,重力在惯性系下最简单。所以实际计算时,需要来回变换坐标系。

2.3.2 绕质心转动方程

在弹体系下:

I * dω/dt + ω × (I * ω) = M_总

其中I是惯量张量,ω是角速度,M_总是外力矩。这个方程看起来简单,但实际求解时要注意:惯量张量在弹体系下是常数,这是它最大的优势。

2.4 姿态参数表示

描述导弹的姿态,常用的有两种方法:欧拉角和四元数。

2.4.1 欧拉角

欧拉角直观,物理意义明确。三个角:偏航角ψ、俯仰角θ、滚转角φ。但有个致命问题——万向锁。当俯仰角接近±90°时,偏航和滚转无法区分。

⚠️ 注意: 我曾经在某个项目中,因为没处理万向锁,导致导弹在大攻角机动时姿态解算直接发散。从那以后,只要涉及大角度机动,我坚决用四元数。

2.4.2 四元数

四元数用四个参数表示姿态:q = [q0, q1, q2, q3]^T,满足q0^2 + q1^2 + q2^2 + q3^2 = 1。它没有奇点,计算效率高,适合计算机实现。

从欧拉角到四元数的转换:

q0 = cos(φ/2)*cos(θ/2)*cos(ψ/2) + sin(φ/2)*sin(θ/2)*sin(ψ/2)
q1 = sin(φ/2)*cos(θ/2)*cos(ψ/2) - cos(φ/2)*sin(θ/2)*sin(ψ/2)
q2 = cos(φ/2)*sin(θ/2)*cos(ψ/2) + sin(φ/2)*cos(θ/2)*sin(ψ/2)
q3 = cos(φ/2)*cos(θ/2)*sin(ψ/2) - sin(φ/2)*sin(θ/2)*cos(ψ/2)

💡 个人建议: 在仿真中,内部计算全部用四元数。只在需要显示或人工分析时,才转成欧拉角。这样既避免了奇点,又保留了直观性。

2.5 本章知识体系

下面这张图,是我自己总结的坐标系与运动学知识结构。你看一遍,应该能对本章内容有个整体把握。

坐标系与运动学基础 - 知识体系 坐标系定义 • 惯性系 (i系) • 弹体系 (b系) • 速度系 (v系) 原点选择原则 右手定则 坐标变换矩阵 • 基本旋转矩阵 • 3-2-1转序 • C_b^i 变换 转序不可交换 注意旋转方向 运动学方程 • 质心运动 • 绕质心转动 • 欧拉方程 惯量张量在弹体系为常数 注意坐标系选择 姿态参数表示 欧拉角 ψ, θ, φ ⚠ 存在万向锁 四元数 q0, q1, q2, q3 ✓ 无奇点 内部计算用四元数,显示分析用欧拉角

这张图把本章的核心内容串起来了。你从上往下看:先定义坐标系,然后学怎么在坐标系之间变换,接着用运动学方程描述导弹的运动,最后用姿态参数把姿态表示清楚。每一步都环环相扣。

🔑 核心要点:

  • 坐标系的选择直接影响计算复杂度和精度
  • 坐标变换矩阵的转序不能搞错
  • 运动学方程中,注意区分质心运动和绕质心转动
  • 大角度机动时,优先使用四元数

好了,这一章的内容就到这里。坐标系这东西,你越用越熟。刚开始可能会觉得绕,但多做几次仿真,多调几次bug,自然就记住了。下一章我们开始讲制导律,到时候这些坐标系知识会反复用到。


公众号:蓝海资料掘金营,微信deep3321