public class ImpulseManeuver extends AbstractDetector<ImpulseManeuver>
该类实现了作为离散事件的冲量机动,可以提供给任何Propagator
。
当基础事件生成一个STOP
事件时,将触发机动,此时该类将生成一个RESET_STATE
事件(因此基础对象的停止事件被过滤掉)。在简单情况下,基础事件探测器可以是基本的日期事件
,但也可以是更复杂的近地点事件
,例如用于远地点机动。
机动由单个速度增量定义。如果未提供AttitudeProvider,则将使用航天器的当前姿态(由当前航天器状态定义)作为AttitudeProvider
,因此速度增量应在与用于构造将处理机动的传播器的SpacecraftState
相同的伪惯性框架中给出。如果提供了AttitudeProvider,则给定的速度增量应根据该提供者的考虑适当定义。因此,对于切向机动的典型情况是提供一个与速度增量相一致的LOF对齐
姿态提供者;例如,如果使用LOFType.VNC构造了LOF对齐姿态提供者,则应在VNC坐标中提供速度增量。
通过枚举Control3DVectorCostType
选择ΔV映射到质量消耗的范数。默认为欧几里得。
请注意,触发事件探测器在机动前后必须正常工作。例如,如果使用节点探测器触发倾角机动,并且机动将轨道更改为赤道轨道,则节点探测器将在机动后失败,无法在赤道轨道上找到节点!这是在验证过程中遇到的一个真实案例...
Propagator.addEventDetector(EventDetector)
DEFAULT_MAX_ITER, DEFAULT_MAXCHECK, DEFAULT_THRESHOLD
Modifier | Constructor and Description |
---|---|
protected |
ImpulseManeuver(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
具有完整参数的受保护构造函数。
|
|
ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp)
构建一个新实例。
|
|
ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
构建一个新实例。
|
|
ImpulseManeuver(EventDetector trigger, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp)
构建一个新实例。
|
Modifier and Type | Method and Description |
---|---|
protected ImpulseManeuver |
create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
构建一个新实例。
|
double |
g(SpacecraftState s)
计算切换函数的值。
|
AttitudeProvider |
getAttitudeOverride()
获取机动期间要使用的姿态提供者。
|
Control3DVectorCostType |
getControl3DVectorCostType()
获取控制向量的成本类型。
|
org.hipparchus.geometry.euclidean.threed.Vector3D |
getDeltaVSat()
获取卫星框架中的速度增量。
|
double |
getIsp()
获取比冲。
|
EventDetector |
getTrigger()
获取触发事件。
|
void |
init(SpacecraftState s0, AbsoluteDate t)
在传播开始时初始化事件处理程序。
|
getHandler, getMaxCheckInterval, getMaxIterationCount, getThreshold, isForward, withHandler, withMaxCheck, withMaxCheck, withMaxIter, withThreshold
public ImpulseManeuver(EventDetector trigger, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp)
trigger
- 触发事件
deltaVSat
- 卫星框架中的速度增量
isp
- 发动机比冲(秒)
public ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp)
trigger
- 触发事件
attitudeOverride
- 用于机动的姿态提供者
deltaVSat
- 卫星框架中的速度增量
isp
- 发动机比冲(秒)
public ImpulseManeuver(EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
trigger
- 触发事件
attitudeOverride
- 用于机动的姿态提供者
deltaVSat
- 卫星框架中的速度增量
isp
- 发动机比冲(秒)
control3DVectorCostType
- 质量消耗的增量范数
protected ImpulseManeuver(AdaptableInterval maxCheck, double threshold, int maxIter, EventHandler handler, EventDetector trigger, AttitudeProvider attitudeOverride, org.hipparchus.geometry.euclidean.threed.Vector3D deltaVSat, double isp, Control3DVectorCostType control3DVectorCostType)
此构造函数不是公共的,因为预期用户将使用各种withXxx()
方法的构建器API来设置实例,以便以可读的方式设置实例,而不使用大量参数。
maxCheck
- 最大检查间隔
threshold
- 收敛阈值(秒)
maxIter
- 事件时间搜索中的最大迭代次数
handler
- 在事件发生时调用的事件处理程序
trigger
- 触发事件
attitudeOverride
- 用于机动的姿态提供者
deltaVSat
- 卫星框架中的速度增量
isp
- 发动机比冲(秒)
control3DVectorCostType
- 质量消耗的增量范数
protected ImpulseManeuver create(AdaptableInterval newMaxCheck, double newThreshold, int newMaxIter, EventHandler newHandler)
create
在类中 AbstractDetector<ImpulseManeuver>
newMaxCheck
- 最大检查间隔(秒)
newThreshold
- 收敛阈值(秒)
newMaxIter
- 事件时间搜索中的最大迭代次数
newHandler
- 在事件发生时调用的事件处理程序
public void init(SpacecraftState s0, AbsoluteDate t)
此方法在传播开始时调用一次。如果需要,事件处理程序可以用于初始化一些内部数据。
默认实现不执行任何操作
此实现设置传播方向并初始化事件处理程序。如果子类重写此方法,则应调用super.init(s0, t)
。
init
在接口中 EventDetector
init
在类中 AbstractDetector<ImpulseManeuver>
s0
- 初始状态
t
- 集成的目标时间
public double g(SpacecraftState s)
g
在接口中 EventDetector
g
在类中 AbstractDetector<ImpulseManeuver>
s
- 当前状态信息:日期、运动学、姿态
public AttitudeProvider getAttitudeOverride()
public EventDetector getTrigger()
public org.hipparchus.geometry.euclidean.threed.Vector3D getDeltaVSat()
public double getIsp()
public Control3DVectorCostType getControl3DVectorCostType()
Copyright © 2002-2023 CS GROUP. All rights reserved.