What's New in FreeFlyer?

Top  Previous  Next

 

The current version of FreeFlyer is the maintenance release, FreeFlyer 7.9.1. You can find the the complete patch notes for what fixes and improvements were made here.

 

New Features in FreeFlyer 7.9


International Celestial Reference Frame

The International Celestial Reference Frame (ICRF) is the new default reference frame for all objects in FreeFlyer

oICRF is a fundamental reference frame defined by the International Astronomical Union (IAU)

oThe transformation between the inertial ICRF frame and earth fixed ITRF frame is computed in FreeFlyer using the Standards of Fundamental Astronomy (SOFA) Tools for Earth Attitude software library

By default, FreeFlyer uses an interpolated version of the IAU 2006/2000A earth orientation model

oUsers can choose between IAU 2006/2000A and IAU 2006/2000B precession/nutation models through the SolarSystem.EarthOrientationModel property

In most places data which would formerly have been interpreted as MJ2000 will now be interpreted as ICRF. Review the "MJ2000 to ICRF" section of "Migrating to FreeFlyer 7.9" below for all details including:

oReference Frame Mapping

oSolarSystem Editor Updates

oFile Updates

oMJ2000 Earth Equator Functions that are not Interpreted as ICRF

 

Covariance, Process Noise, and other Orbit Determination Enhancements

Covariance and Process Noise now supported in all Attitude Reference Frames

oAbility to read and write covariance in all Attitude Reference Frames such as RIC

oProvides more physically-intuitive representation for Orbit Determination and Conjunction Analysis

New Process Noise Rate Model

oAbility to set a constant process noise rate which is applied uniformly regardless of step size

oUsers can specify process noise model to use through the SpacecraftODProperties.ProcessNoiseModel property

oLegacy process noise by step model with fixed amount of process noise per step is still supported

Added light-time velocity terms to range partial derivatives

Added State Transition Matrix (STM) mapping to Spacecraft partial derivatives to account for light-time

Added a SpacecraftODProperties.SmoothedEpoch property to allow users to retrieve the epoch of a smoothed state of a Spacecraft

 

Data File Updates

Earth Orientation Parameter data now uses celestrak.org data

oThe legacy UT1-UTC and UTC-TAI files are still supported, but new updates to these files will no longer be distributed with new versions of FreeFlyer

Added support for CSV formatted Celestrak Space Weather File

The default Development Ephemeris (DE) used in FreeFlyer for determining the precise location of solar system objects has been upgraded to DE440.dat

oCelestialObject.Mu values are now dynamically sourced from DE files

 

User Experience Improvements

Help File Updates

oThe help file pages for object types which cannot be created in script, but live on other objects (e.g. PlateModel, GroundAntenntaODProperties, etc.), now indicate which object(s) can be their parent objects

oAdded relevant information about members, including object types and read/write usage, to object pages

FreeFlyer Certification Level 2 is now available

oAdvanced certification modules covering Maneuvering and Targeting & Coverage and Contact

FreeFlyer Users Forum

oDedicated website with a discussion board for users all over the world to learn about FreeFlyer from FreeFlyer team members and each other

oFreeFlyer users can ask questions about the tool or engage in conversations with other users in the forum

 

Miscellaneous Enhancements

Lower system memory usage for many Optimal Control scenarios

Added Optimizer.JacobianSparsity property to increase efficiency of the sampling phase

Added the ability to set the orientation of a CelestialObject using quaternions through the CelestialObject.SetOrientation() method

Added new Icons for asteroids, ground vehicles, aircraft, planetary landers, rovers, and habitats

 

Notable Fixes

Corrected an issue where FreeFlyer generated CCSDS OEM Files did not follow the CCSDS Blue Book regarding the maximum number of floating point digits

Fixed error where the ThrustScaleFactor property could not be set using the BatchLeastSquares OD object dialog

Fixed an error where allocating list elements could cause a memory leak

Fixed an issue where setting the Spacecraft.OD.PropagateCovariance property to true when using an Ephemeris for propagation would report NaNs for covariance

Fixed a crash when removing TrajectoryPhase objects from the Optimizer but leaving phase links

Fixed a crash when referencing assigning a List<List<Object>>

Fixed a crash when using TimeSpan.RoundedToUnits() and TimeSpan.TruncatedToUnits() without an argument specified

 

Migrating to FreeFlyer 7.9


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.9 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

Millisecond timing precision mode is deprecated and will be removed in a future release. We recommend that you migrate your Mission Plans to nanosecond timing precision mode. Review the Timing Precision Modes page for assistance in upgrading from millisecond to nanosecond mode.

 

MJ2000 to ICRF

Because the International Astronomical Union (IAU) defined ICRF to align as closely as possible to MJ2000, we have replaced nearly all usages of MJ2000 in FreeFlyer in-place with ICRF, so that Mission Plans will now use ICRF with little or no action required by users.

 

Reference Frame Mapping

Properties, methods, and arguments that represented a state in MJ2000 Earth Equator are now represented in ICRF

Example:

Property

Old Property Description

Updated Property Description

Spacecraft.X

The Cartesian X-component of the Spacecraft's position vector, referenced to the Mean of J2000 Earth-Equator Coordinate frame.

The Cartesian X-component of the Spacecraft's position vector, referenced to the ICRF.

 

Properties, methods, and arguments that are an int set representing MJ2000 Earth Equator are now represented in ICRF

Example:

// FreeFlyer 7.8: The variable 1 represents MJ2000 Earth Equator

// FreeFlyer 7.9: The variable 1 represents ICRF

 

Spacecraft sc;

sc.GetCartesianState(1); 

 

 

 

Properties, methods, and arguments that are a string set representing MJ2000 Earth Equator are now represented in ICRF

Example: Spacecraft.AttitudeRefFrame

// FreeFlyer 7.8: The argument "MJ2000" represents Mean of J2000 Earth Equator

// FreeFlyer 7.9: The argument "MJ2000" is available but is treated the same as ICRF

 

Spacecraft sc;

sc.AttitudeRefFrame = "MJ2000"; 

 

 

 

Note: For backwards compatibility, "MJ2000" is still available for string sets but will be treated the same as ICRF.

 

SolarSystem Editor Updates

SolarSystem.NPUpdateInterval property deprecated and SolarSystem.CIRFEvaluationMode property added

oThis property determines whether the Celestial Intermediate Reference Frame (CIRF) transformation will be computed exactly at each epoch, or interpolated. The interpolated mode should give the best balance of performance and accuracy for most configurations.

oDefault Value: Interpolated

 

File Updates

FreeFlyer Ephemeris V1/V2/V3

oFreeFlyer Ephemeris files generated in FreeFlyer 7.9 are now all written in ICRF and not MJ2000 like in previous versions of FreeFlyer. If you want to generate reports in MJ2000, you should do so manually via the Report command or FileInterface object.

oExisting Ephemerides will load data as if it is ICRF

oFFEphemProperties.WriteBackwardsCompatibleReferenceFrameLabel property added

When this property is set to 1, the "ReferenceFrame" field of the FreeFlyer Ephemeris file will be written as "Mean of J2000" rather than "ICRF". This will allow the resulting file to be read in FreeFlyer releases previous to 7.9. Note, no transformations on the data will be performed.

 

Code 500

oCode 500 Ephemeris files generated in FreeFlyer 7.9 are now all written in ICRF and not MJ2000 like in previous versions of FreeFlyer. If you want to generate reports in MJ2000, you should do so manually via the Report command or FileInterface object.

Data is interpreted as True of Date (TOD) and converted to ICRF

oCode 500 Ephemeris files generated in FreeFlyer 7.9 use Greenwich Apparent Sidereal Time (GAST) for Greenwich Hour Angle (GHA) values unlike previous versions of FreeFlyer.

o'TOD' or 'J2000' can be chosen with the Put command.

Choosing 'TOD' will write TOD data

Choosing 'J2000' will write ICRF data

 

AcqData

 

oEPV:

Geocentric True of Data Rotating EPV files are now all written in TIRF and not True of Date Rotating like in previous versions of FreeFlyer.

Geocentric mean of 2000.0 (J2000.0) EPV files are now all written in ICRF and not MJ2000 like in previous versions of FreeFlyer.

 

oIIRV:

Geocentric True of Data Rotating IIRV files are now all written in TIRF and not True of Date Rotating like in previous versions of FreeFlyer.

 

Burn Report

oBurn reports generated through the Maneuver command are now all written in ICRF and not MJ2000 like in previous versions of FreeFlyer. If you want to generate reports in MJ2000, you should do so manually via the Report command or FileInterface object.

 

MJ2000 Earth Equator Functions that are not Interpreted as ICRF

In most places data which would formerly have been interpreted as MJ2000 will now be interpreted as ICRF. The exceptions are:

oPositionConvert()

oPositionVelocityConvert()

oVelocityConvert()

 

Deprecated Functionality


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.

 

Deprecated Property/Method

Updated Property/Method

Burn.ManeuverStartTime

Burn.ManeuverOffsetTime

CelestialObject.Radius

CelestialObject.RadiusEquatorial

EstimableAcceleration.ProcessNoise

EstimableAcceleration.ProcessNoiseRate

EstimableAGOM.ProcessNoise

EstimableAGOM.ProcessNoiseRate

EstimableAngleBias.ProcessNoise

EstimableAngleBias.ProcessNoiseRate

EstimableBStar.ProcessNoise

EstimableBStar.ProcessNoiseRate

EstimableCoefficient.ProcessNoise

EstimableCoefficient.ProcessNoiseRate

EstimableCustomBias.ProcessNoise

EstimableCustomBias.ProcessNoiseRate

EstimableDistanceBias.ProcessNoise

EstimableDistanceBias.ProcessNoiseRate

EstimableDopplerBias.ProcessNoise

EstimableDopplerBias.ProcessNoiseRate

EstimableEquinoctialA.ProcessNoise

EstimableEquinoctialA.ProcessNoiseRate

EstimableEquinoctialLongitude.ProcessNoise

EstimableEquinoctialLongitude.ProcessNoiseRate

EstimableHeightBias.ProcessNoise

EstimableHeightBias.ProcessNoiseRate

EstimableLatLongBias.ProcessNoise

EstimableLatLongBias.ProcessNoiseRate

EstimableMeanMotion.ProcessNoise

EstimableMeanMotion.ProcessNoiseRate

EstimablePositionBias.ProcessNoise

EstimablePositionBias.ProcessNoiseRate

EstimablePositionComponent.ProcessNoise

EstimablePositionComponent.ProcessNoiseRate

EstimablePseudoRangeClockDrift.ProcessNoise

EstimablePseudoRangeClockDrift.ProcessNoiseRate

EstimablePseudoRangeReceiverBias.ProcessNoise

EstimablePseudoRangeReceiverBias.ProcessNoiseRate

EstimablePseudoRangeTimeBias.ProcessNoise

EstimablePseudoRangeTimeBias.ProcessNoiseRate

EstimableRangeRateBias.ProcessNoise

EstimableRangeRateBias.ProcessNoiseRate

EstimableTimeBias.ProcessNoise

EstimableTimeBias.ProcessNoiseRate

EstimableVelocityBias.ProcessNoise

EstimableVelocityBias.ProcessNoiseRate

FiniteBurn.ManeuverStartTime

FiniteBurn.ManeuverOffsetTime

ImpulsiveBurn.ManeuverStartTime

ImpulsiveBurn.ManeuverOffsetTime

SolarSystem.DefaultUTCUT1ConversionFile

SolarSystem.DefaultEarthOrientationParametersFile

SolarSystem.DefaultUTCTAIConversionFile

SolarSystem.DefaultEarthOrientationParametersFile

SolarSystem.NPUpdateInterval

SolarSystem.CIRFEvaluationMode

Spacecraft.GHA

CelestialObject.GetPrimeMeridianApparentSiderealTime()

Spacecraft.EulerAnglesMJ2000

Spacecraft.EulerAnglesICRF

SPKProperties.TargetName

SPKProperties.TargetNAIFID

String.ToUpper

String.ToUppercase()

String.ToLower

String.ToLowercase()

String.Trim

String.TrimWhitespace()

VirtualString.ToUpper

VirtualString.ToUppercase()

VirtualString.ToLower

VirtualString.ToLowercase()

VirtualString.Trim

VirtualString.TrimWhitespace()

 

See Also


Release History