Release Notes for FreeFlyer 6.8

Top  Previous  Next

New Features in FreeFlyer 6.8


New Propagation and Modeling Capabilities

Improvements to Time System Conversions

oNew TimeUtilities object

Ability to add Regions and GroundStations to any central body

oGeneralized the GroundStationObservation, BRTSObservation, and TDRSObservation Orbit Determination models to support any combination of central bodies

Added Blockage Diagram Visualization and Analysis

Ability to calculate Vector / ThreeDModel intersections

Ability to reference the attitude of a Spacecraft to a custom CoordinateSystem

 

Output Enhancements

Ability to have multiple Console Windows

New Console object editor

oAllows users to customize options relating to the Console window

oGlobal instance of the Console always shown in the Object Browser

Improved plotting capabilities

oEnhanced the user controls for zooming and panning on plots

oImproved plot properties dialog

Added ability to set an unlimited tail length

Improved control over output window arrangement

oMove, resize, and tile output windows from FreeFlyer Script

 

FreeForm Script Improvements

Added a Matrix object which simplifies syntax for matrix calculations and allows the user to perform more advanced matrix analyses

Added ability to dynamically configure the Targeting sequence

Added a RandomNumberGenerator object

Added ability to seed random number generators

Added inverse hyberbolic trigonometric functions

Added smart indentation support to the FreeForm script editor

Added bracket highlighting to the FreeForm script editor

 

Enhanced User Support

Added ability to customize the layout and content of the Home Screen

oSet up widgets in User Preferences

New Sample Mission Plans

New syntax examples throughout Help File

 

Miscellaneous Enhancements

Added ability to use transactional queries with the DataBase object

 

 

Migrating to FreeFlyer 6.8


While we always strive to maintain 100% backwards compatibility in our new releases, our efforts to make FreeFlyer more flexible and consistent in FreeFlyer 6.8 and higher have necessitated a few changes which may require user intervention when migrating your existing Mission Plans. These changes are outlined below.

 

Various Objects, Properties, Methods, and Functions have been deprecated

 

Deprecated Objects, Properties, Methods, and Functions are elements of FreeFlyer which are no longer recommended for use. The description of each deprecated element indicates the new recommended way to achieve the functionality of that element. The complete list of affected elements is given on the Deprecated Objects, Properties, Methods, and Functions page.

 

Deprecated elements can still be used, but their use will cause FreeFlyer to generate a warning, and they will no longer appear in Script Auto Complete or work with Syntax Highlighting by default. You can turn off the warnings and re-enable Script Auto Complete and Syntax Highlighting for deprecated elements through the Deprecation Behavior page of the User Preferences dialog. Deprecated elements may be removed in future versions of FreeFlyer, so users are strongly encouraged to update their Mission Plans to use the recommended functionality.

 

Interval Methods now allow changing arguments

 

In FreeFlyer 6.7 and earlier, if the user attempted to change an argument passed to an Interval Method, FreeFlyer did not recognize that a change had been made. In FreeFlyer 6.8 and higher, interval methods can easily be used with Lists of objects. For example, you may want to loop through a List of GroundStations and report pass data between a Spacecraft and each GroundStation in the List, as shown in the example below. Each time the GroundStation argument passed to the PassData interval method is changed, FreeFlyer now keeps track of this internally as a new state. Note that the "without reset" keywords are used with the For statement, which is necessary so that the historical data tracked within the interval method is not reset at the start of each iteration of the For loop. This is explained in further detail on the Properties and Methods with a State page.

 

Variable i;

Spacecraft sc;

List<GroundStation> gsList;

 

gsList.Count = 3;

 

While (sc.ElapsedDays < 1);

 

     For i = 0 to gsList.Count-1 step 1 without reset;

 

           Report sc.PassData(gsList[i]) to "PassDataReport.txt";

 

     End;

 

     Step sc;

 

End;

 

Run "notepad.exe PassDataReport.txt";

 

The interval methods Spacecraft.PassData() and Spacecraft.CloseApproachRange() include information in their headers about the arguments that were passed to the method. Since interval methods now allow changing arguments, the headers for these two interval methods will always be reported, even when the user indicates that they want to report "without headers".

 

Properties and Methods with state used in Procedures will now reset when called inside a For loop

 

Properties and Methods with a state used inside Procedures will now reset between iterations of a For loop. The example below shows how the simple property with state Spacecraft.ElapsedDays will now reset inside the Procedure if called from a For loop. As noted in the example above, the "without reset" keywords can be used to prevent the states from being reset.

 

Define Procedure MethodWithStateTest(Spacecraft sc);

 

     Report sc.ElapsedDays;

 

EndProcedure;

 

Spacecraft sc;

Variable i;

 

While (sc.ElapsedDays < 1);

 

     For i = 0 to 0 step 1; // A simple For loop that will execute one time

 

           Call MethodWithStateTest(sc);

 

     End;

 

     Step sc;

 

End;

 

Changes to CoordinateSystem behavior when updating

 

The behavior when updating CoordinateSystem objects has been made more consistent. For example, in FreeFlyer 6.8, the ViewWindow in the example below will now show the orientation of the CoordinateSystem automatically updating as the Spacecraft is stepped, whereas in FreeFlyer 6.7 and earlier, the CoordinateSystem would not dynamically update as the Spacecraft was stepped.

 

Spacecraft sc;

CoordinateSystem cs;

Vector origin;

ViewWindow vw showing sc, cs;

 

sc.Propagator.StepSize = 10;

 

origin.BuildVector(9, Earth, sc);

 

cs.BuildCoordinateSystem(sc);

cs.SetPositionVector(origin);

cs.VisualScale = 3000;

 

While (sc.ElapsedHours < 1);

     Update vw;

     Step sc;

     Watch sc.Epoch, cs.Epoch;

End;

 

In the example above, the CoordinateSystem's Epoch is "-999", indicating that it will be automatically updated with its associated Spacecraft. If you were to add a line before the While loop setting the Epoch of the CoordinateSystem, as shown in the example below, FreeFlyer 6.8 and higher will report an error once the objects get out of sync, indicating that "The epoch for Spacecraft 'sc' is Jan 01 2010 00:00:10.000 and is out of sync with the epoch for CoordinateSystem 'cs'." In FreeFlyer 6.7 and earlier, an error would not have been shown, and the CoordinateSystem orientation would not have updated inside the While loop.

 

cs.Epoch = sc.Epoch;

 

While (sc.ElapsedHours < 1);

     Update vw;

     Step sc;

     Watch sc.Epoch, cs.Epoch;

End;

 

You can prevent the error message from the previous example by ensuring that the CoordinateSystem's Epoch stays synchronized with the Spacecraft, as shown below. In this example, the behavior is the same between FreeFlyer 6.7 and FreeFlyer 6.8.

 

cs.Epoch = sc.Epoch;

 

While (sc.ElapsedHours < 1);

     Update vw;

     Step sc;

    cs.Epoch = sc.Epoch;

     Watch sc.Epoch, cs.Epoch;

End;

 

Spacecraft.FixedPosition and Spacecraft.FixedVelocity now return results with respect to the Spacecraft's central body

 

In FreeFlyer 6.8 and higher, the Spacecraft.FixedPosition and Spacecraft.FixedVelocity properties will now always return results with respect to the Spacecraft's central body. In FreeFlyer 6.7 and earlier, these properties always returned results with respect to the Earth.

 

Loading an Attitude History File will no longer change the Spacecraft Epoch

 

In FreeFlyer 6.8 and higher, when you load an Attitude History File (AHF) into a Spacecraft, FreeFlyer will set the initial attitude state of the Spacecraft by finding the attitude in the AHF that corresponds to the Spacecraft's existing epoch, or interpolate the data points to that epoch if necessary. In FreeFlyer 6.7 and earlier, FreeFlyer would have overwritten the Spacecraft's epoch with the epoch of the initial state in the AHF.

 

Possible differences in propagation

 

Several improvements to FreeFlyer's propagation modeling have been implemented in FreeFlyer 6.8 that could cause users to see minor differences in propagation.

 

GroundStation location now updates if the properties of its central body are changed

 

In FreeFlyer 6.8 and higher, the location of a GroundStation will be updated if the properties of its central body are changed. In the example below, the GroundStation.FixedPosition will now be different before and after the Earth's flattening coefficient is adjusted. In FreeFlyer 6.7 and earlier, the same results would have been returned regardless of changes made to the Earth's properties.

 

GroundStation gs;

 

Report Earth.Flattening, gs.FixedPosition;

 

Earth.Flattening = 0.003;

 

Report Earth.Flattening, gs.FixedPosition;

 

The size of an Array can be decreased by passing it to a Method

 

In FreeFlyer 6.7 and earlier, if you passed an Array to a method, the method would never reduce the size of the Array. In FreeFlyer 6.8 and higher, it is now possible for the Array to shrink as a result of being passed to a method. For example, in FreeFlyer 6.7, the Array size reported by the two Report commands in the example below would be the same, but in FreeFlyer 6.8, the second Report will show an Array size of zero.

 

Array Array1[0];

StringArray StringArray1;

 

Array1.Push(5);

 

Report Array1.Dimension;

 

StringArray1.Find("test", Array1);

 

Report Array1.Dimension;

 

The size of an Array can be decreased by assignment to another Array

 

In FreeFlyer 6.7 and earlier, if you assigned an Array to equal another Array or a VirtualArray, the assignment would not reduce the size of the Array. In FreeFlyer 6.8 and higher, it is now possible for the Array to shrink as a result of being assigned to another Array or VirtualArray. For example, in FreeFlyer 6.7, the Array reported in the example below would have a value of {1, 2, 0, 0, 0}, but in FreeFlyer 6.8, the Array will simply equal {1, 2}.

 

Array Array1[5];

Array Array2;

Array2 = {1,2};

Array1 = Array2;

Report Array1;

 

The default values for some objects in the Orbit Determination system now match the documented defaults

 

In FreeFlyer 6.7 and earlier, the process noise and sigma values of biases in the Orbit Determination system objects did not match their documented default values, if those objects were created via FreeForm script. (Objects created in the Object Browser were not affected.) For example, when creating a default GroundStation object, the property GroundStation.Antenna.OD.BRTSObservation.RemoteTransponderDelay.ProcessNoise has a documented default value of 1e-17 s^2, and GroundStation.Antenna.OD.BRTSObservation.RemoteTransponderDelay.Sigma has a default value of 0.0001 s. When creating a GroundStation in FreeForm script in FreeFlyer 6.7 and earlier, the default values did not match the documented values, but in FreeFlyer 6.8 and higher, the default values will match the documentation.

 

The monitoring range for plots in Monitor mode can now be configured

 

In FreeFlyer 6.7 and earlier, plots in Monitor mode would refresh after one unit on the x-axis was reached. For example, if the x-axis was in units of days, the range of the x-axis would always span one day. In FreeFlyer 6.8 and higher, plots in Monitor mode will begin erasing the oldest data points once the number of points reaches or exceeds the maximum points setting for the plot, so that it will only display the most recent data. The default number of allowable data points is 500; this can be configured through FreeFlyer's Options Menu à Preferences à User Preferences à Plot Properties page.

 

A Pause Command at the end of the Mission Sequence will now pause the Mission Plan

 

In FreeFlyer 6.7 and earlier, a Pause command at the end of the Mission Sequence would be ignored. In FreeFlyer 6.8 and higher, this will now Pause the Mission Plan.

 

Object File Schema Validation

 

The contents of FreeFlyer Object Files are now validated when the user attempts to import them using the Get command. If you find that you now receive an error when importing an Object File into FreeFlyer 6.8 or higher, but the same file works with FreeFlyer 6.7 or earlier, there is an issue with the formatting or contents of the file. If you are unable to identify the issue with the file, please contact us at techsupport@ai-solutions.com.

 

 

See Also


Release History