|Top Previous Next|
FreeFlyer uses the Step command to propagate a GroundVehicle object forward or backward in time. A common usage, shown in the following image, is to enclose the Step command in a While loop, in order to repeat the propagation over some specified time period. The GroundVehicle.StepToEpoch() method can also be used to propagate the GroundVehicle to a user-specified epoch.
The Step command can be used the same way whether the GroundVehicle object uses a GroundHeading or GroundWaypoints propagator. If a GroundHeading propagator is used, the Step command will cause FreeFlyer to use the vehicle's location and surface velocity to calculate the state of the GroundVehicle based on the amount of time specified by the Step Size. If the GroundWaypoints propagator is used, the the Step command will cause FreeFlyer to step the GroundVehicle to the next waypoint based on the propagator's selected interpolation method.
Propagating the GroundVehicle Object
The GroundVehicle's state can be propagated using one of two propagator types. The first type is the Simple Motion model, which uses the vehicle's location and surface velocity as an input and propagates the state forward in time when the Step command is called. The second type is the Waypoints Motion model, which overwrites the GroundVehicle's initial state and instead updates the GroundVehicle's position to follow a series of waypoints when the GroundVehicle is stepped, interpolating between each as appropriate. The different approaches are covered below.
GroundVehicle Propagator GUI
A user can define a GroundVehicle object's propagator to use the "Simple Motion" model in FreeFlyer script as shown in the example below.
A user can define a GroundVehicle object's propagator to use the "Waypoints Motion" model in FreeFlyer script as shown in the example below.
After a user has set the GroundVehicle's propagator to use the "Waypoints Motion" model they can load any number of waypoints by providing the waypoint epoch, latitude, and longitude. The ability to add waypoints is only available via script as shown in the example below.
Note: When adding waypoints to a GroundVehicle using the AddWaypoints() method a user must ensure that all wapoints and epochs are inputted in monotonic order.
Setting the GroundVehicle Step Size
A user can define a GroundVehicle's step size by type casting the current propagator as shown in the example below.
If you have configured the GroundVehcicle object to use the "Waypoints Motion" model a user has the ability to control the interpolation method used when traversing from one waypoint to the next. The current methods available are the Step Function, Rhumb Line, or Geodesic interpolation. The Geodesic interpolation method is the default for the "Waypoints Motion" model propagator.
A different method can be configured for a GroundVehicle propagator by assigning the InterpolationMethod property.
Stepping the GroundVehicle
Once the GroundVehicle object's propagator has been defined, you can use the Step command to advance the GroundVehicle by the current propagator step size.
If a user wishes to sync the GroundVehicle's epoch with another object's epoch or wants to step to a specific epoch they must use the StepToEpoch() method.
Example: Using the Simple Motion Propagator to Step a GroundVehicle
In this example, the GroundVehicle is propagated for one hour on a westward heading at a constant speed.
Example: Using the Waypoints Motion Propagator to Step a GroundVehicle
In this example, the GroundVehicle is propagated for one hour to multiple waypoints. The system will automatically adjust the speed as necessary.