Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- uv (`curl -LsSf https://astral.sh/uv/install.sh | sh`)
{
"mcpServers": {
"code-core": {
"command": "uvx",
"args": [
"e2m2e"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 25, 2026e2m2e: Earth to Moon, Moon to Earth
e2m2e 是地月空间算法工具集,覆盖 CR3BP 任务轨道与轨道族、星历传播、转移设计、轨道保持、时空坐标转换、轨道库和地月空间分区分析。数值密集路径由 Rust 与 PyO3 扩展 e2m2e._integrators 承担,Python 侧负责问题构造、算法编排和接口边界。
调用方可以在进程内用 from e2m2e.api import Facade 直接调用,也可以用 e2m2e <工具名> 走 CLI,或经 e2m2e mcp-serve 在 MCP 客户端里使用同一套工具。GUI 通过 e2m2e serve-stdio 的 sidecar 协议接入。四条调用链共用同一份工具清单。工具名与参数模型以 tool_inventory(Facade()) 为准,MCP schema 和 CLI 参数都从请求模型生成。各调用链的配置见调用方式。
安装
用 uv 从 PyPI 安装:
uv pip install e2m2e
从源码开发:
git clone https://github.com/cislunarspace/CODE-core.git
cd CODE-core
make dev
make dev 同步 Python 依赖,下载 CSPICE 与星历内核,并用 maturin 构建 Rust 扩展。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
scoop install make
SPICE 星历内核不随包分发,默认内核在 GitHub Release 的 kernels-v1 中。make dev 会自动下载到 kernels/。从 PyPI 安装时,从该 Release 下载所需内核文件到任意目录,再用 SPICE_KERNEL_DIR 指向该目录。纯 CR3BP 的族生成与分区分析不需要内核,涉及星历的设计、传播与坐标转换需要。
快速开始
设计一条地月 L2 Halo 轨道。振幅 30000 km,预报 7 天:
from e2m2e.api import Facade
facade = Facade()
result = facade.design_orbit(
orbit_type="Halo",
collinear_point=2,
amplitude=30000.0,
epoch=[2024, 1, 1, 0, 0, 0.0],
duration=7.0 * 86400.0,
)
print(result.status, result.orbit_type)
print(result.initial_state)
design_orbit 返回 DesignOrbitResponse。status 是收敛状态,initial_state 是历元 GCRS 惯性系状态,单位 km、km/s,取星历修正后的首节点。states 与 times 才是无量纲会合系参考轨道。ephemeris 是标称星历数据,含 GCRS 位置、速度与会合系字段。需要更长弧段时增大 duration。这个例子需要 SPICE 内核,获取方式见安装一节。
能力范围
e2m2e 对外提供一套工具,按职责分给三个类:任务级入口 Facade、轨道库 Catalog、分区分析 Spatiography。进程内 API、CLI、MCP 与 GUI sidecar 共用这份工具面。以下按类介绍,完整清单与参数以 tool_inventory(Facade()) 为准。
任务级工具(Facade)
design_orbit:任务轨道设计。orbit_type覆盖 DRO、DPO、NRHO、HALO、LYAPUNOV、LISSAJOUS、AXIAL、RO、ELFO 冻结轨道,以及 L4、L5 三角平动点的 SPO、LPO、HORSESHOE 细分。含微分修正、多重打靶与延拓,全链路从 CR3BP 初猜经星历修正到高精度预报。control_orbit:轨道保持蒙特卡洛仿真。支持特征点、目标点严格、目标点宽松三种控制律,以及测定轨与推力误差仿真、角动量管理(姿态发动机联合控制)。名义轨道可由轨道库记录或星历对象接入,契约只保证NominalOrbit等间距状态表。Floquet 基与投影因子预计算不在本仓库范围内,原因见 .out-of-scope/nominal-orbit-floquet-precompute.md。transfer_design:转移轨道设计,覆盖脉冲、低能量、低推力和网格搜索四类方法。脉冲类含 Lambert 求解与 porkchop 扫描、Lawden 主矢量多脉冲优化、霍曼直接转移 HMN。低能量类含月球引力辅助 LGA、WSB 太阳引力辅助弹道捕获、不变流形与庞加莱截面拼接。低推力类用 Q-law 初猜加打靶或配点。网格搜索加非线性规划的两步法在 Rust 侧用 Rayon 并行。mission_architecture_search:行星际多借力链(MGA)网格搜索。每个转移段(leg)用 Lambert 求解,借力点按无动力飞越等模与近心点约束筛选,再用日心 Tisserand 参数诊断,返回前 N 个候选。low_thrust_preliminary:低推力转移预设计。用 Sims-Flanagan 多段中冲量直接法构造 NLP,SLSQP 求解并给出全解析雅可比。后端分二体 conic 与星历 n 体两档。orbit_propagation:轨道预报。Rust 积分内核支持状态转移矩阵传播与终端事件检测。spacetime_transform:时空坐标转换。支持 J2000、ITRF93(SPICE 高精度)、IAU 2006、GMAT 兼容的原生 ITRF,以及 VNB、LVLH 动态坐标轴。还支持 TDT+GCRS 与 TDB+EBCRS 的时空联合转换,后端为 r2s2,含相对论项。valid_ranges:查询design_orbit与族生成在各条件下的合法参数区间和离散选项。值域随包版本冻结。
轨道库(Catalog)
轨道库以 records/*.json + *.npz 为事实来源,catalog.db 只是可重建索引。
orbit_family_generation:轨道族生成,覆盖 HALO、NRHO、AXIAL、LISSAJOUS、SPO、LPO、HORSESHOE、DRO、RO 以及周期倍化的 FIGURE_EIGHT、RING。库开启时逐成员入库,可按family_id整族取回。catalog_query:多维过滤查询,返回摘要列表。catalog_get:按record_id取完整记录,含数组段与请求快照。catalog_tag:写入教学标签,整体替换原有标签。catalog_export:把查询子集打包导出,导出包可直接作为库打开。catalog_terminology:返回分类学标签图例、orbit_family闭值集与transfer_type闭值集,无参数。catalog_delete:按record_id删除记录,不可撤销。catalog_sweep:参数空间批量扫描入库,支持 Jacobi 能量窗口以及振幅、近月点高度网格。
分区分析(Spatiography)
spatiography_scales:分区解析尺度计算。spatiography_classify:分区区域分类。spatiography_interval_classify:带不确定度的区间化分区分类,输出可能区域与确定区域双标签。spatiography_boundaries:分区边界几何。spatiography_resonance_atlas:共振图集。spatiography_dynamical_map:六域两层天图。
数值内核与 SPICE
这一层供全部工具共用。
- Rust 积分器内核:单步 RK(PD45、PD78、RK89)、Adams 多步、Störmer–Cowell 二阶积分。支持状态转移矩阵传播与事件检测,事件语义含 terminal 与 direction。
- 动力学模型:CR3BP(快速设计)、星历 N 体(SPICE,精确外推)、含太阳解析摄动的 BCR4BP,以及三者之间的转换。
- 高精度力模型:点质量与第三体引力、球谐重力场(含固体潮)、ECOM 9 系数光压、大气阻力、太阳光压、连续推力。
- SPICE 星历与时间管理:内核加载、UTC、TDB、TAI 时间尺度、天体状态与帧旋转查询。
调用方式
进程内调用见快速开始。CLI 的每个工具对应一个子命令,工具名的下划线转连字符,例如 e2m2e design-orbit --help。
MCP 需要安装可选依赖:
uv pip install "e2m2e[mcp]"
在 MCP 客户端的 mcpServers 配置中注册服务器,下面是一个例子。command 指向安装了 e2m2e 的环境里的 e2m2e 可执行文件。cwd 指向仓库根时,服务器可以找到 kernels/ 下的星历内核。内核在别处时,用 env 设置 SPICE_KERNEL_DIR。
{
"mcpServers": {
"e2m2e": {
"command": "/path/to/venv/bin/e2m2e",
"args": ["mcp-serve"],
"cwd": "/path/to/CODE-core"
}
}
}
配置完成后,可以在客户端用自然语言发起任务,例如:
设计一条 L2 南族 NRHO,近月点高度 3000 km。
文档
在线文档包含教程、示例与 API 参考:https://cislunarspace.github.io/CODE-core/。教程走接口层暴露类,示例脚本走 algorithm 层细粒度 API。本地构建:
uv pip install sphinx myst-parser sphinx-autoapi shibuya
make docs
产物在 docs/_build/html/。文档构建不需要安装项目本体、Rust 或 SPICE。
设计决策记录见 docs/adr/,ADR 0043 起以中文书写,更早条目为英文历史存档。接口字段的权威描述在请求与响应模型的字段描述中,CLI --help 与 MCP schema 与之同源。
开发与验证
开发环境用 make dev 构建。交互式探索或性能基准可用 make dev-release。
make test # Rust workspace 与 Python 全量测试
make check # 格式、lint、类型与架构门禁
贡献
见 CONTRIBUTING.md。Issue 与 PR 的模板、标签、Project 流水线和正文写作约定都在那里。
引用
如果 e2m2e 对你的研究有帮助,请引用:
@software{e2m2e,
title = {e2m2e: Earth to Moon, Moon to Earth Transfer Orbit Design Library},
author = {ouyangjiahong},
email = {ouyangjiahong22@nudt.edu.cn},
url = {https://github.com/cislunarspace/CODE-core},
version = {5.9.11},
year = {2026},
}