Release Notes for FreeFlyer 7.5

Top  Previous  Next

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 Modeling

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 Modeling

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


Modeling Enhancements

Radial, In-Track, Cross-Track (RIC) frame support has been added for use as an attitude reference frame for Spacecraft objects and as a maneuver reference frame

Formation modeling has been made easier with the addition of a number of convenience methods and a few key improvements to other objects

oFormation.StepToEpoch() has been added as a method to synchronize an entire Formation to a desired epoch in a single call

oFormation.MinEpoch() and Formation.MaxEpoch() have been added to simplify finding Spacecraft elements at different times

oAdded the ability for the PointGroup.Coverage() method to use an observing Formation object instead of a group of individual Spacecraft

PointGroupPoint objects have been added as a valid target for a VisibilitySegment

The CelestialObject.Range() method and the Spacecraft.Range(CelestialObject) method overload have been added for completeness in functionality across objects

Enhanced VectorToObject() and FixedVectorToObject() on the numerous objects with those methods to support more object types as new overloads

SetFixedPosition() method has been added to the Spacecraft, GroundStation, and GroundVehicle to make assigning that easier for those objects

GroundStation.GetPositionAtEpoch() is a new method added to bring the GroundStation more in-line with recent improvements to interplanetary modeling

Added an overload to Matrix.EigenDecomposition() that returns the real and complex eigenvalues/eigenvectors of a Matrix


Output Enhancements

Matrix objects can now be reported via the Report command directly to files and ReportInterface objects

Matrix and Array object formatting methods have been added to make it easier to report these objects in meaningful, human-readable ways and in scientific notation





ReportInterface properties now exist that replicate the functionality of the "without linefeed", "without padding", and "without headers" for ease of use

Additional ReportInterface properties and methods have been added to facilitate customizing the way output appears








Added support for referencing GraphicsOverlay objects to Sensor objects


Miscellaneous Improvements

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


Notable Fixes

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:










Output Windows

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.



See Also

Release History