端点条件
端点条件定义转移设计中出发和到达必须满足的条件。
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 作为出发和到达条件