太空中的数学:火箭如何规划并修正飞行轨迹

作者:KAKAKA2026.11.13 03:45浏览量:0

简介:本文用入轨、变轨和飞往月球三个场景,讲解轨道力学、微分方程、制导导航与卡尔曼滤波在火箭飞行规划中的作用。读者将学会搭建简化的轨道数值模拟,计算入轨速度与霍曼转移速度增量,并掌握验证结果和排查误差的基本思路。

教程目标

本教程要帮助读者完成一个简化的火箭轨道模拟。完成后,读者应能做到三件事:用牛顿万有引力定律描述火箭的运动,计算近地轨道所需的速度与逃逸速度,并用霍曼转移估算从一个轨道转移到另一个轨道的燃料代价。教程还会说明,实际飞行中如何用卡尔曼滤波估计位置与速度,以及如何用反馈控制修正偏差。

教程不涉及任何具体飞行器的内部参数,所有模型均为教学用途的通用简化模型,结果用于理解原理和验证方法,不能直接用于真实飞行决策。

适用读者与场景

本教程适合以下读者:

  • 初学航天或轨道动力学的开发者和工程专业学生,希望把公式转化为可运行的程序。
  • 从事仿真、控制或数据融合工作的工程师,希望了解状态估计与控制在轨道问题中的位置。
  • 技术负责人或项目管理者,希望建立“为什么要用数学来规划飞行”的整体认识。

适用场景包括:课程实验、仿真原型搭建、算法教学和技术评审前的概念验证。

前置准备

在开始之前,需要准备以下内容。

  1. 基础数学知识:熟悉向量运算、一阶与二阶常微分方程,并理解导数的物理意义。
  2. 基础物理知识:了解牛顿第二定律和万有引力定律。
  3. 编程环境:任意支持数值计算与矩阵运算的通用编程语言即可。
  4. 计算单位约定:本教程统一使用千米(km)和秒(s)。单位一旦混用,后续所有结果都会出错,因此第一步就要确定单位。

第一步:理解重力如何决定轨道形状

火箭在地球附近受到的主要作用力是地球引力。引力指向地心,大小与距离的平方成反比。因此,火箭在飞行中并不沿直线运动,而是持续受到向地心的加速度,运动轨迹会弯曲。

如果火箭的水平速度足够大,它下落的同时,地球表面也在“弯走”,火箭就会一直绕着地球运动,形成轨道。轨道的形状由速度大小和方向共同决定:

  • 速度较低,轨道与地面相交,火箭会落回地面。
  • 速度约为近地圆轨道速度,轨道接近圆形,火箭进入稳定轨道。
  • 速度增大但仍低于逃逸速度,轨道变为椭圆,火箭绕地运动但远地点更远。
  • 速度达到或超过逃逸速度,火箭不再被束缚,将飞向深空。

理解这一点是后续所有计算的基础。发射任务的核心问题,是如何在合适的位置把速度调整到合适的大小和方向。

第二步:建立坐标系与运动方程

用三维位置向量 r 和速度向量 v 描述火箭状态。以地心为原点,地球引力加速度可写为:

a = -μ · r / |r|^3

其中 μ = G·M 是中心天体的引力参数,地球的 μ 约为 398600 km^3/s^2。这个式子说明加速度方向指向地心,大小与距离的平方成反比。

把它写成一阶微分方程组,便于数值求解:

  1. state = [x, y, z, vx, vy, vz]
  2. d(state)/dt = [vx, vy, vz, ax, ay, az]
  3. 其中 (ax, ay, az) = -μ · (x, y, z) / (x²+y²+z²)^(3/2)

注意事项:如果发动机推力参与模拟,还需在加速度中加入推力项除以质量。教学模型可以先忽略推力,只模拟自由飞行段,这样更容易检验程序是否正确。

第三步:用数值积分求解轨道

上述微分方程通常没有简单的解析解,需要用数值积分方法逐步推进。常用的做法是固定步长的四阶龙格-库塔法(RK4)。

  1. function step(state, dt):
  2. k1 = f(state)
  3. k2 = f(state + dt/2 * k1)
  4. k3 = f(state + dt/2 * k2)
  5. k4 = f(state + dt * k3)
  6. return state + dt/6 * (k1 + 2*k2 + 2*k3 + k4)
  7. for t in range(0, T_end, dt):
  8. state = step(state, dt)
  9. record(t, state)

其中 f 为第二步得到的导数函数。步长 dt 决定精度与计算量。对于近地轨道,几十秒量级的步长通常能得到稳定结果。步长过大时,轨道会出现能量漂移,这一点会在验证环节体现。

第四步:计算圆轨道速度与逃逸速度

这一步用公式得到两个关键速度,并与模拟结果对照。

圆轨道速度:v_circ = sqrt(μ / r)

逃逸速度:v_esc = sqrt(2μ / r)

以地球半径 6371 km 加上 200 km 高度计算,r 约为 6571 km,可得 v_circ 约为 7.8 km/s,v_esc 约为 11.0 km/s。这说明近地轨道水平速度约 7.8 km/s 是进入稳定圆轨道的基准值。速度低于该值,轨道会与地面相交;速度明显高于该值但低于逃逸速度,轨道变为椭圆;超过逃逸速度,火箭将脱离地球引力束缚。

在程序中,可以用轨道能量判断轨道类型:

  1. energy = v²/2 - μ/r
  2. energy < 0 -> 束缚轨道(圆或椭圆)
  3. energy = 0 -> 抛物线轨道(临界逃逸)
  4. energy > 0 -> 双曲线轨道(脱离)

第五步:计算霍曼转移的速度增量

霍曼转移是两圆轨道、共面条件下的双脉冲转移方法,常用于估算从低轨道转移到更高轨道所需的燃料。其基本思路是:在起始圆轨道上加速一次,形成一个与目标轨道相切的椭圆;到达远地点后再加速一次,使轨道变圆。

设起始圆轨道半径为 r1,目标圆轨道半径为 r2,转移椭圆的半长轴为 a = (r1 + r2) / 2。

第一次加速量:

Δv1 = sqrt(μ/r1) · ( sqrt(2·r2 / (r1+r2)) - 1 )

第二次加速量:

Δv2 = sqrt(μ/r2) · ( 1 - sqrt(2·r1 / (r1+r2)) )

总速度增量为 Δv = Δv1 + Δv2。转移时间为半个椭圆周期:

t_transfer = π · sqrt(a³ / μ)

以近地轨道(约 6571 km)转移到地球同步轨道半径(约 42164 km)为例,总速度增量约为 3.9 km/s,转移时间约为 5.3 小时。读者可以用程序复算,并与该数值比较。

这里需要说明:霍曼转移是理想化的教学模型,忽略了月球引力等其他天体影响。早期载人登月任务的实际轨迹使用了更复杂的规划方法,但霍曼转移提供了理解“最省燃料”思路的起点:在满足起止条件的前提下,选择速度增量最小的转移路径。

第六步:加入测量误差与卡尔曼滤波

真实飞行中,传感器的测量值含有噪声,模型本身也存在误差。卡尔曼滤波的作用,是把模型预测与测量值结合起来,得到比单独使用任何一方都更可靠的状态估计。

滤波器每个时刻包含两步:预测和更新。

  1. 初始化: x_hat = 初始状态估计
  2. P = 初始协方差
  3. Q = 过程噪声协方差
  4. R = 测量噪声协方差
  5. 对每个时刻 k:
  6. # 预测
  7. x_pred = F · x_hat
  8. P_pred = F · P · F^T + Q
  9. # 更新
  10. K = P_pred · H^T · (H · P_pred · H^T + R)^(-1)
  11. x_hat = x_pred + K · (z_k - H · x_pred)
  12. P = (I - K · H) · P_pred

其中 F 为状态转移矩阵,H 为测量矩阵,z_k 为第 k 时刻的测量值,K 为卡尔曼增益。卡尔曼增益决定了更相信模型还是更相信测量:Q 越大越相信测量,R 越大越相信模型。

第七步:用反馈控制修正偏差

导航的第三个环节是控制。火箭在飞行中会根据估计状态与目标状态之间的误差调整姿态和推力,形成闭环反馈。

一个简化的比例-微分控制可以写为:

  1. error = target_state - x_hat
  2. command = Kp * error + Kd * d(error)/dt
  3. command = saturate(command, max_limit)

其中 Kp 决定对偏差的响应强度,Kd 用于抑制振荡。命令需要加入饱和限制,因为实际推力和姿态调整能力都有上限。增益选择不当会导致两种典型问题:增益过小,修正缓慢,偏差长时间存在;增益过大,系统来回振荡甚至发散。

结果验证

完成上述步骤后,可以通过以下方法判断程序是否正确。

  1. 能量守恒检验:在无推力的自由飞行段,计算轨道能量和角动量。两者应基本保持不变。若能量持续漂移,多半是步长过大或积分方法有问题。
  2. 圆轨道检验:设定 v_circ 作为初速度,模拟一圈后火箭应回到出发点附近,半径变化应接近零。
  3. 周期检验:椭圆轨道周期应与 T = 2π·sqrt(a³/μ) 一致。
  4. 霍曼转移检验:在转移时间处,火箭的半径应接近 r2,并且两次加速后的速度应与圆轨道速度相匹配。
  5. 滤波检验:卡尔曼滤波的残差(测量值与预测值之差