第二章 坐标系与运动学基础:常用坐标系、坐标变换与欧拉角

各位同学,欢迎来到弹道控制的核心基础课。说实话,搞弹道控制这么多年,我最大的体会就是——坐标系选不对,后面全白费。今天咱们就把这个地基打牢。

2.1 为什么需要这么多坐标系?

你想想看,一枚导弹从发射到命中目标,经历了什么?它在地球上起飞,要穿过大气层,可能还要机动转弯。描述这些运动,一个坐标系根本不够用。

我个人习惯把坐标系分成两类:惯性系非惯性系。惯性系用来描述绝对运动,非惯性系用来描述相对运动。嗯,这里要注意,弹道控制里没有绝对静止的坐标系,只有近似惯性系。

核心原则:每个坐标系都有它的“舒适区”。在舒适区里做计算,事半功倍;出了舒适区,小心翻车。

2.2 四大常用坐标系

2.2.1 地心惯性坐标系(ECI)

这个坐标系的原点在地球质心。X轴指向春分点,Z轴指向北极,Y轴按右手定则确定。说白了,它就是一个固定在宇宙空间里的“绝对参考系”。

我在项目中遇到过一个问题:用ECI系算弹道,结果发现卫星轨道数据对不上。后来查了半天,原来是忘了考虑地球自转。嗯,ECI系不跟着地球转,这个坑我替你们踩过了。

坐标系 原点 特点 典型用途
ECI 地心 不随地球旋转 卫星轨道、远程弹道
发射系 发射点 随地球旋转 发射段制导
弹体系 弹体质心 固连于弹体 姿态控制
速度系 弹体质心 与速度方向对齐 气动分析

2.2.2 发射坐标系

这个坐标系的原点在发射点。X轴指向发射方向(通常是正北或目标方向),Y轴垂直向上,Z轴按右手定则指向侧向。

为什么要有发射系?因为发射时我们关心的是“相对于发射点的位置和速度”。你想想看,指挥员喊“发射”,他关心的是导弹相对于发射架的位置,而不是相对于地心的位置。

我的经验:发射系是工程中最常用的坐标系。做发射段制导律设计时,我几乎全程都在发射系里干活。只有在需要高精度落点预测时,才会转到ECI系。

2.2.3 弹体坐标系

弹体系固连在导弹上。原点在质心,X轴沿弹体纵轴指向头部,Y轴在对称平面内垂直X轴向上,Z轴指向右侧。

这个坐标系太重要了。姿态控制、舵面控制、惯导解算,全都要用到它。我记得有一次做半实物仿真,弹体系定义反了,结果舵面偏转方向全错,导弹在天上画了个8字……嗯,从那以后我每次都要检查三遍弹体系定义。

2.2.4 速度坐标系

速度系也叫气流坐标系。原点在质心,X轴沿速度矢量方向,Y轴在对称平面内垂直速度向上,Z轴指向右侧。

搞气动的人最喜欢这个坐标系。因为升力、阻力、侧力都是相对于气流方向定义的。你想想看,攻角和侧滑角就是弹体系和速度系之间的夹角,这两个角是气动计算的核心输入。

2.3 坐标变换与欧拉角

坐标系之间怎么转换?说白了就是旋转。三维空间里的旋转,用欧拉角最直观。

2.3.1 欧拉角的定义

欧拉角有三个:偏航角ψ俯仰角θ滚转角φ。旋转顺序是:先偏航,再俯仰,最后滚转。

为什么会是这个顺序?我刚开始学的时候也纳闷。后来做了一次仿真就明白了:如果先滚转再俯仰,那俯仰轴的方向就变了,物理意义不清晰。3-2-1顺序(偏航-俯仰-滚转)是最符合工程直觉的。

避坑指南:我曾经在代码里把旋转顺序搞反了,结果仿真结果完全不对。记住:不同领域可能用不同的旋转顺序。航空航天用3-2-1,机器人可能用3-1-3。做项目前一定要确认清楚。

2.3.2 坐标变换矩阵

每个欧拉角对应一个基本旋转矩阵。绕Z轴转ψ,绕Y轴转θ,绕X轴转φ。三个矩阵乘起来,就得到从弹体系到发射系的变换矩阵。

// 从弹体系到发射系的变换矩阵
// 旋转顺序:偏航ψ → 俯仰θ → 滚转φ

C_b2l = C_z(ψ) * C_y(θ) * C_x(φ)

// 其中:
// C_z(ψ) = [cosψ  sinψ  0; -sinψ  cosψ  0; 0  0  1]
// C_y(θ) = [cosθ  0  -sinθ; 0  1  0; sinθ  0  cosθ]
// C_x(φ) = [1  0  0; 0  cosφ  sinφ; 0  -sinφ  cosφ]

这段代码看着简单,但实际用起来坑不少。我建议你写代码时,先把三个基本矩阵单独写出来,再乘在一起。别图省事写成一长串,调试的时候会哭的。

2.3.3 欧拉角的奇异性

欧拉角有个大问题:当俯仰角θ = ±90°时,偏航和滚转的旋转轴重合,出现“万向锁”。这时候偏航角和滚转角无法唯一确定。

我在做高机动飞行器控制时遇到过这个问题。导弹做大攻角机动,俯仰角接近90°,姿态解算直接炸了。后来改用四元数才解决。

工程建议:如果飞行器的俯仰角可能接近±90°,别用欧拉角做姿态解算。用四元数或者方向余弦矩阵。欧拉角只适合小角度机动或者作为人机交互的显示参数。

2.4 知识体系总览

下面这张图是我自己画的坐标系知识体系。每次带新人,我都会先让他们看这张图,建立全局观。

坐标系与运动学基础 - 知识体系 坐标系体系 地心惯性系 ECI - 绝对参考 发射坐标系 发射点参考 弹体坐标系 固连于弹体 速度坐标系 气流方向 坐标变换:欧拉角(偏航ψ → 俯仰θ → 滚转φ) 旋转矩阵 C_b2l = C_z(ψ) · C_y(θ) · C_x(φ) 卫星轨道计算 远程弹道设计 发射段制导 落点预测 姿态控制 惯导解算 ⚠ 注意:欧拉角在θ=±90°时出现奇异性,建议用四元数替代 旋转顺序必须明确:航空航天常用3-2-1顺序

2.5 实战经验总结

说了这么多,我总结几条实战经验:

  • 选坐标系要“从一而终”:一个项目里尽量少切换坐标系。我见过一个项目,发射段用发射系,中段用ECI系,末段用弹体系,结果坐标转换代码占了总代码量的40%,bug还特别多。
  • 欧拉角只做显示用:内部计算用四元数或方向余弦矩阵。欧拉角拿来给人看,四元数拿来给机器算。
  • 旋转顺序要写进文档:每次做新项目,第一件事就是确认旋转顺序。我曾经接手过一个项目,文档里没写旋转顺序,我花了三天才从代码里反推出来。
  • 验证坐标变换:写一个简单的测试用例,输入已知的欧拉角,看变换矩阵是不是对的。这个测试我每次都会做,花不了5分钟,但能省下半天调试时间。

一个小技巧:做坐标变换时,先用手算一个简单例子。比如让偏航角=30°,其他角为0,看看变换矩阵是不是符合直觉。这个习惯帮我发现了至少5个代码bug。

好了,坐标系和运动学基础就讲到这里。这些内容看着简单,但真的是弹道控制的基石。我见过太多人因为坐标系没搞明白,后面仿真结果一塌糊涂。希望你能把这些基础打牢,后面学制导律、控制律的时候会轻松很多。


专注资料整理