端点条件

端点条件定义转移设计中出发和到达必须满足的条件。

TerminalCondition

TerminalCondition 是抽象基类,定义出发状态与到达状态的获取契约:

from e2m2e.algorithm.transfer.terminal import TerminalCondition

class TerminalCondition(ABC):
    def get_initial_state(self) -> np.ndarray:
        """返回出发状态 [x, y, z, vx, vy, vz]"""
        ...

    def get_arrival_state(
        self, t_ins: float, dynamics: CR3BP_Dynamics
    ) -> tuple[np.ndarray, np.ndarray]:
        """返回到达时刻的位置与速度,两个 (3,) 数组"""
        ...

OrbitTerminal

OrbitTerminal 位于某条 Orbit 上:

  • 出发状态取轨道首点

  • 到达状态通过动力学传播获取(dynamics 在调用 get_arrival_state 时传入)

构造函数只接收轨道对象;终端充当出发端还是到达端,由优化器装配时的位置决定。

from e2m2e.algorithm.transfer.terminal import OrbitTerminal

departure = OrbitTerminal(dro_orbit)
arrival = OrbitTerminal(ro_orbit)

StateTerminal

StateTerminal 固定状态与时间:

  • 出发状态与到达状态均为固定值

  • 不依赖动力学传播

from e2m2e.algorithm.transfer.terminal import StateTerminal

departure = StateTerminal(state=np.array([r, 0, 0, 0, v, 0]), time=0.0)

与优化器的配合

端点条件通过 Transfer.set_orbit() 注入优化器:

from e2m2e.algorithm.transfer import Transfer

transfer = Transfer(dynamics)
transfer.set_orbit(start=dro_orbit, end=ro_orbit)

# 内部创建 OrbitTerminal 作为出发和到达条件