// copyright 2013-2020 BAE Systems, Thales Group, Object Management Group Inc; 2013 Selex ES, DSTO, Atlas Elektronik, EADS Deutschland GmbH #ifndef ORGOMGC4IDOMAIN_MODELSENSOR_DOMAINTRACK_REPORTINGDEFVAR #define ORGOMGC4IDOMAIN_MODELSENSOR_DOMAINTRACK_REPORTINGDEFVAR #include "Common_Types.idl" #include "Coordinates_and_Positions.idl" #include "Shape_Model.idl" #include "Plot_Reporting.idl" #include "Subsystem_Control.idl" module org { module omg { module c4i { module Domain_Model { module Sensor_Domain { // This service provides facilities to report different types of sensor tracks. module Track_Reporting { // Unique identifier for the objects to which the sensor assessment is attempting to // match the measurement parameters. typedef long assessment_objective_id_type; // A track number from an external protocol (to OARIS) such as a data-link. struct external_track_number_type { // The name of the external protocol, system of network string protocol_name; // The string representation (human readable) of the external track number value. string track_number; }; // This class represents an association between a sensor track and a sensor plot, // supporting a multi-hypothesis many-to-many mapping between plots and tracks. struct plot_association_type { // The likelihood of this sensor plot given the prior sensor track. This is // independent of the likelihood of other track associations. In general, the // association likelihood values for a plot do not sum to one. org::omg::c4i::Domain_Model::Common_Types::confidence_type association_likelihood; // The sensor plot that the sensor track is based on org::omg::c4i::Domain_Model::Sensor_Domain::Plot_Reporting::sensor_plot_key_type plot_id; }; // A string type // The name of an external protocol on which objects (e.g. tracks) could also be // reported. Values are system implementation specific. typedef string protocol_name_type; // Sensor Track Identification typedef unsigned long sensor_track_id_type; // The sensor tracking environment enum environment_type { // In the air AIR, // On land LAND, // On the sea surface SURFACE, // Below the sea surface SUBSURFACE, // Outside the Earth's atmosphere SPACE }; // Type of track initiation enum initiation_mode_type { // Automatic track initiation mode AUTOMATIC, // Track initiation on external request (e.g. from CMS) EXTERNAL_REQUEST }; // The recognition type indicates the type of the real-world physical object being // tracked. // The numeric value is used to map to a system or implementation specific taxonomy // of real-world physical objects that are of tactical interest. typedef unsigned short recognition_type; // The detection lifecycle phase of the track enum track_phase_type { // Track provided based on extrapolated position (dead-reckoned) DEAD_RECKONED, // Track has been lost LOST, // Regular update of new and existing track TRACKED, // No new measurements were available to contribute to this track at the last // opportunity to do so. It is expected that should such measurements be made at the // next opportunity, these will successfully update the track. INACTIVE }; // a simple union type, to represent an optional value union track_filter_parameters_priority_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::track_priority_type value; }; // a simple union type, to represent an optional value union track_filter_parameters_area_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Shape_Model::area_2d_type value; }; // a simple union type, to represent an optional value union track_filter_parameters_height_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::height_interval_type value; }; // a simple union type, to represent an optional value union sensor_track_covariance_matrix_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::covariance_matrix_type value; }; // struct holding keys for class sensor_track_type. struct sensor_track_key_type { // The sensor's unique identifying reference for the track. Sensors may reuse // identifiers after they have deleted the corresponding track. The scheme used for // identifier reallocation is system dependent. sensor_track_id_type sensor_track_id; // Indicates which subsystem published the data or is intended to read it as a // subscriber org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id; }; // a simple union type, to represent an optional value union sensor_track_max_range_limit_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::range_coordinate_type value; }; // a simple union type, to represent an optional value union sensor_track_position_accuracy_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::position_accuracy_coordinate_type value; }; // a simple union type, to represent an optional value union sensor_track_position_accuracy_coordinate_system_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::coordinate_specification_type value; }; // a simple union type, to represent an optional value union sensor_track_sensor_track_pre_identification_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::identity_type value; }; // a simple union type, to represent an optional value union sensor_track_time_of_initiation_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::time_type value; }; // a simple union type, to represent an optional value union sensor_track_velocity_accuracy_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::velocity_accuracy_coordinate_type value; }; // a simple union type, to represent an optional value union sensor_track_velocity_accuracy_coordinate_system_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::coordinate_specification_type value; }; // a simple union type, to represent an optional value union sensor_track_track_quality_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::track_quality_type value; }; // a simple union type, to represent an optional value union sensor_track_time_of_first_detection_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::time_type value; }; // a simple union type, to represent an optional value union sensor_track_time_of_last_detection_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::time_type value; }; // A sequence type, to represent multiple values. typedef sequence track_filter_parameters_protocol_name_type; // a simple union type, to represent an optional value union sensor_track_priority_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::track_priority_type value; }; // a simple union type, to represent an optional value union sensor_track_amplitude_type switch (boolean) { // the value when present case TRUE : org::omg::c4i::Domain_Model::Common_Types::strength_type value; }; // A sequence type, to represent multiple values. typedef sequence sensor_track_sensor_function_id_type; // a simple union type, to represent an optional value union sensor_track_activity_id_type switch (boolean) { // the value when present case TRUE : assessment_objective_id_type value; }; // a simple union type, to represent an optional value union sensor_track_observed_function_id_type switch (boolean) { // the value when present case TRUE : assessment_objective_id_type value; }; // a simple union type, to represent an optional value union sensor_track_equipment_id_type switch (boolean) { // the value when present case TRUE : assessment_objective_id_type value; }; // a simple union type, to represent an optional value union sensor_track_platform_id_type switch (boolean) { // the value when present case TRUE : assessment_objective_id_type value; }; // a simple union type, to represent an optional value union sensor_track_environment_type switch (boolean) { // the value when present case TRUE : environment_type value; }; // A sequence type, to represent multiple values. typedef sequence sensor_track_external_track_number_type; // a simple union type, to represent an optional value union sensor_track_initiation_mode_type switch (boolean) { // the value when present case TRUE : initiation_mode_type value; }; // A sequence type, to represent multiple values. typedef sequence sensor_track_based_on_type; // a simple union type, to represent an optional value union sensor_track_sensor_track_pre_recognition_type switch (boolean) { // the value when present case TRUE : recognition_type value; }; // The criteria that must all be met for a track to pass the filter. The filter // attributes are applied with and-wise logic. For or-wise logic define multiple // filter objects. struct track_filter_parameters_type { // The mode in which the tracks are filtered. org::omg::c4i::Domain_Model::Common_Types::filter_mode_type mode; // Filter tracks that are also being reported on these protocols. track_filter_parameters_protocol_name_type protocol_name; // If true, tracks that pass the filter are included in transmission and/or // reception dependent upon the mode attribute. Otherwise, they are excluded. boolean is_inclusive; // A priority criterion. A track must have a priority greater than or equal to this. track_filter_parameters_priority_type priority; // An area which is optionally part of the filter. track_filter_parameters_area_type area; // A track quality criterion. A track must have a track quality within the interval // defined to pass the filter. If no filtering is required then an interval // including all quality values is defined. org::omg::c4i::Domain_Model::Common_Types::quality_interval_type quality; // The height values that are optionally part of the filter. track_filter_parameters_height_type height; }; // The method represents a write of a single sensor track (air, land, space or // surface) to the CMS. // The write may be periodic or not. // This service allows the CMS to obtain an overview of (real and/or simulated) air // / land / space / surface objects observed or simulated. Information may cover all // aspects of a track such as kinematic and amplifying information. // The service does not cover: //
    //
  • additional track information provision dedicated for engagement // support,
  • //
  • special search functions such as cued search, volume search and horizon // search (however, if such a search function is initiated by means of another // service, the tracks shall be provided by this service),
  • //
// Although the service focuses on radar as an example of a sensor, the service also // applies to other sensors, like IR/EO sensors and ECM/ESM sensors. // The actor is the Combat Management System. // The service starts when: //
    //
  • if the service does provide registration capabilities: the service "Register // interest" has completed successfully, or
  • //
  • if the service does not provide registration capabilities: the service // "Provide subsystem services" has completed successfully for this service.
  • //
// The sensor provides, periodically or on event, a set of sensor tracks observed by // the sensor. These may be sensor point or bearing tracks. The set of sensor tracks // includes: //
    //
  • Track updates of existing and new sensor tracks. These are provided when // there are sufficient measurements (e.g. plots) in the last observation cycle, // which may be associated with the sensor track.
  • //
  • Dead-reckoned tracks. These are sensor track updates for which in the last // observation cycle there are no measurements that may be associated with the // sensor track. For dead-reckoned tracks, the sensor track information (e.g. // kinematics) is extrapolated. The dead-reckoned tracks may become"normal" tracks // again if, in the next scan, there are measurement(s) that may be associated with // the track. Alternatively, dead-reckoned tracks (after n unsuccessful scans) may // become lost tracks.
  • //
  • Lost tracks. These are sensor track updates that are reported once, if in // the last n scans, there are no measurements that may be associated with the // sensor track. The value of n is typically a sensor parameter that is managed by // the service "Manage subsystem parameters".
  • //
// Some sensors are not capable of reporting lost and/or dead-reckoned tracks. // The sensor may also provide single sensor tracks periodically or on event. // The service ends with success when: //
    //
  • if the service does provide registration capabilities: the service "Register // interest" has completed successfully for a deregistration request, or
  • //
  • if the service does not provide registration capabilities: the sensor is // shutdown using service "Shut down".
  • //
// Encapsulation of a sensor track struct sensor_track_type { // Additional, vendor-specific information org::omg::c4i::Domain_Model::Common_Types::anonymous_blob_type additional_information; // The number of elements in the covariance matrix is dependent on the sensor. When // present, the position_accuracy and velocity_accuracy attributes should not be // present. sensor_track_covariance_matrix_type covariance_matrix; // Environment of the track (air, surface etc) sensor_track_environment_type environment; // Initiation mode of track (automatic or externally initiated) sensor_track_initiation_mode_type initiation_mode; // Indication whether or not a track is jamming. boolean jammer_indication; // Maximal range for a bearing track sensor_track_max_range_limit_type max_range_limit; // The location of the track as calculated in the sensor's chosen coordinate system // at the stated time. org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::position_coordinate_type position; // The sensor's stated accuracy for its calculated position. // When present, the covariance_matrix attribute should not be present. sensor_track_position_accuracy_type position_accuracy; // The coordinate system chosen by the sensor for reporting accuracy. sensor_track_position_accuracy_coordinate_system_type position_accuracy_coordinate_system; // The coordinate system chosen by the sensor. org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::coordinate_specification_type position_coordinate_system; // The sensor's unique identifying reference for the track. Sensors may reuse // identifiers after they have deleted the corresponding track. The scheme used for // identifier reallocation is system dependent. #ifdef DDS_XTYPES @key sensor_track_id_type sensor_track_id; #else sensor_track_id_type sensor_track_id; #endif // Identification information for the sensor track (if available) sensor_track_sensor_track_pre_identification_type sensor_track_pre_identification; // Recognition information for the sensor track (if available) sensor_track_sensor_track_pre_recognition_type sensor_track_pre_recognition; // Whether the CMS should process the track as having been synthetically generated // as opposed to corresponding to an actual detection in the real world. boolean simulated; // The time at which the information in this object is valid, in particular its // position. org::omg::c4i::Domain_Model::Common_Types::time_type time_of_information; // The time at which the sensor first determined the existence of this track. sensor_track_time_of_initiation_type time_of_initiation; // Track phase (e.g. TRACKED, DELETED, LOST) track_phase_type track_phase; // The velocity of the track as calculated in the sensor's chosen coordinate system // at the stated time. org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::velocity_coordinate_type velocity; // The sensor's stated accuracy for its calculated velocity. // When present, the covariance_matrix attribute should not be present. sensor_track_velocity_accuracy_type velocity_accuracy; // The coordinate system chosen by the sensor for reporting accuracy. sensor_track_velocity_accuracy_coordinate_system_type velocity_accuracy_coordinate_system; // The coordinate system chosen by the sensor. org::omg::c4i::Domain_Model::Common_Types::Coordinates_and_Positions::coordinate_specification_type velocity_coordinate_system; // The sensor specific quality of this track in comparison to its typical tracks. sensor_track_track_quality_type track_quality; // The time at which the sensor first made measurements leading to the detection of // the existence of this track (as opposed to the time of initiation when there was // sufficient confidence in one or more detection to initiate a track). sensor_track_time_of_first_detection_type time_of_first_detection; // The time at which the sensor last detected the existence of this track. sensor_track_time_of_last_detection_type time_of_last_detection; // The relative priority of a track with regard to the sensor's resources sensor_track_priority_type priority; // The amplitude or strength of the measurement(s) being tracked by the sensor sensor_track_amplitude_type amplitude; // The sensor's assessment of the activity being undertaken by the real world object // represented by the sensor track as observed by the sensor. sensor_track_activity_id_type activity_id; // The sensor functions whose processing has contributed to the track's data. sensor_track_sensor_function_id_type sensor_function_id; // The sensor's assessment of the function being undertaken by the equipment of real // world object represented by the sensor track that has been observed by the // sensor. sensor_track_observed_function_id_type observed_function_id; // The sensor's assessment of the equipment on the real world object represented by // the sensor track that has been detected by the sensor. sensor_track_equipment_id_type equipment_id; // The sensor's assessment of the name of the platform or class of platform of the // real world object. sensor_track_platform_id_type platform_id; // The set of plots on which the creation or update of sensor track is based sensor_track_based_on_type based_on; // A track number for this sensor track from another protocol sensor_track_external_track_number_type external_track_number; // Indicates which subsystem published the data or is intended to read it as a // subscriber #ifdef DDS_XTYPES @key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id; #else org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id; #endif }; #ifndef DDS_XTYPES #pragma keylist sensor_track_type sensor_track_id subsystem_id #endif // A sequence type, to represent multiple values. typedef sequence sensor_track_set_element_type; // The method represents a single write of a set of sensor tracks to the CMS. The // write may be: // - periodic or not // - include all tracks observed during a sensor scan // - be an update of just one track (a set of 1) if this is how the sensor works // This service allows the CMS to obtain an overview of (real and/or simulated) air // / land / space / surface objects observed or simulated. Information may cover all // aspects of a track such as kinematic and amplifying information. // The service does not cover: //
    //
  • additional track information provision dedicated for engagement // support,
  • //
  • special search functions such as cued search, volume search and horizon // search (however, if such a search function is initiated by means of another // service, the tracks shall be provided by this service),
  • //
// Although the service focuses on radar as an example of a sensor, the service also // applies to other sensors, like IR/EO sensors and ECM/ESM sensors. // The actor is the Combat Management System. // The service starts when: //
    //
  • if the service does provide registration capabilities: the service "Register // interest" has completed successfully, or
  • //
  • if the service does not provide registration capabilities: the service // "Provide subsystem services" has completed successfully for this service.
  • //
// The sensor provides, periodically or on event, a set of sensor tracks observed by // the sensor. These may be sensor point or bearing tracks. The set of sensor tracks // includes: //
    //
  • Track updates of existing and new sensor tracks. These are provided when // there are sufficient measurements (e.g. plots) in the last observation cycle, // which may be associated with the sensor track.
  • //
  • Dead-reckoned tracks. These are sensor track updates for which in the last // observation cycle there are no measurements that may be associated with the // sensor track. For dead-reckoned tracks, the sensor track information (e.g. // kinematics) is extrapolated. The dead-reckoned tracks may become"normal" tracks // again if, in the next scan, there are measurement(s) that may be associated with // the track. Alternatively, dead-reckoned tracks (after n unsuccessful scans) may // become lost tracks.
  • //
  • Lost tracks. These are sensor track updates that are reported once, if in // the last n scans, there are no measurements that may be associated with the // sensor track. The value of n is typically a sensor parameter that is managed by // the service "Manage subsystem parameters".
  • //
// Some sensors are not capable of reporting lost and/or dead-reckoned tracks. // The sensor may also provide single sensor tracks periodically or on event. // The service ends with success when: //
    //
  • if the service does provide registration capabilities: the service "Register // interest" has completed successfully for a deregistration request, or
  • //
  • if the service does not provide registration capabilities: the sensor is // shutdown using service "Shut down".
  • //
// A set of sensor tracks (to enable batch reporting) struct sensor_track_set_type { sensor_track_set_element_type element; // Indicates which subsystem published the data or is intended to read it as a // subscriber #ifdef DDS_XTYPES @key org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id; #else org::omg::c4i::Domain_Model::Common_Types::subsystem_id_type subsystem_id; #endif }; #ifndef DDS_XTYPES #pragma keylist sensor_track_set_type subsystem_id #endif }; }; }; }; }; }; #endif