WSF Core 2.9 - 25 Feb 2022¶
Visit the AFSIM 2.9 Release Page on DI2E (Access Controlled) for more information and resources related to this release.
Release Dates¶
WSF Core 2.9.0 - 25 Feb 2022
General¶
Updated documentation of WsfPlatform script methods for setting location, velocity, and orientation to caution usage of these methods on uninitialized platforms created via script. (AFSIM-190)
Deprecated the precession_nutation_update_interval command, to be replaced by nutation_update_interval. (AFSIM-1354)
Deprecated the WsfEventPipe.Record script method that takes time as an argument. Use the new Record script that does not have a time argument. Setting a time other than TIME_NOW would cause issues in Mystic. (AFSIM-1421)
Deprecated WSF_TRACK_MANAGER processor as an alias for WSF_TRACK_PROCESSOR. (AFSIM-1253)
The WsfPlatform script class now has a well-defined ordering, so that insertion of WsfPlatform objects into sorted containers (i.e. Map and Set) is now deterministic and will not affect simulation repeatability. (AFSIM-1871)
Removed platform state data from event_output and csv_event_output for platforms that have not been initialized. (AFSIM-1878)
Updated documentation to notify users of future changes to implicit usage of the default command_chain. (issue:AFSIM-2135)
Deprecated the transform_route command and replaced with two new commands, insert_route and insert_offset_route. (AFSIM-2082)
Removed the previously deprecated target specification options, platform and offset, from the Target, Intercept, and Rendezvous maneuvers. (AFSIM-693)
Removed previously deprecated methods from the script classes WsfTargetManeuver, WsfInterceptManeuver, and WsfRendezvousManeuver that constructed the maneuver or modified the maneuver’s target information without using the WsfTargetPoint . (AFSIM-693)
Deprecated the versions of WsfSpaceMover.ComputeRendezvous, and WsfSpaceMover.ComputeIntercept that accept a WsfTrackId as an argument. Users should instead use the versions accepting a WsfTargetPoint instance. (AFSIM-692)
Deprecated orbital propagator debug output commands debug_output_wsf, debug_output_oe, debug_output_stk, debug_output_xyz, and debug_output_tle. (AFSIM-694)
Clarified the documentation with respect to hyperbolic end-states of maneuvers (e.g., Rendezvous), and other orbital targeting operations (e.g., WsfSpaceMover.ComputeIntercept). (AFSIM-745)
Propellant for WSF_SIX_DOF_MOVER solid-rocket boosters is now defined and treated as a fuel tank, with positioning based on the reference point of the vehicle. Existing models can be migrated with no effect on performance by following the guidance in Updating Thrust Producer Definitions for AFSIM 2.9. (AFSIM-1182)
SixDOF PID derivative controllers now track rate-of-change of the process variable rather than the error. This reduces spikes in output caused by updates from middle- and outer-loop controllers. (AFSIM-2110)
Clarified documentation to provide detail for incidental_damage_allowed usage in WSF_ENGAGE_LAUNCH_PK_TABLE_LETHALITY. Added warning message when this command is used. (AFSIM-1563)
The PLATFORM_KILLED event for event_output, csv_event_output, and observer has been deprecated and will be removed in a future release. Use PLATFORM_BROKEN instead.
Corrections¶
New movers provided via WsfPlatform.SwapMover now respect maximum_mover_update_interval. (AFSIM-2121)
A script compiler error is now produced under two new conditions: script methods declared with a non-void return type that fail to return a value, and unreachable script code due to inappropriate control flow (e.g. after
return
). (AFSIM-762)Corrected an issue in the line_of_sight_manager that could cause multi-threaded simulations to hang or crash. (AFSIM-1244)
Corrected an issue in LocationValid2D() that caused some tracks with known 3-D location information to report false for this method and true for LocationValid(). Clarified documentation for these methods. (AFSIM-209)
Corrected an issue where WSF_TABULAR_ATTENUATION was limiting attenuation values to the range [0, 1] absolute. (AFSIM-172)
Corrected issues with SENSOR_FREQUENCY_CHANGED event output that caused errors in event and CSV files for some scenarios. (AFSIM-179)
Invoking script Object methods on basic types is now a script compilation error rather than a runtime exception. (AFSIM-185)
Corrected the return value of script methods WsfSimulation.ExecuteAtTime, WsfPlatform.ExecuteAtTime, and WsfProcessor.ExecuteAtTime to indicate whether the supplied script is valid. (AFSIM-642)
Corrected an issue where GPS navigation_errors were not being converted from a platform’s local XYZ coordinate frame to the WCS frame correctly. (AFSIM-932)
Corrected an issue with the WSF_ROTORCRAFT_MOVER not moving along a route correctly after encountering a waypoint with a pause_time. (AFSIM-150)
Corrected an issue in the kinematic trajectory model for the WSF_TSPI_MOVER that is used to predict future locations and time of apogee. (AFSIM-167)
Corrected an issue where measurement data being sent over XIO was not preserving error values. (AFSIM-1998)
Corrected an issue where platforms with route movers initially turned off will move along the provided route, jumping between waypoints, despite the mover being off. (AFSIM-182)
Corrected an issue where platforms with route movers initially turned off and given a route, if later turned on using the WsfMover.TurnOn script method, will cause the platform to jump to the location on the route as if the mover had been on the entire time. (AFSIM-183)
Corrected an issue where the WSF_ROAD_MOVER would not use the road network when commanded using the WsfPlatform.GoToLocation or WsfPlatform.FollowRoute script methods. (AFSIM-211)
Corrected an issue where platforms following a route with a segment longer than ~1/4 of the earth’s circumference would not reach the proper location. (AFSIM-311)
Corrected an issue where converting MGRS coordinates to Latitude/Longitude would fail in certain cases. (AFSIM-1039)
Corrected a crash when using ProcessInput() on a command that depends on other input that has not been loaded. For example, a route referenced in the use_route command must be loaded or the scenario crashed. A console_output Info message will get issued when using the ProcessInput script method on a command with dependencies. (AFSIM-1071)
Added missing documentation for mti_processor commands filtered_doppler_speed and unfiltered_doppler_speed. Added commands to the grammar for correct parsing in Wizard. (AFSIM-1073)
Fixed crash that could occur when sending a WsfDraw command over XIO. (AFSIM-1097)
Corrected observer documentation to include missing events, remove events no longer available, and accurately reflect event signatures. (AFSIM-1099)
Removed excess console output from WsfPlatform.SetSignatureState. (AFSIM-234)
Added warnings when using various zone commands on zone shapes they are not intended for. (AFSIM-1119)
Fixed crash that could occur when osm_traffic vehicles are changing lanes to an unoccupied neighboring lane. (AFSIM-1132)
Corrected the application of range_error_sigma value to the track measurement when percent_of_true_range is specified. (AFSIM-1151)
Corrected an issue where Advanced Behavior Tree Shared Blackboard script commands would not propagate all the way up the tree. (AFSIM-1234)
Corrected an issue causing priority_selector to not work with root_node_type on Advanced Behavior Trees. Also fixed crashes involving root_node_type with sequence_with_memory/selector_with_memory nodes. (AFSIM-1241)
Fixed the propulsion DIS appearance mask and added missing air domain flags. (AFSIM-1209)
Corrected an issue where latitude and longitude values were inaccessible for route waypoints defined with a turn command (turn_left, turn_right, or turn_to_heading) and a distance command. (AFSIM-1204)
Added SENSOR_DETECTION_CHANGED callbacks for event_output, csv_event_output, and observer to indicate that detected targets are no longer detected on sensor turn off or when targets are deleted. (AFSIM-134)
Corrected an issue in which using the script method Array<T>.Insert would result in a script compilation error if T was not an Object. (AFSIM-1394)
Fixed an issue with the Record Length in the DIS Record Specification. (AFSIM-1395)
Corrected an issue which often resulted in a crash when running multi-threaded with the event_pipe (AFSIM-1409)
Fixed two problems where platforms and WsfGeoPoints continued to utilize a WGS-84 Earth ellipsoid for coordinate conversions when another option for the central_body in the global_environment is selected. (AFSIM-1424)
Fixed an issue involving priority_selector selecting from multiple children weighted_random nodes incorrectly for Advanced Behavior Trees. (AFSIM-1298)
Fixed a crash that happens when the scenario input has a chain of include commands that is too long. (AFSIM-1653)
Corrected a crash in osm_traffic that occurred when background vehicles exited the route_network via an one-way road. Vehicles are now deleted and a new vehicle is spawned at the beginning of a road that originates from an edge of the network. (AFSIM-1677)
Fixed incorrect parsing of script string literals. (AFSIM-1788)
Corrected an issue in which floating point values provided to integer inputs would silently truncate the input. An input error is now generated in such a case. (AFSIM-2273)
Changed console_output format of script_struct to no longer span multiple lines. (AFSIM-1722)
WSF_KINEMATIC_MOVER now correctly reports velocity vector. (AFSIM-1729)
Fixed an issue where relocate_and_rotate used a spherical earth model instead of an ellipsoidal earth. (AFSIM-177)
Fixed an issue where a WSF_TSPI_MOVER would always report 0 heading after a relocate_and_rotate command. (AFSIM-730)
WSF_KINEMATIC_MOVER now correctly reports acceleration. (AFSIM-1730)
Corrected an issue with azimuth_beamwidth and elevation_beamwidth where the error sigmas should have been driven by steered beamwidth when electronic beam steering was enabled. (AFSIM-1006)
Corrected documentation for structures in aux data. (AFSIM-131)
Corrected an issue when computing range_rate_error_sigma to reflect doppler resolution used in WSF_RADAR_SENSOR as a velocity instead of frequency. (AFSIM-1325)
Corrected an issue where enabling csv_event_output or print_eci_locations for event_output would change the initial orbiting locations of satellites. (AFSIM-1878)
WsfFuel now correctly inherits WsfPlatformPart as documented, making WsfPlatformPart script methods available on fuel objects. (AFSIM-2029)
Fixed a regression introduced from AFSIM-169 regarding usage of transform_route with offset waypoints. (AFSIM-1885)
maximum_mover_update_interval will now properly interact with update_interval set from script_variables. (AFSIM-2180)
Corrected multiple issues causing a priority_selector node to call the precondition block for its selected node twice in one tick. (AFSIM-2296)
Corrected an issue with precondition blocks being skipped unintentionally for nodes in certain situations involving priority_selectors. (AFSIM-2364)
Corrected an issue with the horizontal_map and flight_path_analysis functions in sensor_plot not using the initial_mode of sensor when running with multiple sensors. (AFSIM-161)
Corrected the formatting of the DBF file header generated by shapefile in sensor_plot horizontal_map to improve the compatibility of AFSIM generated shapefiles. (AFSIM-1141)
Corrected an issue with the documentation for the BALLISTIC_MISSILE_LAUNCH_COMPUTER_GENERATOR where the WSF_GUIDED_MOVER commands divert_thrust, divert_fuel_mass, divert_fuel_flow_rate, and divert_altitude_limits, were not listed as erroneous for use in WSF_GUIDED_MOVER’s for a weapon used by weapon_tools to generate ballistic missile launch computer data. (AFSIM-181)
Corrected an issue with the sign of delta_altitude generated by the ATG_LAR_AND_LC_GENERATOR. (AFSIM-975)
Addressed a possible issue where WsfSA_Processor could be providing incorrect platform data to scripted queries prior to its first update. (AFSIM-1235)
Corrected a problem where the WSF_GUIDED_MOVER was not computing all of the forces for each sub-step when using a Runge-Kutta integrator. Users can now optionally require computation of all forces for each sub-step, instead of only recomputing the gravitational force. (AFSIM-152)
Corrected an issue in which WsfWeapon.TimeToIntercept was returning inaccurate results for weapons using the WSF_SAM_LAUNCH_COMPUTER. (AFSIM-153)
Corrected an issue with the documentation for the WSF_GUIDED_MOVER where the commands divert_thrust, divert_fuel_mass, divert_fuel_flow_rate, and divert_altitude_limits, were not explicitly noted as erroneous for use in WSF_GUIDED_MOVER’s for a weapon used by weapon_tools to generate ballistic missile launch computer data. (AFSIM-181)
Corrected an issue with the WSF_PERCEPTION_PROCESSOR providing incorrect number of available systems/resources on an asset platform. (AFSIM-165)
WSF_BALLISTIC_MISSILE_LAUNCH_COMPUTER can now compute intercept solutions for platforms using a WSF_TSPI_MOVER. (AFSIM-167)
Corrected an issue where continuous- and discrete-fire implicit weapons were generating more hits or PK draws than expected during an engagement. (AFSIM-206)
Fixed a crash when the WSF_QUANTUM_TASKER_PROCESSOR purges multiple received tasks. (AFSIM-208)
Corrected the issue of WSF_IMPLICIT_WEAPON ignoring quantity, reloading and firing interval settings. (AFSIM-361)
Corrected an issue with the WSF_TRACK_EFFECT not applying the range_error, azimuth_error elevation_error, or velocity_error. (AFSIM-660)
Corrected an issue where turning optical sensors off and on that report to a WSF_IMAGE_PROCESSOR with a filter could cause a crash. (AFSIM-838)
Corrected an issue where the WSF_TBM_MOVER would occasionally hang when computing launch angles. (AFSIM-2043)
Clarified documentation and grammar to provide guidance on weapon_effects commands that are incompatible with WSF_CARLTON_LETHALITY, WSF_EXOATMOSPHERIC_LETHALITY, WSF_GRADUATED_LETHALITY, WSF_HEL_LETHALITY, WSF_MOBILITY_AND_FIREPOWER_LETHALITY, and WSF_TABULATED_LETHALITY. (AFSIM-840)
Fixed an issue where the surface_clutter model fails silently with low antenna_height used with a surface platform on rough seas. (AFSIM-170)
Corrected a problem where intercepts of space domain objects by platforms using the WSF_GUIDED_MOVER and fired using the WSF_BALLISTIC_MISSILE_LAUNCH_COMPUTER were missing their target when running in a distributed environment (i.e., the shooter is in one simulation; the target in another). (AFSIM-1041)
Corrected an issue with the WSF_QUANTUM_TASKER_PROCESSOR incorrectly allocating extra tasks when using the allocator_extra_tasks feature. (AFSIM-1059)
Fixed a rare crash with WSF_QUANTUM_TASKER_PROCESSOR when using the allocator_extra_tasks feature. (AFSIM-2142)
Corrected an issue with WsfAssetPerception.RelativeBearingTo so that it correctly returns relative bearing instead of true bearing. (AFSIM-1317)
Clarified documentation of Target Recognition Commands for WSF_IMAGE_PROCESSOR and removed references to non-existent events and event_output flags. (AFSIM-174)
Corrected an issue with the WSF_QUANTUM_TASKER_PROCESSOR crashing during the evaluation step when the reallocation_strategy is either static or event and the evaluator is either distance or intercept_time. (AFSIM-1634)
Corrected an issue where launching a WSF_GUIDED_MOVER or WSF_UNGUIDED_MOVER without a target track could use orientation rather than velocity when separating from the launching vehicle. (AFSIM-1675)
Fixed crash that would occur with WsfClusterManager when using H_TREE_AVG clustering. (AFSIM-1313)
Corrected an issue with fuse_function_range to allow weapons to detonate at the appropriate distance specified. (AFSIM-1537)
Corrected an issue when computing range_rate_error_sigma to reflect doppler resolution used in WSF_OTH_RADAR_SENSOR and WSF_SURFACE_WAVE_RADAR_SENSOR as a velocity instead of frequency. (AFSIM-1325)
Corrected a crash in alternate_locations where a platform using a reference to a platform that was turned off using platform_availability would cause the sim to crash. (AFSIM-2356)
Fixed issues with WSF_LINK16_COMPUTER not handling J11 messages correctly. The documentation and grammar were updated as well. (AFSIM-210)
Fixed issues with WSF_LINK16_COMPUTER J3_5 messages incorrectly reporting speed and course data as zero. (AFSIM-1812)
Fixed issues in SixDOF PID controller evaluation that could cause additional process noise and report artificially high derivative signals for middle and outer loop controllers. Users should increase kd for these controllers according to their outer and middle loop factor settings (AFSIM-2110)
Fixed an error in SixDOF PID controller evaluation that caused PIDs to incorrectly track the sampled derivative rather than the filtered output. Users may wish to significantly reduce low_pass_alpha values to recover previous behavior. (AFSIM-2110)
Corrected a problem where the orbit_determination fusion method was not producing a valid Initial Orbit Determination (IOD) result in the angles-only case (where only sensors that report bearing and elevation contribute to the IOD), particularly for satellites in Geosynchronous orbits. (AFSIM-291)
Corrected an issue with WsfSolarTerminator.PlatformSolarIllumination for platforms on the surface of the Earth, or which had no mover. (AFSIM-1111)
Corrected an issue where the high_resolution_eclipse option for the WSF_SPACE_OPTICAL_SIGNATURE would incorrectly compute a zero solar illumination.
Corrected the behavior of WsfPlatform.FutureLocation for platforms with space movers. (AFSIM-744)
Corrected a problem where the three argument, WsfTrackId accepting version of WsfInterceptManeuver.Construct would silently fail and halt the simulation when used outside a platform’s script context. (AFSIM-555)
Removed the non-functional, undocumented script method WsfOrbitalManeuver.RequiredDeltaV. (AFSIM-552)
Corrected an error in orbital mission sequence execution that was causing the MOVER_STAGED observer to not trigger for multi-stage space platforms.
Removed epoch warnings from most space mover types. Updated warning in WSF_NORAD_SPACE_MOVER. (AFSIM-719)
Corrected issues where orbital targeting optimization (such as for the Rendezvous or Intercept maneuvers) would not find solutions, or give sub-optimal solutions. (AFSIM-1347)
Corrected an issue where WsfSpaceMover.RIC_AtTime would report incorrect results for platforms with no mover. (AFSIM-1360)
Corrected an issue where WSF_INTEGRATING_SPACE_MOVER would use an incorrect mass. (AFSIM-1719)
Corrected an issue where WSF_SPACE_MOVER had an input order dependence between setting the initial condition’s epoch and setting the initial ECI kinematics. (AFSIM-2239)
Fixed a bug which prevented Wizard from using the Script Debugger with sensor_plot. (AFSIM-1643)
Corrected an issue in WSF_SENSOR_COVERAGE where multiple sensors on the same platform providing free assets are all set to ignore the grid assets. (AFSIM-1233)
Corrected the documented set of events which trigger the Engagement Report for the post_processor. (AFSIM-227)
Corrected deficiencies in the documentation of Element Electronic Steered/Scanned Array (ESA) Pattern. Added average_element_spacing_x and average_element_spacing_y commands to the grammar for correct parsing in Wizard. (AFSIM-258)
Clarified documentation and grammar to provide guidance on which weapon_effects commands are incompatible with WSF_ENGAGE_LAUNCH_PK_TABLE_LETHALITY. (AFSIM-840)
Clarified documentation to provide detail on Pk table file requirements and command usage with WSF_ENGAGE_LAUNCH_PK_TABLE_LETHALITY. (AFSIM-317)
Fixed an issue where sensor tracks were not being suppressed from subordinate sensors that are attached to a WSF_TRIMSIM_PROCESSOR. (AFSIM-1641)
Fixed a crash in the WSF_TRIMSIM_PROCESSOR when error covariance data is being updated on the sensor track. (AFSIM-1647)
Fixed inconsistent definition of success/failure in cyber attack status report. (AFSIM-1626)
Enhancements¶
Set the script type to “WSF_DIS_MOVER” for DIS mover instances. It was previously unset and so mover.Type() returned an empty string. (AFSIM-2117)
Applied optimizations throughout the comm framework to realize performance gains in comms usage. Improvements are mostly realized through elimination of unnecessary data copying and using map lookup O(lg(N)) instead of array find O(N) in the comm medium for finding messages in flight. (AFSIM-1270)
Applied optimizations throughout the framework and scripting engine to realize performance gains in script execution runtimes. (AFSIM-762)
Improved multi-threaded performance in the simulation and line_of_sight_manager. (AFSIM-1244)
The regular_table format now supports loading binary table files, allowing terabyte sized tables to be easily loaded into AFSIM, through use of the memory mapping technique. The save_as_rectangular_indexed_binary_file command is provided as a convenience for converting the old ASCII format to the new binary format, to allow speeding up the loading of pre-existing tables. (AFSIM-1242)
The linear_equation command for regular_table is now provided as a shorthand for specifying independent variables of equally-spaced datapoints. (AFSIM-1242)
Added option to use nearest interpolation in regular_table instead of linear. Default interpolation behavior remains linear. (AFSIM-1242)
Added the option to declare a category as private in dis_interface. (AFSIM-244)
Added WsfSensor.TrackQuality methods that allow a user to access track_quality inputs per sensor mode. (AFSIM-245)
Added and modified various script methods and expanded blackboard variable support for Advanced Behavior Trees. (AFSIM-977)
Added support for methods WsfZone.Draw and WsfZone.DebugDrawZone to draw all types of polygonal zones as well as absolute ones. (AFSIM-203)
Added command falling_behind_threshold in xio_interface to control how far a simulation can fall behind before notifying connected simulations. (AFSIM-1062)
Added a version of WsfPlatform.RadarCrossSection that allows a user to query a platform’s bistatic RCS using both receiver and transmitter aspect angles. (AFSIM-952)
Added command force_flushing to configure the automatic flushing of console_output. (AFSIM-953)
Added additional functionality to FileIO for users to query mode and path information for opened files. (AFSIM-820)
Added new versions of WsfPlatform.SlantRangeTo, WsfTrack.SlantRangeTo, and WsfGeoPoint.SlantRangeTo that perform the slant range calculation with spherical coordinates. (AFSIM-996)
Added new script method KeySet to access the full set of keys for a Map. (AFSIM-1056)
Optimized the performance of a graph pathfinding algorithm, resulting in improved runtimes for scenarios utilizing communications. (AFSIM-1117)
Added methods WsfGeoPoint.ApparentTimeNow and WsfGeoPoint.ApparentTime for querying the mean solar time of a WsfGeoPoint. (AFSIM-1153)
Added a method WsfPlatform.ApparentTime for querying the mean solar time of a WsfPlatform. (AFSIM-1153)
Added the ability to dynamically change fields of view on sensors, using a new field of view class hierarchy: WsfFieldOfView, WsfCircularFieldOfView, WsfRectangularFieldOfView, WsfPolygonalFieldOfView, and WsfEquatorialFieldOfView. (AFSIM-406)
Added the option to forward console_output to a file. (AFSIM-1166)
Added the transmitter command use_peak_power for allowing the use of peak power instead of average power for all predicated transmitter power algorithms. (AFSIM-1007)
Added new command solar_elevation_at_target to all passive IR and passive visual sensors, as well as WSF_GEOMETRIC_SENSOR. (AFSIM-722)
Platform aux_data is now updated over the xio_interface. (AFSIM-1320)
Added the absolute error model that defines a one standard deviation absolute position error measurement in two or three dimensions about the sensor detection target. (AFSIM-1054)
Added Sun.Elevation and Sun.Azimuth for querying information about the sun’s position. (AFSIM-1321)
Added support for scripted sensor detection constraints via the OnSensorDetectionAttempt method. Sensors can now also utilize the capabilities of the Common Script Interface. (AFSIM-1334)
Added new script method WsfEM_XmtrRcvr.Index and alias WsfEM_Xmtr.BeamNumber.
Improved error messages when the application crashes. (AFSIM-1515)
Added the ability for all nodes to use precondition/execute blocks, and added safety/convenience to all script functions for Advanced Behavior Trees. (AFSIM-1298)
Added GetAllAuxDataTypes methods to all classes supporting aux_data for querying for information about available aux data attributes and their types. (AFSIM-1521)
Added new script methods WsfTrack.RangeRate and WsfTrack.RangeRateErrorSigma. (AFSIM-1664)
Added variants of script methods WsfAntennaPattern.AzimuthBeamwidth and WsfAntennaPattern.ElevationBeamwidth to account for electronic beam steering. (AFSIM-1006)
Added the capability to clone script_struct s. (AFSIM-1757)
Exception logs are now saved to a file when the application unexpectedly closes due to an exception. (AFSIM-1733)
WsfEventPipe.Record may now publish integer, boolean, and string type data in addition to double. (AFSIM-2053)
Added the Matrix script class. (AFSIM-1952)
Added a new gps_status option in the navigation_errors block (option 3). Selecting this option using gps_status or SetGPS_Status enables GPS errors to be set in script using WsfPlatform.SetPerceivedLocationErrorWCS. (AFSIM-2404)
Added new sensor scheduler spin to model spinning radars. (AFSIM-1882)
Added the ability to add access interval duration constraints (interval_constraint) to coverage computations.
Added duration to cyber_attack, which allows a cyber_attack to end before the attack_detection_delay_time and attack_recovery_delay_time of an associated cyber_protect block. (AFSIM-1486)
Added new effect WSF_CYBER_DETONATE_EFFECT that detonates every weapon of a given name or type on a platform. (AFSIM-1493)
Added new phase to cyber attacks called attribution. When the random draw is successful the platform has notionally traced the source of the attack. When this happens, CYBER_SCAN_ATTRIBUTED and CYBER_ATTACK_ATTRIBUTED are fired. (AFSIM-1484)
Added exfiltrate command to WSF_CYBER_MAN_IN_THE_MIDDLE_EFFECT to allow the exfiltration of comms messages back to an attacker. (AFSIM-1495)
Added new feature cyber_constraint which allows a platform to be bound by the resources available. (AFSIM-1481)
Added a Drift orbital maneuver with corresponding class WsfDriftManeuver. (AFSIM-750)
Added a Teardrop orbital maneuver with corresponding class WsfTeardropManeuver. (AFSIM-752)
Added lag_time and offset_time to the specification of targets for maneuvers and via WsfTargetPoint. (AFSIM-752)
Added space track position and velocity extrapolation using orbital propagation, such that WsfTrack.LocationAtTime now returns accurate results. (AFSIM-509)
Added methods to WsfSpaceMover to compute common space mission-relevant geometric quantities (WsfSpaceMover.LookAngleTo, WsfSpaceMover.IncidenceAngle, WsfSpaceMover.TargetElevationAngle, WsfSpaceMover.SquintAngleTo, WsfSpaceMover.DistanceToHorizon, and WsfSpaceMover.LookAngleToHorizon). (AFSIM-1152)
Added a WsfOrbitDesigner that can be used to create a sun-synchronous orbit (see SunSynchronous) given the desired altitude and local time of descending node. (AFSIM-1156)
Added alternative forms of the methods WsfSpaceMover.ComputeRendezvous, and WsfSpaceMover.ComputeIntercept, allowing computation of intercept and rendezvous maneuvers with a target specified by a WsfTargetPoint instance. (AFSIM-692)
Added the ability to target a specific kinematic state when specifying targets for maneuvers and via WsfTargetPoint.
Added WsfSpaceMover.InitialHeading, which calculates the heading of a satellite from its initial velocity state. (AFSIM-697)
Added WsfSpaceMover.SetInitialOrbitalState, which allows specification of orbital state from script, along with new script types ReferenceFrame, CentralBody, CoordinateSystem, OrbitalElements, and OrbitalState. (AFSIM-559)
Added variant of WsfSpaceMover.SetOrbit that accepts an initial epoch as a parameter. (AFSIM-1254)
Added the ability to optimize orbital targeting using a cost function. This is supported in input, optimize_cost, and in scripting, WsfOrbitalOptimizationCost and WsfOrbitalBlendedCost. (AFSIM-1787)
Added orbital targeting pre-computation methods WsfSpaceMover.ComputeIntercept and WsfSpaceMover.ComputeRendezvous accepting a WsfOrbitalOptimizationCost to specify the cost to be minimized. (AFSIM-1787)
Added constructors to the script classes for the targeting class events (WsfTargetManeuver, WsfInterceptManeuver, WsfRendezvousManeuver, WsfNaturalMotionCircumnavigation, WsfTeardropManeuver, and WsfDriftManeuver). (AFSIM-1787)
Added orbital_state input block to WSF_SPACE_MOVER and WSF_NORAD_SPACE_MOVER, which fully describes an orbital state as a two-line element, a position and velocity vector, or a sufficient set of orbital elements. (AFSIM-747)
Added support in the SA (Situation Awareness) Processor (WSF_SA_PROCESSOR), to perceive missiles/weapons, improving overall SA and providing the means to distinguish between aircraft threats and missile threats. (AFSIM-670)
Modified user-override script functions to use ‘Calculated’ instead of ‘Calc’. (AFSIM-670)
Added support for entity persistence and coasting time in the WSF_SA_PROCESSOR. (AFSIM-1769)
Introduced runtime change capability for WSF_SA_PROCESSOR Update Interval Commands as well as a redesign of the event-based implementation of these twelve update types. All individual update interval settings are constrained to be a multiple of this base value. (AFSIM-1356)
Implemented a new perception delay setting for WSF_SA_PROCESSOR that simulates human cognition by delaying a new track’s transition to perceived entity status. Support includes the display_perception_delay, visual_perception_delay, and script method access. (AFSIM-1362)
Implemented initial prediction capability for WSF_SA_PROCESSOR, including a “generic” prediction function and building-block primitives for possible anticipated moves. (AFSIM-672)
Introduced WsfSA_PerceivedItem, which represents a perceived entity or a group. A limit can be placed on the maximum allowable number of them which can be recognized by a WSF_SA_PROCESSOR at once. (AFSIM-671)
Exposed methods for modifying and querying WsfSA_Groups to script. (AFSIM-671)
Added an asset_ignore command to the WSF_SA_PROCESSOR allowing for categories of platforms to be ignored on the ACES Display. (AFSIM-2111)
Added ability in the SA (Situation Awareness) Processor (WSF_SA_PROCESSOR), to set a maximum prioritized threat and target counts. (AFSIM-2282)
Added ability in the SA (Situation Awareness) Processor (WSF_SA_PROCESSOR), to Get, Set, and Reset cognitive limits. (AFSIM-1670)
This is the initial release of the OMS/UCI interface. The intent of this release is to allow users to become familiar with AFSIM’s OMS/UCI implementation and provide feedback. The functionality provided in this release is limited. (AFSIM-1457)
Added regression tests for OMS/UCI messages. (AFSIM-1529)
Propellant for WSF_SIX_DOF_MOVER solid-rocket boosters is now defined and treated as a fuel tank, with positioning based on the reference point of the vehicle. Existing models can be migrated with no effect on performance by following the guidance in Updating Thrust Producer Definitions for AFSIM 2.9. (AFSIM-1182)
Added the ability to explicitly define per-PID update rates, including for inner-loop controllers. (AFSIM-2110)
Added output of jamming beam number to the JAMMING_ATTEMPT event for event_output and csv_event_output.
Added beam_director command to WSF_CUED_LASER_WEAPON to allow specification of a WSF_BEAM_DIRECTOR to attach to. (AFSIM-988)
Added the command, align_heading_with_velocity, that when enabled, sets the WSF_GUIDED_MOVER or the WSF_UNGUIDED_MOVER heading to match owning platform’s velocity vector, rather than orientation. (AFSIM-1974)
Added new script method WsfWeapon.FireAtLocation to fire a weapon without a track at a WsfGeoPoint.
Added contour_variable to horizontal_map in sensor_plot and removed the range limitations on contour_level, enabling the contouring of data other than probability-of-detection. (AFSIM-1136)
Added a wsf_multiresolution plugin. This plugin is an experimental feature preview, and no future compatibility is guaranteed. This provides multiresolution selection of several platform components including comm, fuel, mover, processor, and sensor (using, e.g., command multiresolution_comm and model WSF_MULTIRESOLUTION_COMM) from a script specified set of platform component candidates. Also, multiresolution signatures may be used in a similar way, including acoustic, infrared, optical, and radar. Also included is a multirun table, specified with multiresolution_multirun_table, which may be used to vary fidelity values. (AFSIM-1921, AFSIM-1922, AFSIM-1996, AFSIM-2071)
Development¶
Added a
WsfObserver::MoverChanged
callback to the baseWsfEventPipeInterface
callbacks. Associated with this are small refactors of the code associated with updating a platform’s mover’sWsfMover.mUpdateInterval
based on the maximum mover update interval associated with the event pipe. (AFSIM-2027)Method signatures for
wsf::comm::Comm::Send
andwsf::comm:Message
constructor that take aconst WsfMessage&
argument have been deprecated in favor of aunique_ptr<WsfMessage>
argument. This now puts the onus of creating a copy of the message (if needed) on the caller, allowing for elimination of unnecessary copies. (AFSIM-1270)Marked constructors in
UtScriptData
asexplicit
; inserting into a container of script data (e.g.UtScriptDataList
) may require usingemplace_back
overpush_back
. (AFSIM-762)The maximum number of supported dimensions for a regular_table has increased from 4 to 8, as specified by
RegularTable::cMAX_DIMENSIONS
. It is recommended that all future development needing table inputs utilize theUtTable
format. (AFSIM-1242)The full API of
UtTable
is now thread-safe for concurrent access. (AFSIM-1242)Introduced a strategy-based measurement and track data extrapolation architecture (
wsf::TrackExtrapolation
), along with a strategy object (wsf::TrackExtrapolationStrategy
) and associated types factory (wsf::TrackExtrapolationStrategyTypes
) that populate tracks with customized extrapolation objects. Alternate strategies and extrapolation types can be implemented in plug-ins. (AFSIM-509)Added CMake module and macro
wsf_project_template
that simplifies the configuration of WSF extensions and plugins. (AFSIM-412)WsfXIO_ScriptListPkt
now correctly reports a platform index of 0 for global scripts. (AFSIM-1053)Improved the API of
ut::CloneablePtr
to include move semantics and be more consistent with the API of managed pointers in the C++ standard library. (AFSIM-917)Function template
UtInput::ReadValue
for unsigned types now throws an exception when a negative value is read. (AFSIM-994)Script classes are no longer less-than or equality comparable by default. Any derivation of
UtScriptClass
that implementsLessThan
orEqualTo
should also re-assign membermLessThanComparable
ormEqualityComparable
, respectively, in its constructor. (AFSIM-201)Modified interface of
GenTCP_Connection::Init
to take its argument byunique_ptr
rather than by reference, to explicitly convey ownership of the socket is transferred.Declared class
WsfNavigationErrors
methodsSetGPS_Status
,InitializeGPS_Status
, andGPS_Update
asvirtual
.Fixed several potential issues caused by the misuse of the
typeid
operator; addedut::TypeNameOf
as a cross-platform method of accessing type names. (AFSIM-1070)Data written to
std::cout
,std::cerr
, andstd::clog
is redirected through theut::log::Publisher
. (AFSIM-1166)Method
UtMeasurementData::GetLocationWCS()
now returns aconst UtVec3d&
, and it now correctly converts LLA to WCS before returning the WCS location in the case that the LLA location is valid and the WCS location is not. Because of this change, this method can no longer be used to set the WCS location using the previous version that returned a non-constUtVec3d&
. As with some code in the tracking_filters library, the method had been used to more easily set data using older mutator methods that use an array parameter (i.e.,double aParameter[3]
). (AFSIM-1178)Added a new flag to
UtProcess
that allows executing the process in a new console window on Windows systems. (AFSIM-1199)Removed the deprecated namespace
WsfMeasurementUtil
; any usages should be replaced withUtMeasurementUtil
. (AFSIM-1207)Improved the interface for registering scripted events with
WsfScriptObserver
, requiring extension/plugin registrants to simply provide a function that will pack the arguments for the script, or use a default argument packer. The previousAddEvent
interface returning the event’s unique integer identifier is now deprecated. (AFSIM-1296)Added a user flag
mUsePeakPower
for using peak or average power forWsfEM_Xmtr
, and an explicit method for querying average powerGetAveragePower
. TheGetPower
method now conditionally returns either peak or average power based on this flag, set by user input. (AFSIM-1007)Raw pointer interfaces
WsfRouteNetwork::Add
andWsfRouteTypes::LoadInstance
have been deprecated in favor of overloads expressing ownership semantics viaunique_ptr
.Added export macros to several classes maintaining type lists, including
WsfTrackReportingStrategyTypes
andWsfVisualPartTypes
, to allow plugin developers to extend them with custom object types. (AFSIM-1260)Refactored the
WsfSensorErrorModel
class hierarchy to derive from a more abstract base class in order to support non-spherical and/or non-Gaussian error models. The new base class iswsf::SensorErrorModel
, and the functionality of the legacyWsfSensorErrorModel
now resides in thewsf::StandardSensorErrorModel
class. (AFSIM-1251)Deprecated the
WsfSensorMode::ComputeMeasurementErrors
method. It is a compile-time error for a derived mode to override this method. Any sensor code that uses this method should be refactored to call an implementation ofwsf::SensorErrorModelBase::ApplyMeasurementErrors
, which will both compute and apply measurement errors to a sensor detection result. (AFSIM-1251)Deprecated the
WsfSensorComponent::ComputeMeasurementErrors
method. It is a compile-time error for a derived component to override this method. Any sensor observer code that uses this method should be refactored to callWsfSensorComponent::ComputeSphericalMeasurementErrors
, which will only be invoked when the error model is a type ofwsf::StandardSensorErrorModel
. (AFSIM-1251)Deprecated the sensor mode error access methods in
WsfSensorMode
. In the future sensor errors will only be accessible through theWsfSensorErrorModel
subtype aggregated byWsfSensorMode
(WsfSensorMode::mErrorModelPtr
). (AFSIM-1251)Added a new
ut::CentralPoint
class as the base class ofut::CentralBody
. This new class serves to transform between rotating and inertial frames but does not include the concept of a gravitating ellipsoid asut::CentralBody
does. Other classes that depended onut::CentralBody
such asUtEntity
andUtECI_Conversion
are now dependent onut::CentralPoint
instead.Deprecated methods taking
ut::CentralBody
, replacing them with equivalent methods usingut::CentralPoint
(UtECI_Conversion::SetCentralBody
->UtECI_Conversion::SetCentralPoint
,UtOrbitalPropagatorBase::SetInitialCentralBody
->UtOrbitalPropagatorBase::SetInitialCentralPoint
,ut::OrbitalState::SetCentralBody
->ut::OrbitalState::SetCentralPoint
.Deprecated methods
UtECI_Conversion::GetPrecessionNutationUpdateInterval
,UtECI_Conversion::SetPrecessionNutationUpdateInterval
, andUtEntity::SetPrecessionNutationUpdateInterval
, replacing them withUtECI_Conversion::GetNutationUpdateInterval
,UtECI_Conversion::SetNutationUpdateInterval
, andUtEntity::SetNutationUpdateInterval
, as only the nutation matrix can be cached with acceptable loss of conversion accuracy.Removed the redefinition of
isfinite
on Windows systems inDisValidationUtils.hpp
, allowing developers to usestd::isfinite
in translation units that include it. (AFSIM-978)Added support for scripted sensor detection constraints via the OnSensorDetectionAttempt method. In order to use this method, the
WsfSensor
methodScriptAllowDetection
must be invoked immediately before any calls ofNotifySensorDetectionAttempted
. (AFSIM-1334)Modified CMake to prevent unnecessary rebuilds due to time-stamp changes in the event_pipe auto-generated-code. (AFSIM-1236)
Deprecated method
WsfEventPipeInterface::Record
with a time argument, replaced withWsfEventPipeInterface::RecordDouble
without the time argument. (AFSIM-1421)Added
const char*
constructor tout::script::Data
, so that passing in a string literal effectively uses theData(const std::string&)
constructor, not theData(bool)
constructor (which it was using before). (AFSIM-1660)Fixed
ut::script::Data::operator<
when comparing a string with some other type, so thatstd::map
insertion withut::script::Data
keys works correctly. (AFSIM-1660)Added the ability to run auto-tests on a per plugin basis. Also added all test files to the target in Visual Studio. To use, open the CMakeAutoTestTargets, open the folder for the tool (mission, engage, etc), then build the target corresponding to the plugin of interest. (AFSIM-1655)
Deprecated zero and single parameter virtual methods
GetAzimuthBeamwidth
andGetElevationBeamwidth
inWsfEM_XmtrRcvr
andWsfAntennaPattern
, and replaced them with two and three (respectively) parameter methods to account for electronic beam steering. (AFSIM-1006)Introduced
UtScriptMethodDefine.hpp
which provides new macros for registering script methods that are safer, easier, and more efficient to use than the legacy macros inUtScriptClassDefine.hpp
. The script classes in the util_script library were converted to use the new macros to act as examples on how to use them. The intention is to have all future development try to utilize these new macros, and to have usages of the legacy macros gradually converted to the new macros. (AFSIM-860)Added early access feature preview of a performance profiling interface for C++ code. The profiling interface can be enabled via the mission command line. (AFSIM-1613)
Fixed issue caused by
WsfApplication
managing the globalUtDictionary
. Also added unit tests forWsfApplication
andUtDictionary
. (AFSIM-1410)Added
WsfEM_Antenna::IndicateNondefaultFieldOfView
to allow sensor developers to appropriately note programmatic changes from the default field-of-view. (AFSIM-1858)Deprecated methods
WsfNavigationErrors::GetLocationErrorWCS
,WsfNavigationErrors::GetLocationErrorXYZ
, andWsfNavigationErrors::GetPerceivedLocationWCS
, that took arguments of c-style arrays, replacing them with same-named methods returning coordinate-specific types from theut::coords
namespace. (AFSIM-2404)Improved the extensibility of
WsfTrackManager
by adding virtual keyword to functions. (AFSIM-2536)
Fixed errors in test object functions affecting both WSF_RIGID_BODY_SIX_DOF_MOVER and WSF_POINT_MASS_SIX_DOF_MOVER (AFSIM-1180)
Corrected an issue where the methods
SetTrueAnomaly
andSetMeanAnomaly
inUtOrbitalElements
did not respond well to inputs outside [0, 2pi]. (AFSIM-1422)Removed unused variables from
WsfOrbitalManeuvers::Target
and completed the factoring ofWsfOrbitalManeuvers::Target
to make use ofWsfOrbitalTargeting
. (AFSIM-698)Refactored
WsfOrbitalEvent::Condition
into a hierarchy (deriving fromwsf::space::OrbitalPropagatorCondition
) to allow for easier extension in the future. (AFSIM-2344)
WsfEW_Effect
Can now functionally be extended within plugins. Data classes were missing theWSF_MIL_EXPORT
macro. (AFSIM-1933)WsfEW_Effects
API change to improve readability and pass all availableWsfEM_Interaction
objects to anWsfEW_Effect
. (AFSIM-1805)
Moved the perception and assessment data from WsfSA_Perceive to WsfSA_Processor. (AFSIM-1880)
Separated WsfSA_Processor’s threat and prioritized data update intervals into separate calculation and event pipe data update intervals. (AFSIM-2218)
Combined WsfSA_Processor’s threat processing and group processing into perceived item processing. (AFSIM-2218)
Added group focus, entity coasting, and importance to the event pipe output. (AFSIM-2384)