Release Notes for FreeFlyer 6.8 |
Top Previous Next |
New Features in FreeFlyer 6.8New Propagation and Modeling Capabilities
Output Enhancements
FreeForm Script Improvements
Enhanced User Support
Miscellaneous Enhancements
Migrating to FreeFlyer 6.8While 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.
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.
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.
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.
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.
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.
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.
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}.
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
|