WSF 1.8.0 - 12 Dec 2013

General

  • The ‘reports_spatial_domain’ input, which had been an option in the sensor mode to set all tracks to the given spatial domain, is now deprecated. This input had been used as a work-around for providing a spatial domain. It is being removed both because the work-around is no longer necessary and because the meaning can be misinterpreted as an option for the sensor to report tracks of the given domain. Instead, to select reported tracks by domain one should use the ignore_domain input.

Corrections

  • (CR 9265) Track processors will now recognize and process local tracks updates from other track processors that are internally linked.

  • (CR 10316) Fixed a problem in the Sensor Plot Horizontal Map function, where the orientation of the maps in downrange / crossrange format were incorrectly rotated.

  • (CR 10328) Fixed an input processing problem with bistatic_signature that have multiple frequencies.

  • (CR 10449) WSF_ESM_SENSOR now reports the emitter types in its associated tracks, along with a listing of the signal indexes that make up the WsfTrack. The methods to access emitter data are defined in Emitter Methods. Access to this list is similar to the current Signal Methods. The reported_emitter_type is used to define how the emitter type is reported.

  • (CR 10481) If a weapon has a firing_interval larger than a salvo_interval no longer causes subsequent weapons in a fired salvo to fail. The larger interval is used.

  • (CR 10522) Fixed a problem where the waypoint movers (WSF_AIR_MOVER, WSF_GROUND_MOVER, etc…) would not respect the maximum speed or altitude mover parameters when processing the first point of a route.

  • Fixed an issue with the jamming perceptions on Sensors and Comms using the jamming power after many of the Electronic Warfare Effects were applied causing it to incorrectly think that there was/wasn’t jamming perceived.

  • Fixed an issue in the WsfTrackManager where deletions from the raw track list and filtered raw track list, during track purges, were causing a very intermittent problem. This was due to the fact that the WsfTrackId was being used as a parameter to delete a filtered raw track, but this parameter became invalid, because it was part of the already deleted raw track.

  • Fixed an issue where the WSF_STATE_MACHINE processor’s variable ‘STATE_MACHINE’ was always null.

  • Corrected an issue in sensor_plot horizontal_map where when using an ESM sensor as the plotting sensor to detect a radar with a maximum_request_count greater than 0 the sensor would not interact (i.e. detect) the radar. Issue was with an internal listener interface that queues the ESM detections for tracking type radars during the track radar’s detection attempt instead of through the ESM systems normal detection process.

  • Corrected a problem where global spherical zones did not work.

  • Fixed a couple issues with how the WsfRouteFinder handled impossible routes (completely blocked or perhaps the target location inside of an avoidance region). Added SetMaxArcLength() method which breaks up long portions of a turn on the route provided with several waypoints along the arc.

Enhancements

  • Added Auxiliary Data Methods to the WsfTask object.

  • Added noise_cloud. This feature will generate fractal noise clouds that may be used to attenuate sensor and comm signals.

  • Moved the behavior_tree feature to the WSF_SCRIPT_PROCESSOR processors. A behavior is defined ‘globally’ at the simulation level and is unique by name.

    • The syntax for attaching behavior nodes to a behavior_tree is changed, you now use “behavior_node <name>” instead of “behavior <name> end_behavior”.

    • Now all processors that derive from the WSF_SCRIPT_PROCESSOR can use behavior trees, including the WSF_QUANTUM_TASKER_PROCESSOR and the WSF_RIPR_PROCESSOR.

    • The script block “query_bid_type” is specific to WSF_RIPR_PROCESSOR and no longer valid when defined inside of a behavior. All example agents and training modules have been updated accordingly.

    • The “PROCESSOR” variable for behavior script defaults to a WsfProcessor. You can cast the variable to a different processor type if you attach the behavior to a behavior_tree on a processor derived from script processor.

  • When editing a behavior, at the processor level, now all behaviors of the given name on that processor’s behavior

    tree are edited not just the first one of that name found.

  • Added finite state machines to the WSF_SCRIPT_PROCESSOR

    • Any state in the state machine can have its own behavior_tree which is processed when the state is evaluated.

  • Added the new WSF_PERCEPTION_PROCESSOR processor. It provides a cognitive model of threat and asset perception.

  • Added the new WSF_QUANTUM_TASKER_PROCESSOR processor. It provides more access to the various steps of coordinated optimal tasking. Compatible with existing WSF_TASK_MANAGER processors, e.g. it can send receive task messages.

  • Added script methods to WsfPlatform and WsfWeapon for weapon status, for example:

    • int WeaponsActiveFor(WsfTrackId aTrackId)

    • WsfPlatformList ActiveWeaponPlatformsFor(WsfTrackId aTrackId)

  • Added WsfMover script SetTSPI_FileName(), to assist with run-time replacement of TSPI trajectory data files.

  • Added WsfObserver callback (and the Event Output logging) for MOVER_STAGED and MOVER_BURNED_OUT.

  • Updated WSF_GUIDANCE_COMPUTER by adding the ability to switch phases upon obtaining autonomous sensor track of the target. Requires “next_phase when sensor_track_established” sequence in a phase…end_phase definition block.

  • Added Observable event PlatformCapabilityChanged. This event indicates when a platform gains or loses the ability to supply ammunition, fuel, vehicle recovery, vehicle repair, or automatic dependent surveillance broadcast. A word is contained within DIS Entity State PDUs that enumerate the abilities just mentioned, and the mapped word bits provide Boolean values that can be examined for changes. The event output item PLATFORM_CAPABILITY_CHANGED is also attached to this event, to log such transitions.

  • Changed WSF_DIRECTION_FINDER_PROCESSOR. Added field filter_bypass, which allows bypassing the Kalman filter. This makes the output simply the triangulation intersection points. Also added field maximum_time_difference, to allow adjusting which non-synchronous measurements should be fused. A high value, defaults to the original operation for stationary targets. Changed the diverge-bearing gate, to allow more measurements to fuse.

  • Added conditional_section to conditionally include or exclude inputs.

  • Added new class WsfMTI_TableManager. It contains some functionality previously in WsfRadarSensor. In WsfRadarSensor, extracted MTI Table inner class into new WsfMTI_TableManager. Generally renamed gmti to more general mti. Also added a feature to allow specify an external MTI table in csv format (speed vs attenuation).

  • Added script functions list_attr(), attr_count(), attr_name_at() to enumerate an object’s attributes.

  • Added the command mti_maximum_range to mti_adjustment which specifies a maximum range to be used with the MTI “tables” only. If the target is farther away, any MTI table will NOT be applied.

  • Added a bi-static error model. Search command bistatic_error. The error model is based on paper “A Three-dimensional Bistatic Radar Target Position Measurement Error Model”, R. K. Lynn.

  • In sensor_plot, added the capability to evaluate required_jamming_power in both vertical and horizontal maps now, instead of just horizontal.

  • Added the capability to plot a spherical_map with a fixed altitude in lieu of the previous fixed range.

  • Finalized the Sensor Plot Sensor Plot Clutter Table generation feature, which was previously undocumented.

  • Extended the surface_clutter_table feature to optionally utilize site specific information (as can be generated by Sensor Plot).

  • Added WSF_CUED_LASER_WEAPON and the associated sensor, WSF_BEAM_DIRECTOR. These had been in a separate library prior to this release.

  • Reworked WSF_HEL_LETHALITY so that effects can be specified by platform type, platform type and region, or category. Each effect allows for a damage radius. If no damage radius is specified, the energy and energy density are computed using the full width of the beam (usually, measured from the center to the point where intensity is 1/e). The legacy format is still supported, but it is deprecated.

  • Added on_target_damaged and on_target_killed script options for weapon_effects. These scripts will override the default weapon effects behavior (to apply damage to the target platform and remove the target platform, respectively). Thus, they are useful for applying nonstandard effects, such as destroying a sensor with a high-energy laser.

  • Added the default2 keyword to automatically configure DIS broadcast and multicast interfaces on a second network controller for machines with two network interface controllers.

  • Added new module, optional project, wsf_helcomes, which provides the non-exportable helcomes fluence model. This module allows interfacing WSF with the SAIC developed Army’s tool called HELCoMES (High Energy Laser Consolidated Modeling and Engagement Simulation). This interfaces utilizes JNI (Java Native Interface) and requires a JDK (Java Development Kit) installed to build and run.

  • Added in the capability to sensor_plot to output jammer_to_mds

  • Added in the capability to sensor_plot to utilize a script to manipulate and output from the sensor detection data using the Script Variable input commands and defining a script.

  • Added a way to output WsfDraw output to a separate draw_file that can be loaded by the WSF_IDE.

  • Added the ability to cause intentional stand-off-range fusing in the WSF_WEAPON_FUSE to detonate upon approach, prior to achieving point of closest approach.

  • Added WSF_TOWED_MOVER to the Predefined Mover Types. A platform with this type of mover is deployed by being launched from another platform. The towed asset is reeled out at a specified rate for a specified distance, and then once deployed, it will follow the course of the lead platform. The towed asset can be reeled back onto the lead platform by setting a reel in time and reel in rate.

  • Added WSF_SUBSURFACE_RADIO_TRANSCEIVER to the Predefined Communications Types. The communication system modifies constraints for communication-horizon limits in order to permit communications with platforms, such as submarines, that operate below the surface.

  • Added support for TADIL-J 2-0 messages.

  • Added a script access method to query threats from a WsfThreatProcessor.

  • Added two keywords options to set the orientation rate field in the DIS Entity State PDU.

Developer Items

  • The primary software build utility for WSF is now CMake. The existing set of project files for Windows and make system and files for Linux will still operate, for unclassified builds only, for this release. They will not be supported after this release, and developers are encouraged to migrate to CMake.

  • Visual Studio 2012 builds are now supported.

  • Visual Studio 2005 builds are no longer supported.

  • Up-casting with UtScript is no longer allowed by default. Upcasting example: WsfMessage msg = xyz; WsfTrackMessage trackMessage = (WsfTrackMessage)msg; To enable upcasting for your type, you must either implement UtScriptClass::UpcastFromType() or set UtScriptClass::mIsScriptAccessible=true and inherit your application class from the UtScriptAccessible class AND implement GetScriptClassName(). Before this change, upcasting was unchecked and unsafe; upcasting is now safe, an upcast failure results in a ‘null’ script object but will not crash.