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

各位同学好,我是你们的老朋友。今天咱们开始聊火箭级间分离的控制逻辑建模。说实话,这个课题我做了十几年,踩过的坑不少,但收获也很多。第一节课,我们先打好基础——坐标系和运动学。

你想想看,火箭在天上飞,我们在地面上控制它。怎么描述它的姿态?怎么知道它往哪转?这些都得靠坐标系。坐标系选错了,后面全白搭。我在项目中见过不少新手,上来就搞动力学方程,结果坐标系定义不清,仿真跑出来全是错的。

1.1 常用坐标系定义

火箭控制里,最常用的坐标系就两个:发射惯性系和箭体系。其他的比如地心惯性系、轨道系,咱们后面用到再说。

1.1.1 发射惯性系

发射惯性系,说白了就是“站在发射场看火箭”。它的定义是这样的:

  • 原点O:取在发射点
  • X轴:指向发射方位角方向(一般是正东或正北,看任务)
  • Y轴:在水平面内垂直于X轴,指向右方
  • Z轴:垂直于当地水平面,指向上方(与重力方向相反)

这个坐标系是惯性系,也就是说它不随地球自转。火箭起飞后,我们就在这个系里描述它的位置和速度。我个人习惯用OI-XIYIZI来表示。

重要提醒:发射惯性系不是地心惯性系!地心惯性系的原点在地心,而发射惯性系的原点在发射点。两者之间有一个平移和旋转的关系。很多初学者搞混这个,导致导航解算出错。

1.1.2 箭体系

箭体系是固连在火箭上的坐标系。它跟着火箭一起动。定义如下:

  • 原点O:取在火箭质心
  • Xb:沿火箭纵轴,指向头部方向
  • Yb:垂直于Xb轴,指向箭体右侧(从尾部看)
  • Zb:与Xb、Yb构成右手系,指向箭体上方

嗯,这里要注意:箭体系的原点不是几何中心,而是质心。火箭飞行过程中燃料消耗,质心位置会变。我在做级间分离仿真时,就吃过这个亏——质心偏移没考虑,分离姿态算出来差了好几度。

个人经验:实际工程中,箭体系的原点通常取在理论质心位置。但燃料消耗后,实际质心会偏移。我建议在仿真中加一个质心偏移模型,精度能提高不少。

1.2 欧拉角与姿态描述

有了两个坐标系,怎么描述火箭的姿态?说白了就是:箭体系相对于发射惯性系转了多少。描述姿态的方法很多,欧拉角是最直观的一种。

1.2.1 欧拉角的定义

火箭控制里,我们常用“3-2-1”转序。也就是:

  1. 偏航角ψ:先绕ZI轴转ψ角
  2. 俯仰角θ:再绕新的Y轴转θ角
  3. 滚转角γ:最后绕新的X轴转γ角

这三个角合起来,就唯一确定了火箭的姿态。我刚开始学的时候,总觉得转序搞不清楚。后来想了个笨办法:拿一本书在手里转,转一次记一次,慢慢就熟了。

欧拉角 符号 范围 物理意义
偏航角 ψ -180° ~ 180° 火箭头部指向的方位
俯仰角 θ -90° ~ 90° 火箭纵轴与水平面的夹角
滚转角 γ -180° ~ 180° 火箭绕自身纵轴的旋转

避坑指南:我曾经在项目中遇到过欧拉角奇异问题。当俯仰角接近±90°时,偏航角和滚转角会耦合,导致解算不稳定。级间分离时火箭姿态变化剧烈,一定要小心这个。解决办法是用四元数代替欧拉角,后面我们会讲到。

1.2.2 方向余弦矩阵

欧拉角虽然直观,但计算不方便。实际工程中,我们更常用方向余弦矩阵(DCM)来描述姿态。从发射惯性系到箭体系的转换矩阵可以写成:

C_I^b = C_x(γ) · C_y(θ) · C_z(ψ)

其中:
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γ]

这个矩阵的每一列,其实就是箭体系各轴在发射惯性系中的投影。反过来,它的转置就是从箭体系到发射惯性系的转换。

1.3 运动学方程建立

有了姿态描述,接下来就是运动学方程。运动学方程描述的是姿态角随时间的变化规律。说白了就是:火箭怎么转的?

1.3.1 角速度与欧拉角速率的关系

火箭的角速度ωb是在箭体系下测量的。而欧拉角速率是ψ̇、θ̇、γ̇。它们之间有一个转换关系:

[ω_x]   [1   0       -sinθ   ] [γ̇]
[ω_y] = [0   cosγ    sinγ·cosθ] [θ̇]
[ω_z]   [0  -sinγ    cosγ·cosθ] [ψ̇]

这个公式看着复杂,其实原理很简单:把欧拉角速率投影到箭体系上。我在做仿真时,经常用这个公式反算——给定角速度,求欧拉角变化率。

关键点:当θ接近±90°时,矩阵中的cosθ接近0,导致ψ̇和γ̇的系数变得很大。这就是欧拉角奇异问题的数学本质。级间分离时,如果火箭俯仰角接近90°,建议切换到四元数。

1.3.2 运动学方程的积分形式

实际工程中,我们通常用数值积分来更新姿态。常用的方法是四阶龙格-库塔法。伪代码如下:

function update_attitude(ψ, θ, γ, ω, dt):
    # 计算欧拉角速率
    ψ̇ = (ω_y·sinγ + ω_z·cosγ) / cosθ
    θ̇ = ω_y·cosγ - ω_z·sinγ
    γ̇ = ω_x + (ω_y·sinγ + ω_z·cosγ)·tanθ
    
    # 更新欧拉角
    ψ_new = ψ + ψ̇·dt
    θ_new = θ + θ̇·dt
    γ_new = γ + γ̇·dt
    
    return ψ_new, θ_new, γ_new

嗯,这里要注意:当cosθ接近0时,ψ̇的计算会出问题。我建议在代码里加一个判断,如果|cosθ| < 1e-6,就改用四元数更新。

1.3.3 运动学方程在级间分离中的应用

级间分离时,火箭的姿态变化非常剧烈。分离瞬间,前级和后级会受到巨大的扰动力矩。这时候运动学方程的积分步长要足够小,否则姿态会发散。

我记得有一次做分离仿真,步长取了0.01秒,结果姿态角直接飞了。后来改成0.001秒,才稳定下来。你想想看,分离过程也就零点几秒,步长太大根本捕捉不到细节。

实用技巧:级间分离仿真中,我建议采用变步长积分。姿态变化剧烈时自动减小步长,平稳时增大步长。这样既保证精度,又节省计算时间。

1.4 本章知识体系

为了让大家更直观地理解本章的知识结构,我画了一张图:

坐标系与运动学基础 - 知识体系 常用坐标系 发射惯性系 O_I-X_IY_IZ_I 箭体系 O_b-X_bY_bZ_b 原点、轴向定义、右手系 姿态描述方法 欧拉角 (ψ, θ, γ) 方向余弦矩阵 C_I^b 3-2-1转序、奇异问题 运动学方程 角速度 → 欧拉角速率 数值积分更新姿态 龙格-库塔法、变步长积分 级间分离控制逻辑建模

这张图把本章的知识脉络理清楚了。从坐标系定义,到姿态描述,再到运动学方程,最后落到级间分离的应用上。每一步都是环环相扣的。

好了,这一章的内容就到这里。坐标系和运动学是后面所有内容的基础,一定要搞扎实。下一章我们开始讲动力学——火箭在分离过程中受到的力和力矩。到时候我会分享一些实际项目中的经验,敬请期待。


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