星历转换:从 CR3BP 到真实星历
为什么要转换
CR3BP 假设地球月球做匀速圆运动、忽略太阳引力等摄动,因此算出的周期轨道 是理想化的。真实星历模型包含月球轨道偏心率、太阳引力、光压等摄动,轨道 不再是严格周期。任务设计最终需要在真实星历模型里有一条标称轨道(可 传播、可做轨道保持基准),这就需要把 CR3BP 初猜修正到星历模型。
轨道设计工具的工作流:
CR3BP 初猜(形状参数 → 微分修正收敛到周期轨道)
→ 星历修正(多重打靶,把初猜拟合到真实动力学)
→ 标称星历(跨整个传播时长,画布中为虚线)
修正方法
星历修正用多重打靶(multiple shooting):把整条轨道按拼接点 (patch points)分段,逐段在真实力模型中外推,再迭代修正各段初值使段间 位置、速度连续。软件支持的修正方法:
方法 |
说明 |
|---|---|
|
Rust 多重打靶的稳定轨道路径别名(与 |
|
Rust 多重打靶(稳定轨道默认路径)。e2m2e 5.8.0 起旧的 Python 两级修正实现已删除, |
|
分段打靶拼接:不稳定轨道专用,由算法对 Halo/NRHO/DPO 自动选用 |
为什么不稳定轨道(Halo/NRHO/DPO)必须走 segmented
two_level 的流程是修正 1 圈加自由外推。这里的 two_level 是稳定轨道路径的对外名称,不再表示已删除的旧 Python 两级实现。对稳定轨道(DRO 等)这没有
问题;但对不稳定轨道,每圈 STM(状态转移矩阵)可达 1e7 量级,1 圈外的
外推必然发散,自由外推几圈后轨迹就不知去向。
segmented 全程分段打靶:每一段都约束在真实动力学上,段间只要求连续性,
不依赖外推 1 圈仍贴轨道的假设,因此对不稳定轨道收敛。e2m2e 5.6.5 起
design_orbit 对 Halo/NRHO 自动重定向 segmented,5.8.1 起 DPO 同属此列,用户不需要手选,
面板上的 correction_method 只决定稳定轨道路径。
修正质量
修正完成后,工具返回两组诊断:
收敛残差:多重打靶牛顿迭代的解范数残差,反映迭代是否收敛;
连续性误差:修正完成后逐段重新传播,比较传播终点与目标拼接点的 物理位置偏差,反映修正后轨迹在真实动力学中的连续性。
轨道设计结果 JSON 中的 correction_converged / correction_iterations
即收敛状态与迭代次数;位置连续性容差默认对齐 e2m2e 的
CORRECTION_TOL_KM(2e-2 km)。
已知的模型限制
参考历元:转换必须由用户显式提供起始历元(
epoch)。相同输入在 不同历元下可能得到不同星历结果(月球位置不同)。大幅 DRO 的长期漂移:e2m2e 5.6.x 修复了大幅 DRO 星历发散问题 (速度残差加权),但大幅 DRO 在真实星历中仍有数万 km 量级的准周期 漂移,这是真实动力学特性,不是 bug,由轨道保持处理。
Lissajous:CR3BP 初猜经中心流形约化生成多点有界参考轨迹,修正到 星历后保持有界。
NRHO:e2m2e 5.7.3 起与 Halo 解耦采样策略,默认等时间拼接点 + 1 圈/段(上游 #473),GUI 默认量级(L2 南、近月高 5000 km、约 1 个月) segmented 约数十秒收敛;删近月点采样保留为对照工具。产物含标称星历, 可作轨道保持输入。圈间漂移仍是星历下固有准周期特征,由轨道保持处理。