Skip to content

Latest commit

 

History

84 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Satellite: 星际轨道设计与数值验证

Satellite 是一个地月借力与近日轨道设计项目。它从近地停泊轨道出发,搜索经月球引力辅助到达 0.3 AU 近日点的轨迹,并用 JPL Horizons 历表、N 体积分和独立基线检查数值结果。

项目源于钱学森《星际航行概论》相关课程研究。仓库实现了拼接圆锥初值、Velocity-Verlet N 体传播、月球借力模型、发射窗口搜索、灵敏度分析和轨迹可视化。每项关键数值结论都对应回归测试、收敛性检查或可复现的结果文件。

快速运行

需要 Python 3.10+。核心数值流程使用 NumPy、SciPy、Matplotlib 和 Astroquery:

python -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt

make compile
python -m unittest src.tests.test_event_semantics

make validate 会运行 M1 至 M8 的完整回归验证,约需十分钟。部分审计目标还依赖 data/results/ 中的归档输出。JPL Horizons 查询需要网络;仓库保留了一份固定历表缓存,用于复现主要结果。

任务约束

关键技术指标

参数 目标值
近地停泊轨道高度 0.1 R_Earth (637 km)
设计近日距 0.3 AU
近月距 R_Moon + 500 km
飞行时间 < 2 年
再入速度 < 15 km/s

项目结构

FinalProject/
├── report.tex
├── Makefile
├── README.md
├── AI-Agent.md
├── src/
└── data/

八个里程碑 (Milestones)

M1 — 拼接圆锥曲线 (Patched Conic) [done]

  • 近日距到日心轨道根数的解析计算
  • 与钱学森 r_p=0.2 AU 算例偏差 0.08%(< 0.1%)

M2 — N 体 Velocity-Verlet 积分器 [done]

  • 支持 N 体系统(日-地-月-探测器)
  • 二体圆轨道基准:位置误差 8.27e-5(< 1e-4),能量漂移 < 5e-15

M3 — JPL Horizons 历表对照 [model hierarchy]

  • 同一定义、同一采样下的保真度递进链
  • SEM_3body(基线):天文 5912 km,通过 6000 km 阈值
  • SEM+Jupiter+Venus_5body:实际积分,残差 1401 km(改善 76.3%)
  • SEM_full_planetary(10 体):残差仅 126 km(改善 97.9%)
  • 证明 3-body 残差主要由省略大行星摄动(木星)引起,非数值误差
  • 详见 data/results/m3_model_hierarchy.json

M4 — 月球借力分析 [done-with-local-validation]

  • 双曲线偏折解析公式
  • 四体数值仿真(含 SOI 入口/出口跟踪)
  • 60 组参数扫描(6 r_m × 5 v_inf × 2 side),中位角度误差 0.04°
  • 月心局部二体数值验证——不是完整任务级 N-body swing-by

M5 — 单点轨道求解器 [done]

  • 六段式求解流程 (S1–S6)
  • Moon-aligned 前向搜索实现月球拦截
  • 合法 formal 锚点:MJD 61065.0(2026-01-25),trailing,r_m=1837.4 km
  • 返回地球距离 446,151 km,return_vinf=10.5173 km/s
  • 正式三段预算:lunar 15.5845 km/s,same-date no-lunar DSM 25.5940 km/s
  • 当前正式 fixed-date saving ratio:39.11%
  • 补充诊断:vinf_basis saving ratio 仍为 50.85%,但不再作为 formal budget
  • 这是当前保留的正式 same-date 节能结论
  • 详见 data/results/m5_best_lunar_candidate_verify.json 和 m5_fixed_date_current_compare.json

M6 — 发射窗口优化 [done]

  • 已完成 2026 全年合法窗口 coarse+local-refine 搜索
  • derived legal-window search:900 个候选,95 个 valid complete return,71 个 fair return
  • 当前最佳 legal-window candidate:MJD 61389.0(2026-12-15),trailing,r_m=9737.4 km
  • derived / independent 两条搜索链都回收到同一组 t0/side/r_m
  • derived / independent 搜索摘要返回距离约 5.04e4 km,return_vinf≈11.226 km/s,formal total dv=15.1801 km/s
  • 补充诊断:该窗口的 total_vinf_basis 约为 10.1213 km/s
  • 当前应将它理解为“最佳 legal-window 搜索候选”;单点 replay 仍有明显步长/事件搜索敏感性,因此不应写成强于 fixed-date formal anchor 的最终 formal 结果

M7 — 灵敏度分析 + 步长收敛 [done]

  • 当前 full Monte Carlo 围绕合法 fixed-date anchor(MJD 61065.0)运行
  • Full Monte Carlo:N=200,valid=101,invalid=99,timeout=0
  • formal return_vinf 只在真实 Earth-return event 上定义,旧伪 ~79 km/s 已阻断
  • valid-only return_vinf mean / p50 / p95 = 10.8047 / 10.7706 / 11.3542 km/s
  • 补充诊断:valid-only total_vinf_basis mean / p50 / p95 = 10.2299 / 10.1479 / 10.3455 km/s
  • 围绕当前 legal-window candidate(61389.0 / trailing / 9737.4)的局部灵敏度重算:75 组物理传播、165 个 valid return、100 个 fair;baseline fair fraction=0.0,结论为 fragile
  • 4 级步长收敛(3600/1800/900/450s):能量漂移保持二阶收敛,但任务级返回判定强烈依赖步长,1800s 与 900s 才给出有效 Earth-return,3600s 与 450s 均失效

M8 — 可视化 [done-with-caveat]

  • 当前提交物可直接引用 8 张静态图(轨迹、借力、窗口、灵敏度、能量漂移、日期曲线、等值线、Horizons 残差)
  • 所有图片由 make figures 生成
  • 详见 figure_manifest.json

O3 — 自定义微分修正器 [done-with-caveat]

  • 从 1-param angle 升级为多参数 damped Gauss-Newton(2-param: angle + scale)
  • 审计发现目标泄漏 bug 并修复;改善约 4×(离收敛尚远)
  • 框架完整(无 scipy,Jacobian, line search, Tikhonov, multi-start)
  • 文件:src/experiments/o3_differential_corrector.py;运行:make o3

O3+ — 矢量微分修正器 [done]

  • 直接 delta_v 速度修正 + Levenberg-Marquardt 阻尼(无 scipy)
  • 3-param: delta_vx, delta_vy, tof_shift_days
  • 74.59× 改善,最终偏差 66,210 km < 100,000 km 阈值
  • 11 个多起点,5/11 useful(改善 ≥ 10×)
  • dv_norm=1.22 km/s,速度残差合理(22.1 km/s)
  • 文件:src/experiments/o3plus_vector_differential_corrector.py;运行:make o3plus

O4 — 多次借力链搜索 [frozen exploratory]

  • Earth-Moon-Venus-Earth patched-conic 链搜索
  • Venus 历表:analytic circular fallback(无网络时离线可用)
  • 三段 Lambert:地球出发→月球→金星→地球返回
  • O4 已冻结(commit 18fa865),不覆盖

O4+ — 多次借力优化器 [done; no feasible powered candidate found]

  • 在 O4 的 Lambert 链基础上允许 powered flyby residual(Moon/Venus 小速度脉冲)
  • 两阶段优化:粗网格 19200 组合 + pattern search 精修
  • 142 个 Lambert 成功候选,0 个 feasible_powered
  • 确认 O4 结论:Earth-Moon-Venus-Earth 链即使允许 powered flyby residual 也难以实现
  • O4+ 不覆盖 O4,是独立增强任务
  • 文件:src/experiments/o4plus_powered_mga_optimizer.py;运行:make o4plus
  • Earth-Moon-Venus-Earth patched-conic 链搜索
  • Venus 历表:analytic circular fallback(无网络时离线可用)
  • 三段 Lambert:地球出发→月球→金星→地球返回
  • 含飞越可行性判断(required-turn vs available-turn at min periapsis)
  • ~8400 条链路组合中 98 条三段 Lambert 成功收敛(保留候选)
  • 主要限制:月球在高 v_inf(~10 km/s)下最大偏转角仅 ~3°,限制链可行性
  • 文件:src/experiments/o4_ephemeris_extend.py、o4_multi_gravity_assist.py

O7 — 并行扫描与代理预筛选 [done]

  • ProcessPoolExecutor batching 替代 ThreadPoolExecutor(旧方案 GIL 限制,仅 0.56×)
  • 55 天测试集:平均 3.78× 加速比(3 次重复基准,55/55 结果一致)
  • Ridge 回归代理预筛选器(无 sklearn 依赖,闭式解实现)
  • 6 个几何特征预测实现近日距,R²=0.8956,MAE=0.059 AU
  • Top-15 召回率 33.3% — 可捕捉趋势但不可替代物理 N 体扫描
  • 文件:src/experiments/o7_worker.py、o7_parallel_scan.py、o7_surrogate_prefilter.py
  • 运行:make o7-parallel / make o7-surrogate

Diagnostics (do not replace M1-M8)

  • make delta-v-audit: Unified Δv budget classification and comparison to Qian 33.4
  • make m5-global-baseline: Broader no-lunar baseline search (supports existing M5 caveat)
  • make m6-pareto: Pareto trade-off analysis for launch windows
  • make polish-diagnostics: Run all three
  • Files: src/delta_v_budget.py, src/experiments/m5_global_no_lunar_baseline.py, src/experiments/m6_pareto_window_diagnostic.py

快速开始

环境要求

  • Python 3.10+
  • numpy
  • matplotlib(M8 可视化需要)
  • astroquery + astropy(JPL Horizons 查询)
  • xelatex(PDF 编译)

完整构建(make all)

make all     # compile → m3 → figures → animation → m5 baselines → pdf

常用命令

make compile      # 语法检查
make validate     # 全部回归测试
make figures      # 生成全部图表
make pdf          # 编译 report.pdf
make main-task-export  # 导出主任务 JSON/CSV 摘要
make m5-legal-window-daily-scan   # 2026 全年逐日合法发射窗扫描
make m6-legal-window-daily-verify # 对逐日扫描前列候选做高精度独立复核
make audit        # 安全审计 + 图表完整性检查
make clean        # 清理生成物

主任务机器可读输出:

make main-task-export

输出文件:

  • data/results/main_task_result.json
  • data/results/main_task_trajectory.csv

年度窗口强化输出:

make m5-legal-window-daily-scan
make m6-legal-window-daily-verify

输出文件:

  • data/results/m5_legal_window_daily_scan.json
  • data/results/m5_legal_window_daily_scan.csv
  • data/results/m6_legal_window_daily_verify.json
  • data/results/m6_legal_window_daily_verify.csv

这两步是 Rule 19/20/21/22 的强化工作流。第一步做 2026 年 365 天显式覆盖;第二步不直接复用存档行,而是从参数重新传播并验证前列年度候选。两步都支持 JSONL 断点续跑和终端进度条。

生成全部回归测试

make validate

这将依次运行 m1 到 m8 的回归测试。

运行单个里程碑测试

make m1   # 拼接圆锥曲线
make m2   # N 体积分器
make m3   # JPL 历表对照
make m4   # 月球借力
make m5   # 单点轨道求解
make m6   # 发射窗口优化
make m7   # 灵敏度分析
make m8   # 可视化

动画输出(已包含在 make all 中)

make animation    # 依赖 figures,生成 45 秒 MP4 + 4 张关键帧
  • 输出 MP4:build/orbit_animation.mp4(若 ffmpeg/H.264 可用)
  • 降级输出:build/orbit_animation.gif(若 ffmpeg 不可用)
  • 关键帧:data/results/animation_keyframe_*.png
  • 轨迹缓存:data/results/animation_trajectory.json
  • MP4/GIF 不进入 Git(build/ 已 gitignore)

物理模型

坐标系

  • 主计算: SSB 惯性系(N 体积分在此进行)
  • 残差对比: 日心相对坐标(事后变换,非拟合)
  • 显示: J2000 黄道平面(二维投影)
  • 参考系转换统一由 src/frames.py 管理

引力模型

3 体系统:太阳、地球、月球(火箭作为 test particle,GM=0)

积分方法

Velocity-Verlet 算法:

  • 主步长 DT_MAIN = 3600 s
  • 细化步长 DT_REFINE = 60 s

动力学引擎支持 SSB 惯性系和日心相对坐标(含 indirect term),见 src/dynamics.py。

M3 参考系统一

SSB 惯性积分 → 日心系残差对比,消除因省略大行星摄动导致的共同漂移。 这一方法在 ablation 实验(E3/E4)中验证与日心相对坐标积分(E6)等价。

安全说明

config/proxy.ini 包含 JPL 代理凭据,已被 .gitignore 排除。 运行 make audit 可自动检查是否有凭据泄露。


结果摘要

当前正式 fixed-date 结果(合法 2026 发射窗)

参数 值
发射日期 2026-01-25(MJD 61065.0)
发射超速 10.1213 km/s
表面发射等效速度 15.0809 km/s
实现近日距 0.274959 AU
返回地球距离 446,151 km
返回 v_inf 10.5173 km/s
飞行总时间 96.12 天

同日 no-lunar 对比

  • formal budget basis: three_segment_formal = dv_launch + dv_lunar_residual_or_dsm + dv_reentry
  • lunar formal total_dv: 15.5845 km/s
  • no-lunar DSM formal total_dv: 25.5940 km/s
  • formal saving ratio: 39.11%
  • supplementary vinf_basis ratio: 50.85%
  • 该比较仅在相同 t0、相同 formal budget basis、均满足真实 Earth-return event 时成立

已知局限

  • M3 是 same-source propagation check,不是独立 JPL 预测精度证明
  • M4 数值验证为局部月心二体/局部任务参数对照,非完整任务级 high-fidelity swingby
  • M6 当前已完成合法窗口 coarse+local-refine 搜索,并由独立搜索链支持当前最佳候选;但它仍是有限分辨率 search candidate,且单点 replay 具有明显敏感性
  • M7 full MC 当前结果为 101 valid / 99 invalid / 0 timeout,它支撑的是 61065 fixed-date formal anchor 周边的鲁棒性,而不是 61389.0 年度最佳窗口周边的最终鲁棒性
  • 动画(O5)优先生成 MP4,若 ffmpeg/H.264 不可用会 fallback 到 GIF
  • O7 代理预筛选:Ridge 回归 R²=0.8956,几何特征仅能捕捉整体趋势,top-15 recall=33%
  • O4 多次借力链搜索:有限的多体链可行性(analytic Venus 近似 + Moon 高 v_inf 偏转角不足限制链可行性)

参考

  1. 钱学森.《星际航行概论》. 科学出版社, 1963.
  2. JPL Horizons System: https://ssd.jpl.nasa.gov/horizons/
  3. Bate, R. R., Mueller, D. D., & White, J. E. Fundamentals of Astrodynamics. Dover, 1971.
  4. JPL ASTRODYN: https://ssd.jpl.nasa.gov/astro_glossary.html

About

Interplanetary trajectory design and numerical validation for an Earth-Moon gravity-assist mission.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages