In this section, we introduce the two instrument mount objects that are currently available in DIRSIG4. At a future time, the mount descriptions will also include the relative location of the instrument on the platform, but at this time the mount is assumed to be located at the center (moment of inertia) of the platform.
At this time there are only three (3) mount types available:
Available Instrument Mounts
A mount that points the instrument in a fixed direction as a function of time.
A mount that sinusoidally scans the instrument in the across-track direction as function of time.
A mount that arbitrarily points the instrument as function of time.
Like all the new features in DIRSIG4, the instrument mount is described by a small XML description that can appear in the new DIRSIG4 Advanced Instrument Description file, or supplied through other mechanisms. Each of the mount models described in the following sections include example XML descriptions that explain how to configure the specific model.
This XML description file can be specified in the DIRSIG3 Input Configuration File (when this file is used with DIRSIG4 only) using the MOUNT_FILENAME variable within the PLATFORM section or as an XML section in the DIRSIG4 instrument description file.
Each mount object is described in an XML element/section that is named "mount" and has an attribute called "type" that is assigned the name of the mount type to be used (for example, "static", "whisk", "tabulated", etc.):
<mount type="static">
...
</mount>
Each of the mount models also support "uncertainty" in the pointing of the instrument. This "uncertainty" is analogous to errors in the pointing of the instrument that is commonly referred to as jitter or pointing error. It can arise from mechanical "slop" in the mount mechanism, vibrations, readout errors from the devices used to determine the mount's position, etc. The support for this "uncertainty" is currently limited to zero-mean, normally distributed random noise in the desired pointing direction. The variances for those random fluctuations are described in the "uncertainty" element/section. An example is shown below:
<mount type="static">
<uncertainty enabled="1" angularunits="degrees">
<xrotation type="normal">
<variance>0.01</variance>
</xrotation>
<yrotation type="normal">
<variance>0.01</variance>
</yrotation>
<zrotation type="normal">
<variance>0.01</variance>
</zrotation>
</uncertainty>
<data angularunits="degrees" ... >
</data>
</mount>
In this example, the variance is 0.01 degrees for each of the axis rotations. The "enabled" attribute in the "uncertainty" start element controls if these values will be used by the mount object.
The most common mount model is called the "static" mount, which allows the user to point the instrument in a fixed direction with respect to the platform. The user supplies fixed right-handed X, Y and Z axis rotation angles which are applied in the order Z, then Y and then X to the nominal instrument line of site (LOS):
But default, the model configures a static mount with these pointing angles all set to zero, which results in the instrument pointing straight down out of the aircraft or satellite bus.
The mount is configured using an XML description that includes the axis rotation angles. The allowed angular units are only "degrees" at this time. In the following example, the instrument is pointed "forward" 10 degrees in the along-track direction, which is a positive X rotation.
<mount type="static">
<data angularunits="degrees">
<xrotation>+10.0</xrotation>
<yrotation>0.0</yrotation>
<zrotation>0.0</zrotation>
</data>
</mount>
The second model currently available is the "whisk scan" mount which allows the user to scan the instrument in the across-track direction. The DIRSIG4 platform models have a nominal heading in the +Y direction, so across-track scanning is an Y axis rotation. At the present time, the X and Z rotations are constant and 0 valued. The "whisk scan" mount is a dynamic mount, so the description includes a scan rate that defines the rate at which the mount sweeps and entire scan. The across-track scan covers user-defined angular range using a sinusoidal function.
The mount is configured using an XML description that includes the scan rate and angular range. At this time, the allowed temporal units for the scan rate are only "hertz" and the allowed angular units are only "degrees". In the following example, the instrument is scanned from -10 degrees ("left side") to +10 degrees ("right side") and back again 10 times a second:
<mount type="whisk">
<data temporalunits="hertz" angularunits="degrees">
<scanrate>10.0</scanrate>
<scanrange>
<start>-10.0</start>
<stop>+10.0</stop>
</scanrange>
</data>
</mount>
The third model currently available is the "tabulated scan" mount which allows the user to arbitrarily scan the instrument relative to the platform. The user can supply a set of X, Y and Z axis rotation values as a function of time and the desired order of the axis rotations values. The DIRSIG4 platform models have a nominal heading in the +Y direction, so along-track scanning is in X axis rotation and across-track scanning is an Y axis rotation. The user only needs to supply known time/rotation pairs and the model will linearly interpolate rotations for intermediate times.
The mount is configured using an XML description that is comprised of a list of entries that contain the scan relative times and the axis rotation values. The allowed temporal units are only "seconds" and the allowed angular units are only "degrees". The rotationorder attribute is assigned a 3-character string that contains the order that the axis rotations should be performed in. For example, "xyz" indicates that the rotations will be performed as X, then Y and then Z.
In the following example, the instrument is scanned from -10 degrees ("left side") to +10 degrees ("right side") and back again 10 times a second. This is similar to the "Whisk scan" example except that the scan is linear rather than sinusoidal because the rotations are linearly interpolated from the following known time/rotations:
<mount type="tabulated">
<data rotationorder="zyx" temporalunits="seconds" angularunits="degrees">
<entry>
<time>0.000</time>
<xrotation>0.0</xrotation>
<yrotation>-10.0</yrotation>
<zrotation>0.0</zrotation>
</entry>
<entry>
<time>0.050</time>
<xrotation>0.0</xrotation>
<yrotation>10.0</yrotation>
<zrotation>0.0</zrotation>
</entry>
<entry>
<time>0.100</time>
<xrotation>0.0</xrotation>
<yrotation>-10.0</yrotation>
<zrotation>0.0</zrotation>
</entry>
</data>
</mount>
It is important that to model a periodic scan (one that doesn't contain abrupt jumps), that the last entry and the first entry in the list have the same axis rotation values.