Examples of using the Classic Platform model are included in the Framing Array Tutorial and the Pushbroom Scanner Tutorial.
The following example is provided to illustrate how to use the the "generic" platform model with the "tasking" feature. Both of these features are only available in DIRSIG4.
In this example, we will create a positioning history for a platform that is flying at an altitude of 1200 [m], traveling along the Y-axis at 100 [m/s]. We want the platform to pitch such that it keeps the instrument staring at the origin (0, 0, 0) during the flight. The extreme pointing angles of the flight will be +/- 45 degrees. Therefore, at the start of the flight, the platform will be at a Y location of -1200 [m] and pitched "up" +45 degrees. At the end of the flight, the platform will be at a Y location of +1200 [m] and pitched "back" -45 degrees. The total distance covered by the flight is 2400 [m] which means that at a velocity of 100 [m/s] the flight will take 24 seconds. We arbitrarily pick the start time and stop time to be 0 and 24 seconds, respectively.
Although it does not matter for this situation because there is only one axis of rotation, we have specified the rotation order to be Z, then Y and then Z.
This configuration results in the following Generic Platform XML File:
<platform type="generic>
<method type="raw"></method>
<data rotationorder="zyx" angletype="absolute" spatialunits="meters" angularunits="radians">
<entry>
<datetime type="relative">0.000</datetime>
<xlocation>0</xlocation>
<ylocation>-1200.0</ylocation>
<zlocation>1200.0</zlocation>
<xrotation>0.7853981630</xrotation>
<yrotation>0.00000</yrotation>
<zrotation>0.00000</zrotation>
</entry>
<entry>
<datetime type="relative">24.000</datetime>
<xlocation>0</xlocation>
<ylocation>1200.0</ylocation>
<zlocation>1200.0</zlocation>
<xrotation>-0.7853981630</xrotation>
<yrotation>0.00000</yrotation>
<zrotation>0.00000</zrotation>
</entry>
</data>
</platform>
The instrument for this example is a simple 2D framing array. The specifics of most of the focal plane geometry are not important, but the SCAN_RATE of the instrument is. In this case, we have decided that the scan rate for the instrument will be 10 Hz or a scan period of 0.1 seconds. Don't forget that the SCAN_RATE variable in the INSTRUMENT section of the Input Configuration File is really a scan period (an early bug/mistake that would break too many user files to fix now). However, in DIRSIG4, you can place the SCAN_RATE variable in each BAND section and the units are Hertz.
We named the Generic Platform XML File from above example.ppd in this example and have specified it using the XML_POSITION variable.
Finally, we need to create at least one task to have this simulation create any data. In this case, we have created two tasks. The first will collect a series of captures within the time window from 0 - 2 seconds. During this time window, we know that platform will be looking forward at the scene at roughly a 45 degree angle. This task is 2 seconds long, which means that with a 0.1 second scan period, 20 captures or images will be acquired as the platform moves over the scene. The second task will collect a series of captures within the time window from 22 - 24 seconds. This is the corresponding angles from the first task, however, we will be looking "back" on the scene rather that "forward". This task is the same length so it will also produce 20 captures or images, however, tasks can have any start and stop time, and therefore any length.
The following excerpt shows the relevant sections of the Input Configuration File for this example.
PLATFORM {
INSTRUMENT {
TYPE = FRAMING_ARRAY
FOCAL_LENGTH = 100.000000
BAND_LIST {
BAND {
NAME = Band #1
SCAN_RATE = 10.0
MINIMUM_WAVELENGTH = 0.5000
MAXIMUM_WAVELENGTH = 0.8000
DELTA_WAVELENGTH = 0.1000
X_PIXELS = 256
Y_PIXELS = 256
X_PIXEL_SIZE = 12.0
Y_PIXEL_SIZE = 12.0
IMAGE_FILENAME = example.img
}
}
}
XML_POSITION = example.ppd
}
TASKS {
TASK {
RELATIVE_START_TIME = 0.00000
RELATIVE_STOP_TIME = 2.00000
}
TASK {
RELATIVE_START_TIME = 22.00000
RELATIVE_STOP_TIME = 24.00000
}
}