2. 坐标系与运动学:常用坐标系、坐标变换矩阵、欧拉角与四元数

各位同学,咱们今天聊聊坐标系。说实话,搞导弹制导这么多年,我最大的体会就是——坐标系选不对,后面全白费。你想想看,导弹在天上飞,它自己怎么知道自己在哪?怎么知道目标在哪?全靠坐标系来“定位”。

这一节内容,说白了就是给导弹建立一套“世界观”。我们得告诉它:什么是上下左右,什么是前后远近。嗯,咱们一步步来。

2.1 常用坐标系:导弹的“世界观”

我个人习惯把坐标系分成三类:惯性系、弹体系、速度系。这三者之间的关系,就像是你站在地球上、坐在车里、看着窗外风景——视角不同,看到的东西自然不一样。

2.1.1 惯性坐标系

惯性系,说白了就是一个“绝对静止”的参考系。在导弹制导中,我们通常把发射时刻的地心或地面某点作为原点。这个坐标系不随导弹转动,也不随地球自转——当然,严格来说地球在转,但短时间飞行可以忽略。

特点:牛顿定律在这里成立。你测到的加速度、速度,都是相对于这个“不动”的坐标系。

2.1.2 弹体坐标系

弹体系是固定在导弹身上的。原点在导弹质心,x轴沿弹体纵轴向前,y轴向上(或向右,看定义),z轴按右手定则确定。

我在项目中遇到过一个问题:某次飞行试验,遥测数据里攻角一直偏大,查了半天,原来是弹体系定义时y轴方向搞反了。嗯,这种低级错误,一旦上天就来不及改了。

2.1.3 速度坐标系

速度系,也叫气流坐标系。它的x轴始终指向导弹速度方向。说白了,就是“风从哪里来,x轴就指向哪”。

这个坐标系在分析气动力时特别有用。因为升力、阻力都是相对于气流方向定义的。

2.2 坐标变换矩阵:从A系到B系的“翻译官”

有了不同的坐标系,就得有办法把同一个向量从一个系“翻译”到另一个系。这个翻译工具就是坐标变换矩阵。

举个例子:导弹在惯性系下的位置是 (x, y, z),但弹上传感器测到的是弹体系下的数据。怎么把两者联系起来?用变换矩阵。

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_ib = R_x(φ) * R_y(θ) * R_z(ψ)

这个矩阵就是惯性系到弹体系的变换矩阵。反过来,弹体系到惯性系就是它的转置——因为旋转矩阵是正交矩阵。

2.3 欧拉角:直观但有小毛病

欧拉角大家应该不陌生。俯仰角θ、偏航角ψ、滚转角φ,三个角度就能描述导弹的姿态。直观吧?当然直观。

但欧拉角有个致命问题——万向锁。当俯仰角接近±90°时,偏航和滚转就分不清了。为什么会这样?因为两个旋转轴重合了,自由度丢失了一个。

⚠️ 避坑指南: 我曾经在某个项目中,用欧拉角做姿态解算,导弹做大机动时俯仰角过了90°,结果姿态直接“跳变”了180°。嗯,从那以后,只要涉及大角度机动,我坚决用四元数。

2.4 四元数:优雅的替代方案

四元数,说白了就是一个“超复数”。它用四个数来描述旋转:一个标量部分和三个矢量部分。

q = [q0, q1, q2, q3]

其中 q0 是标量部分,代表旋转角的一半的余弦;q1, q2, q3 是矢量部分,代表旋转轴的方向。

2.4.1 四元数的优势

  • 无奇点:不会出现万向锁,任意姿态都能表示
  • 计算效率高:比欧拉角少用三角函数,适合实时计算
  • 插值平滑:两个姿态之间可以平滑过渡

2.4.2 四元数与欧拉角的转换

从欧拉角到四元数:

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)

从四元数到欧拉角:

φ = atan2(2(q0q1 + q2q3), 1 - 2(q1² + q2²))
θ = asin(2(q0q2 - q3q1))
ψ = atan2(2(q0q3 + q1q2), 1 - 2(q2² + q3²))
💡 个人建议: 初学者先用欧拉角理解物理意义,等熟悉了再切换到四元数。我当年就是先啃欧拉角,后来发现四元数真香。

2.5 知识体系总览

下面这张图,是我自己总结的坐标系与运动学核心逻辑。你把它看懂了,这一章就通了。

坐标系与运动学核心逻辑 惯性坐标系 绝对静止参考 牛顿定律适用 弹体坐标系 固定在导弹上 x轴沿纵轴 速度坐标系 x轴沿速度方向 分析气动力 变换矩阵 变换矩阵 欧拉角 俯仰θ / 偏航ψ / 滚转φ 直观但存在万向锁 适合小角度机动 四元数 q = [q0, q1, q2, q3] 无奇点 / 计算高效 适合大角度机动 相互转换 核心思路:选对坐标系 → 建立变换关系 → 选择姿态表示 → 解算运动方程 坐标系是基础,变换矩阵是桥梁,欧拉角和四元数是工具

2.6 实战中的选择建议

场景 推荐坐标系 推荐姿态表示 原因
弹道仿真 惯性系 四元数 避免奇点,计算稳定
姿态控制律设计 弹体系 欧拉角 物理意义清晰,便于调参
气动分析 速度系 欧拉角 攻角、侧滑角直接可得
大机动飞行 惯性系 四元数 万向锁风险高,必须用四元数

📌 核心要点:

  • 坐标系是描述导弹运动的“语言”,选错了后面全错
  • 变换矩阵是不同坐标系之间的“翻译官”,注意旋转顺序
  • 欧拉角直观但有万向锁,四元数优雅但抽象
  • 实际工程中,我建议:仿真用四元数,调试用欧拉角

好了,这一节的内容就到这。坐标系这东西,刚开始觉得枯燥,但等你真正上手做项目,就会发现——嗯,基础不牢,地动山摇。希望各位能把这些概念吃透,后面学运动学方程、制导律设计,才能游刃有余。


专注资料整理