New Features in FreeFlyer 7.5
Rewind and Replay Output Windows
•The FreeFlyer navigation bar now includes a replay toolbar that enables you to replay a Mission Plan backwards and forwards, step backwards or forwards frame-by-frame, and control the speed of playback
oThe replay capability is available after a Mission Plan finishes running
oRotating of the camera, changing to a different type of Viewpoint, showing/hiding objects, and more are all supported while replaying a Mission Plan
oDue to the addition of the replay toolbar, the throttle bar has been hidden by default and can be reenabled in User Preferences
•When generating a movie or while using the new replay feature, FreeFlyer will use a new preference for maximum storage per instance
oIf it is found that the beginning of the movie or replay content is being cut off by default settings, the preference can be increased to prevent that from happening
•Terrain data can now be ingested into FreeFlyer by users with a Mission-tier license for use with line of sight calculations for computing visibility between any two objects, whether orbiting in space, moving on the ground, stationary on-planet, or any combination thereof
oBoth instantaneous viewshed analyses and the evolution of viewshed analysis quality over time can be evaluated using this capability
oSingle-observer and multiple-observer viewshed analyses can be modeled with any number and type of observer included (spacecraft, drones, ground vehicles, and ground sites)
oData can be loaded in for coarse global analysis, granular localized analysis of a specific area of interest, or any combination thereof as needed for a particular mission
oThis feature runs locally on your machine and does not require connectivity to any external server for terrain calculations
•Terrain raster file data can be visualized through the Terrain.GetHeight method applied to PointGroup objects or GraphicsOverlay objects of regions of terrain data that can be then used in a ViewWindow
oWhen building visualization elements using terrain data, note that most computers do not have sufficient memory to visualize every single data point in the data files
oIn all cases, you'll want to visualize terrain data in a PointGroup or GraphicsOverlay using a more coarse mesh than at single-pixel resolution for performance
•GroundVehicle objects can now be added to FreeFlyer Mission Plans to represent vehicles that travel along a CelestialObject's surface
oA GroundVehicle can be used to represent any ground-based object, including vans, tanks, and trucks, and 3D models have been included with the object to help visualize this in output
oDrones and other aircraft can be modeled via the GroundVehicle object by setting an appropriate vehicle height above the ground
oGroundVehicle objects can be used as both an observer and target in VisibilitySegment calculations, with or without Terrain
oAdditionally, GroundVehicle supports many other standardized vehicle properties and methods similar to the Spacecraft, such as being able to determine if it is in shadow
•Two different propagators are provided with the GroundVehicle, the ability to follow a set of predefined waypoints and the ability to move at a specific heading and speed
oGroundVehicle objects can follow the surface of the planetary ellipsoid or the surface of Terrain as loaded from file
oThree interpolation methods are provided for interpolating between waypoints, including using a step function or following the Rhumb line or Geodesic path between points
oThree attitude reference frames are available, including the traditional MJ2000 reference frame, a Velocity-Local Tangent reference frame, and a topocentric East-North-Up reference frame
•Sensor objects can be added to a GroundVehicle much like they can be added to Spacecraft objects, enabling coverage and contact analysis
•Diagnostic reporting has been improved by adding a new View Support Information option within the Help menu for use when reporting issues to FreeFlyer Technical Support
•Formation objects and Lists of objects can now be initialized to a given size with square brackets following their definition similar to Array objects
•The runtime API Java interface has been updated with Maven support and the Python interface has been updated with Wheel support
•@JsonUndefinedValue annotation has been added which allows you to specify the value to use when deserializing JSON when there is a field in the structure but not in the JSON
•Improved the accuracy, stability, and convergence behavior of the Step command used with a condition
•Corrected implementations of Latitude- and Longitude-based properties to correctly use the central body's equatorial frame for non-Earth central bodies
•Addressed an issue whereby the Ap value for the F10.7 format in custom drag files was erroneously offset, resulting in modeling errors when propagating with MSIS density models
•Fixed the Spacecraft.SimulateTrackingData() method overload that takes a List of Observation objects to properly account for a Sensor field of view when the object being observed has a Sensor configured
•Improved the drawing behavior of dense PointGroup objects in a 2D map Viewpoint to prevent points from overlapping or aliasing with one another
•GroundStation object obfuscation mask projection height behavior in a ViewWindow has been improved to display with expected shapes and sizes
Migrating to FreeFlyer 7.5
While we always strive to maintain 100% backwards compatibility in our new releases, our efforts to make FreeFlyer more flexible and consistent in FreeFlyer 7.5 and higher have necessitated a few changes which may require user intervention when migrating your existing Mission Plans. These changes are outlined below.
Modeling and Numerics
•The default interpolator for all ephemeris formats has been changed to 8th order Lagrange from 5th order spline due to reduced interpolation error for the average use-case with the Lagrange interpolator. The 8th order Lagrange interpolator was chosen over the 10th order Lagrange largely due to the 8th order's algorithm executing faster of the two.
•Random number generation will change between FreeFlyer 7.5 and FreeFlyer 7.4.1 due to an update to our compilers that resulted to an update to our mathematical library. Random number generation is still random, but using the same seeds and same Mission Plans in FreeFlyer 7.5 as were used in earlier FreeFlyer releases will now have different results.
•The behavior of RotatingLibrationPoint.GetDCMAtEpoch() has been changed to return the transpose of its previous return so that it correctly aligns with other implementations elsewhere in FreeFlyer.
•As part of the work on the new GroundVehicle object, the State base type has been removed from FreeFlyer. Previously, this was only used as the base type for the Spacecraft object, which would result in a change in behavior in FreeFlyer 7.5 only if you were passing a Spacecraft into a Procedure with a State argument type. As of this release, both Spacecraft and GroundVehicle now derive from a new Vehicle type with different behavior and properties compared to the State type of FreeFlyer 7.4.1 and earlier.
•The ManeuverGravityConstant property of the FiniteBurn and Burn objects has been removed completely from FreeFlyer because it did absolutely nothing when changed on those objects. It still continues to exist where it is actually useful, which is as ImpulsiveBurn.ManeuverGravityConstant.
•The library used to compute attitude conversions involving Euler angles has been updated to a more modern version, resulting in changes to the Euler angles reported by FreeFlyer. These rotations are mathematically the same as they were before, but represented by different specific angles, which may cause changes to plots relying on these values.
•The behavior of latitude and longitude assignments and retrievals for Spacecraft with non-Earth central bodies now uses the central body's equatorial frame and not Earth's. Additionally, the following interfaces are always Earth-specific and now throw an error when used for non-Earth central bodies:
•User Preferences have been updated to remove redundancy between ViewWindow properties and preferences on the Mission View page. The affected preferences will now sensibly be set from the object that they affect instead of set at the User Preference level and then overridden for the object using them.
•The behavior of plot data labels when you check the Show Data Labels option in the Output Properties tab has been improved. This improvement was done by changing the default choice for this drop-down to "Value" so that the value gets shown by default if you check the Show Data Labels box. The old behavior can be achieved by selecting "Label" for this particular drop-down menu.
Runtime API and Command-Line Usage
•The default for the Timing Precision Mode (-tpm) switch has been changed to nanosecond to match the default timing precision mode when creating a new Mission Plan.
•FF_SolarSystem property values when using the runtime API with scripts instead of Mission Plans have been made consistent with all other methods of running FreeFlyer Mission Plans. This specifically will only change the default values of FF_SolarSystem.ComputePolarMotion, which is now true by default, and FF_SolarSystem.COUpdateInterval, which is now 0 seconds by default.
•The changes to make the Java runtime API Maven-compatible included changing the package name and jar name of the Java runtime API files. This will require that users of the Java runtime API change the import line of their Java code from "import aisolutions.freeflyer.runtimeapi.*" to "import com.ai_solutions.freeflyer.runtimeapi" to correctly acquire the package in their tools.
•Various Objects, Properties, Methods, and Functions have been deprecated
oDeprecated 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.