public class PrescribedAccelerationTransitionProfile extends RouteProfile
A profile defined by a simple incline used to connect two other profiles at different heights.
Unlike the StandardTransitionProfile
which includes cruising behavior, this profile has
a predefined thrust acceleration which defines the change in speeds along the route. The profile will
attempt to find an incline which connects the initial and final heights and then will accelerate along
the incline according to the prescribed acceleration. It will then update the next profile's initial speed.
If the next profile's speed is not configurable, this will produce the error status:
SpeedConfigurationStatus.FINAL_SPEED_UNMATCHED
in the ConnectionConfigurationResults
(get
).
For more information about error cases, see the remarks section.
To add this as a connection between two procedures, use a ProfileRouteConnection
with this profile
and simply add the connection between your procedures in the RoutePropagator
. The propagator will
override the default connection behavior to use this one only between the surrounding segments.
Since this is a transition profile, the initial and final conditions are usually specified by the surrounding procedures, except for the final speed which is determined by the initial speed and acceleration.
Note that this does not use the normal ProfileDynamics
used elsewhere and instead only specifies
the pitch accelerations and thrust acceleration. The pitch accelerations will define the curves used to connect
the surrounding procedures. If the pitch accelerations are too small, this can mean very large curves required
to connect the incline with the surrounding height rates and can cause this profile to be invalid if they grow
too large. In the event that the profile cannot connect, it will still try to produce a valid profile while
returning a SpeedConfigurationStatus.VIOLATES_PROFILE_DYNAMICS
status to indicate that the acceleration
was too extreme to connect the surrounding profiles.
There are several cases which can cause errors in this profile. Primarily, if the PitchUpAcceleration
(get
/ set
)
or PushOverAcceleration
(get
/ set
) are too small compared to the resulting final speed, this will cause the
effective pitch radius to be too large and will limit the amount of space available for the incline. If the final
pitch radius is such that a connection is infeasible, the profile will attempt to update the next profile's initial
height rate to compensate. If it can't update the next profile, it will return an error in the
ConnectionConfigurationResults
(get
). In addition, if specifying a negative acceleration,
cases where the motion decelerates to zero before reaching the end of the segment will cause the profile to adjust
the acceleration to decelerate to a surface speed of zero and returns an error (SpeedConfigurationStatus.VIOLATES_PROFILE_DYNAMICS
)
indicating that the profile violates the specified acceleration.
To avoid problems with the pitch maneuvers, setting the previous and next profiles to be at the same height will
simplify the acceleration profile, since no pitch maneuvers will be required. In this case, this profile acts like
a ConstantHeightProfile
except that instead of specifying an initial and final speed to determine acceleration,
this specifies an initial speed and acceleration to determine the final speed.
Constructor and Description |
---|
PrescribedAccelerationTransitionProfile()
Create a new instance.
|
PrescribedAccelerationTransitionProfile(double thrustAcceleration,
double pitchUpAcceleration,
double pushOverAcceleration,
double initialSpeed,
TerrainProvider heightReference)
Create a new instance based on the given platform properties.
|
PrescribedAccelerationTransitionProfile(double thrustAcceleration,
double pitchUpAcceleration,
double pushOverAcceleration,
ProfileSpeed initialSpeed,
double initialHeight,
double initialHeightRate,
double finalHeight,
double finalHeightRate,
TerrainProvider heightReference)
Create a new instance based on the given parameters to completely define the incline.
|
Modifier and Type | Method and Description |
---|---|
ConfigurableProfile |
createConfigurableProfile(SurfaceSegment surfacePath)
Create a profile based on the given settings that the
RoutePropagator can
use to configure this profile in relation to all other profiles along the route. |
boolean |
getAllowModificationOfFinalHeight()
|
boolean |
getAllowModificationOfInitialHeight()
|
boolean |
getAllowModificationOfInitialSpeed()
|
double |
getFinalHeight()
Gets the final height of the incline with respect to the surface path, in meters.
|
double |
getFinalHeightRate()
Gets the final vertical velocity, in meters per second.
|
TerrainProvider |
getHeightReferenceSurface()
Gets the reference surface above which the height is defined.
|
double |
getInitialHeight()
Gets the initial height of the incline with respect to the surface path, in meters.
|
double |
getInitialHeightRate()
Gets the initial vertical velocity, in meters per second.
|
ProfileSpeed |
getInitialSpeed()
Gets the initial speed at the beginning of the profile.
|
double |
getPitchUpAcceleration()
Gets the (vertical) acceleration used to pitch up when climbing, in meters per second squared.
|
double |
getPushOverAcceleration()
Gets the (vertical) acceleration used to pitch down when leveling out, in meters per second squared.
|
double |
getThrustAcceleration()
Gets the acceleration to use when transitioning from the initial to the final speed.
|
void |
setAllowModificationOfFinalHeight(boolean value)
|
void |
setAllowModificationOfInitialHeight(boolean value)
|
void |
setAllowModificationOfInitialSpeed(boolean value)
|
void |
setFinalHeight(double value)
Sets the final height of the incline with respect to the surface path, in meters.
|
void |
setFinalHeightRate(double value)
Sets the final vertical velocity, in meters per second.
|
void |
setHeightReferenceSurface(TerrainProvider value)
Sets the reference surface above which the height is defined.
|
void |
setInitialHeight(double value)
Sets the initial height of the incline with respect to the surface path, in meters.
|
void |
setInitialHeightRate(double value)
Sets the initial vertical velocity, in meters per second.
|
void |
setInitialSpeed(ProfileSpeed value)
Sets the initial speed at the beginning of the profile.
|
void |
setPitchUpAcceleration(double value)
Sets the (vertical) acceleration used to pitch up when climbing, in meters per second squared.
|
void |
setPushOverAcceleration(double value)
Sets the (vertical) acceleration used to pitch down when leveling out, in meters per second squared.
|
void |
setThrustAcceleration(double value)
Sets the acceleration to use when transitioning from the initial to the final speed.
|
public PrescribedAccelerationTransitionProfile()
ThrustAcceleration
(get
/ set
) of zero,
indicating that it will update the next profile based on the initial speed which will
be determined by the previous profile unless AllowModificationOfInitialSpeed
(get
/ set
) is
set to false. Similarly, the initial and final conditions for height will be determined by
the surrounding profiles unless the properties allowing them to change are set to false.
Also by default, the reference surface is set to the surface of the
EarthCentralBody
in the CentralBodiesFacet
.public PrescribedAccelerationTransitionProfile(double thrustAcceleration, double pitchUpAcceleration, double pushOverAcceleration, double initialSpeed, TerrainProvider heightReference)
pitchUpAcceleration
- The acceleration used to pitch up when climbing, in meters per seconds squared.pushOverAcceleration
- The acceleration used to pitch down when leveling out, in meters per seconds squared.thrustAcceleration
- The prescribed acceleration along the inclined flight path, in meters per second squared.initialSpeed
- The target initial speed at the start of the profile before any acceleration, in meters per second.heightReference
- The reference above which the height of this profile is defined.public PrescribedAccelerationTransitionProfile(double thrustAcceleration, double pitchUpAcceleration, double pushOverAcceleration, ProfileSpeed initialSpeed, double initialHeight, double initialHeightRate, double finalHeight, double finalHeightRate, TerrainProvider heightReference)
pitchUpAcceleration
- The acceleration used to pitch up when climbing, in meters per seconds squared.pushOverAcceleration
- The acceleration used to pitch down when leveling out, in meters per seconds squared.thrustAcceleration
- The prescribed acceleration along the inclined flight path, in meters per second squared.initialSpeed
- The initial speed at the start of the profile before any acceleration, in meters.initialHeight
- The fixed initial height of the incline with respect to the surface, in meters.initialHeightRate
- The initial rate of climb (or descent), in meters per second.finalHeight
- The fixed final height of the incline with respect to the surface, in meters.finalHeightRate
- The final rate of climb (or descent), in meters per second.heightReference
- The reference surface above which to define the incline.public final double getInitialHeight()
AllowModificationOfInitialHeight
(get
/ set
) is false, this height will be fixed during
the configuration. Otherwise, the surrounding profiles may modify it to configure the route.
Unlike the StandardTransitionProfile
or TerrainAvoidanceProfile
,
this profile will defer to the surrounding profiles and will not attempt to modify them.public final void setInitialHeight(double value)
AllowModificationOfInitialHeight
(get
/ set
) is false, this height will be fixed during
the configuration. Otherwise, the surrounding profiles may modify it to configure the route.
Unlike the StandardTransitionProfile
or TerrainAvoidanceProfile
,
this profile will defer to the surrounding profiles and will not attempt to modify them.public final double getFinalHeight()
AllowModificationOfFinalHeight
(get
/ set
) is false, this height will be fixed during
the configuration. Otherwise, the surrounding profiles may modify it to configure the route.
Unlike the StandardTransitionProfile
or TerrainAvoidanceProfile
,
this profile will defer to the surrounding profiles and will not attempt to modify them.public final void setFinalHeight(double value)
AllowModificationOfFinalHeight
(get
/ set
) is false, this height will be fixed during
the configuration. Otherwise, the surrounding profiles may modify it to configure the route.
Unlike the StandardTransitionProfile
or TerrainAvoidanceProfile
,
this profile will defer to the surrounding profiles and will not attempt to modify them.public final double getInitialHeightRate()
public final void setInitialHeightRate(double value)
public final double getFinalHeightRate()
public final void setFinalHeightRate(double value)
public final boolean getAllowModificationOfInitialHeight()
public final void setAllowModificationOfInitialHeight(boolean value)
public final boolean getAllowModificationOfFinalHeight()
public final void setAllowModificationOfFinalHeight(boolean value)
public final TerrainProvider getHeightReferenceSurface()
public final void setHeightReferenceSurface(TerrainProvider value)
public final double getPitchUpAcceleration()
Constants.EarthSurfaceGravity
.
If the ThrustAcceleration
(get
/ set
) is such that the final velocity becomes very large,
that may cause certain inclined profiles to become invalid due to the time and distance spent
to execute pitching maneuvers to achieve the initial or final height rates. To remedy this,
make sure your pitch accelerations are sufficient to handle the rapid changes required.
For instance, missiles with attitude control systems may have much higher pitch rates than
aircraft depending on aerodynamic control surfaces.public final void setPitchUpAcceleration(double value)
Constants.EarthSurfaceGravity
.
If the ThrustAcceleration
(get
/ set
) is such that the final velocity becomes very large,
that may cause certain inclined profiles to become invalid due to the time and distance spent
to execute pitching maneuvers to achieve the initial or final height rates. To remedy this,
make sure your pitch accelerations are sufficient to handle the rapid changes required.
For instance, missiles with attitude control systems may have much higher pitch rates than
aircraft depending on aerodynamic control surfaces.public final double getPushOverAcceleration()
Constants.EarthSurfaceGravity
.
If the ThrustAcceleration
(get
/ set
) is such that the final velocity becomes very large,
that may cause certain inclined profiles to become invalid due to the time and distance spent
to execute pitching maneuvers to achieve the initial or final height rates. To remedy this,
make sure your pitch accelerations are sufficient to handle the rapid changes required.
For instance, missiles with attitude control systems may have much higher pitch rates than
aircraft depending on aerodynamic control surfaces.public final void setPushOverAcceleration(double value)
Constants.EarthSurfaceGravity
.
If the ThrustAcceleration
(get
/ set
) is such that the final velocity becomes very large,
that may cause certain inclined profiles to become invalid due to the time and distance spent
to execute pitching maneuvers to achieve the initial or final height rates. To remedy this,
make sure your pitch accelerations are sufficient to handle the rapid changes required.
For instance, missiles with attitude control systems may have much higher pitch rates than
aircraft depending on aerodynamic control surfaces.public final ProfileSpeed getInitialSpeed()
public final void setInitialSpeed(ProfileSpeed value)
public final boolean getAllowModificationOfInitialSpeed()
public final void setAllowModificationOfInitialSpeed(boolean value)
public final double getThrustAcceleration()
public final void setThrustAcceleration(double value)
public ConfigurableProfile createConfigurableProfile(SurfaceSegment surfacePath)
RoutePropagator
can
use to configure this profile in relation to all other profiles along the route.createConfigurableProfile
in class RouteProfile
surfacePath
- The surface path over which the profile is defined.RoutePropagator
to
configure the route.