:orphan: .. **************************************************************************** .. CUI .. .. The Advanced Framework for Simulation, Integration, and Modeling (AFSIM) .. .. The use, dissemination or disclosure of data in this file is subject to .. limitation or restriction. See accompanying README and LICENSE for details. .. **************************************************************************** WSF_EOIR_SENSOR --------------- .. model:: sensor WSF_EOIR_SENSOR .. parsed-literal:: sensor :model:`WSF_EOIR_SENSOR` ... :ref:`Articulated_Part_Commands` ... ... :command:`sensor` Commands ... // `Miscellaneous Commands`_ call_sensor_track_observers_ ... mode ... :ref:`Antenna_Commands` ... ... `Receiver Commands`_ ... ... `Mode Commands`_ ... end_mode end_sensor Overview ======== :model:`WSF_EOIR_SENSOR` implements a simplistic optical or infrared imaging sensor. This sensor produces a pseudo-image (of type :class:`WsfImage`) contained within a **WSF_IMAGE_MESSAGE** (:class:`WsfImageMessage`). Analyzing the pseudo-image can be accomplished by linking the sensor to a :model:`WSF_IMAGE_PROCESSOR`, which simulates the process of image analysis and creates tracks. .. block:: WSF_EOIR_SENSOR Miscellaneous Commands ====================== .. command:: call_sensor_track_observers Specifies if the 'sensor track observers' should be called. If true, sensor track observer events will be invoked, which enables the generation of data that allows visualization tools to display detection lines during the image formation process. These extra events, however, may cause problems to some observers if they haven't been modified to ignore these events, which is the reason for the default being 'false'. Default: false Mode Commands ============= .. command:: angular_resolution Specifies the angle subtended by a pixel. .. note:: Either angular_resolution_ or pixel_count_ must be provided. .. command:: pixel_count Specifies the width and height in pixels of images from this sensor. If this command is specified, angular_resolution is ignored. Instead, the angular resolution is computed by the ratio (:command:`azimuth FOV <_.antenna_commands.azimuth_field_of_view>`)/(horizontal-count) and (:command:`elevation FOV <_.antenna_commands.elevation_field_of_view>`)/(vertical-count). See :method:`WsfSensor.SetFOV_Azimuth` and :method:`WsfSensor.SetFOV_Elevation` to change the sensor's FOV from script. .. note:: Either angular_resolution_ or pixel_count_ must be provided. .. command:: band [ visual | short | medium | long | very_long ] Defines the band of radiation that the sensor will detect. The wavelengths of the bands are defined as follows: .. parsed-literal:: visual 380-760 nm short 1-3 :math:`\mu`\ m medium 3-5 :math:`\mu`\ m long 8-12 :math:`\mu`\ m very_long 15-30 :math:`\mu`\ m Default: visual .. command:: atmospheric_attenuation per Sometimes called the the extinction coefficient, this is the fraction of the signal (in the closed range 0 to 1) that is attenuated per unit of distance traveled at sea level. The value is adjusted to account for the density of air with the change in altitude. This value is used to compute the transmittance. The atmosphere is modeled as a set of layers 1 kilometer thick with the path through each layer processed separately. The total transmittance along a path is computed using: :math:`\tau = \prod_i \tau_i \qquad \mbox{where} \qquad \tau_i = e^{-c f_i R_i}\,` **c** is value of **atmospheric_attenuation**, **f**\ :sub:`i` is the ratio of the average air density in the layer to the density of air at sea level and **R**\ :sub:`i` is the path length through the layer. Default: 0.0 per meter (no attenuation) .. command:: background_radiance // Specifies the radiance of the background. Default: 0.0 .. command:: background_radiance_above_horizon // .. command:: background_radiance_below_horizon // These two commands provide an alternative to the fixed background radiance provided by background_radiance_. This is useful for airborne sensors where the sensor may be looking up and the sky is the background, or looking down where the ground is the background. By default, the transition occurs instantaneously at the horizon. The background_transition_angle_ command may be used to provide a more gradual transition. .. command:: background_transition_angle This command is used along with background_radiance_above_horizon_ and background_radiance_below_horizon_ to specify a region where the transition is made from using the below horizon and above horizon background radiance values. The specified angles are relative to the local angle to the horizon with positive values being above the horizon and negative values being below the horizon. If the target is within the transition region defined by these angles, the resulting background radiance will be linearly interpolated between the above horizon and below horizon values. Default: 0.0 deg 0.0 deg (i.e., No transition region) .. command:: detection_threshold Defines the ratio of signal to noise required to declare a successful detection. Default: none (must be specified). .. command:: noise_equivalent_irradiance / The "noise equivalent irradiance' (NEI) of the receiver. Default: none (must be specified) Receiver Commands ================= The following commands are used from the common :command:`_.receiver`. .. command:: antenna_pattern Defines the name of a pseudo-antenna pattern (defined with the :command:`antenna_pattern` command, which can be used to account for aspect-dependent effects caused by the aperture through which the sensor is looking. Note that if the antenna pattern reflects the losses through a fixed aperture (i.e., the sensor is mounted behind a window of some sort), the :command:`slew_mode <_.articulated_part.slew_mode>` of the associated :command:`articulated part <_.articulated_part>` should be **slew_mode fixed** (the default value). Otherwise, the antenna pattern will move with sensor cues. Default: If no antenna pattern is specified, the effect will be 0 dB (i.e., no adjustment) .. command:: internal_loss Defines an additional constant loss that can be applied to the computation. Default: 0 dB (i.e., No additional losses) .. note:: This should be a positive dB value as it appears in the denominator. Infrared Mode Equations ======================= Determine the infrared radiant intensity of the target (point source) [watts/steradian] I\ :sub:`s` = :command:`infrared_signature`\ (az,el) Determine the background radiant intensity [watts/steradian] I\ :sub:`b` = background_radiance_ * :command:`optical_signature`\ (az,el) Determine the contrast radiant intensity [watts/steradian] I\ :sub:`c` = I\ :sub:`s` - I\ :sub:`b` Determine the atmospheric transmittance :math:`\tau` = f(atmospheric_attenuation_) Determine the effective target irradiance [watts/m^2] E\ :sub:`eff` = (:math:`\tau` * I\ :sub:`c`) / R\ :sup:`2` Determine the adjusted target irradiance to account for structural masking E\ :sub:`eff` = E\ :sub:`eff` * :command:`masking_pattern`\ (az,el) Determine the signal to noise S/N = E\ :sub:`eff` / :command:`NEI ` Visual Mode Equations ===================== .. note:: The visual mode equations are very rudimentary. Effectively if the target is in the field-of-view and there is no structural masking, the target will be detected. Determine the inherent contrast of the target [non-dimensional] C\ :sub:`s` = :command:`inherent_contrast`\ (az,el) Determine the atmospheric transmittance :math:`\tau` = f(atmospheric_attenuation_) Determine the inherent contrast of the target at the sensor [non-dimensional] C\ :sub:`s` = C\ :sub:`s` * :math:`\tau` Determine the background radiance [watts/m^2/steradian] L\ :sub:`b` = background_radiance_ Determine the background radiance at the sensor [watts/m^2/steradian] L\ :sub:`bs` = (L\ :sub:`b` * :math:`\tau`\ ) + path_radiance Determine the target contrast against the background [non-dimensional] C\ :sub:`s` = C\ :sub:`s` * (L\ :sub:`b` / L\ :sub:`bs`\ ) Determine the adjusted contrast to account for structural masking C\ :sub:`s` = C\ :sub:`s` * :command:`masking_pattern`\ (az,el) Determine the signal to noise S/N = 0 if contrast is 0, otherwise 1.