Summary
The "tabulated" mount allows the user to define a periodic scan by providing XYZ translation and XYZ rotation angles as a function of "scan fraction" rather than time. This provides a way to define where the mount is in the scan pattern independent of time, allowing the scan rate to be easily increased or decreased.
Related Materials
The following demos, manuals and tutorials can provide additional information about the topics at the focus of this demo:
-
Related Demos
-
The TabulatedMount1 demo focuses on a rotational scan pattern.
-
-
Related Manuals
-
The Tabulated section of the BasicPlatform mounts manual.
-
-
Related Tutorials
-
None.
-
Details
A scan fraction of 0 is the start of the scan and a scan fraction of 1 is the end of a scan. As a result, a fraction of 0.5 is the middle of the scan. For a continuous repeating scan, then the state at 0 and 1 should be the same.
Note
|
Supplying scan fractions less than 0 or greater than 1 results in an error. |
The platform in this demo has two instances of the "tabulated" mount. The first uses "internal" data, where the translation vs. scan fraction data is stored within the .platform file. The second uses "external" data, where the translation vs. scan fraction data is stored within an external file (see "turtle_data.txt").
The scan pattern in this case is a "turtle head" motion, where the mount slowly translates in one dimension and then resets to the starting position at the end of the scan. Because the mount linearly interpolates between the supplied scan fraction records, the entire scan can be described with two entries:
-
The first entry defines the starting translation in the Y axis (default along-track direction) of
0
meters. -
The second entry defines the ending translation in the Y axis of
10
meters.
demo.platform
file. <mount type="tabulated" name="Tabulated (Internal Data)">
<data rotationorder="xyz" angularunits="degrees">
<clock type="independent" temporalunits="hertz">
<rate>2</rate>
</clock>
<entry>
<fraction>0.0000000000</fraction>
<xtranslation>0.0000000000</xtranslation>
<ytranslation>0.0000000000</ytranslation>
<ztranslation>0.0000000000</ztranslation>
<xrotation>0.0000000000</xrotation>
<yrotation>0.0000000000</yrotation>
<zrotation>0.0000000000</zrotation>
</entry>
<entry>
<fraction>0.9999999999</fraction>
<xtranslation>0.0000000000</xtranslation>
<ytranslation>-10.0000000000</ytranslation>
<ztranslation>0.0000000000</ztranslation>
<xrotation>0.0000000000</xrotation>
<yrotation>0.0000000000</yrotation>
<zrotation>0.0000000000</zrotation>
</entry>
</data>
Note
|
The xtranslation , ytranslation and ztranslation elements
are optional.
|
demo.platform
file. <mount type="tabulated" name="Tabulated (External Data)">
<data rotationorder="xyz" angularunits="radians">
<clock type="independent" temporalunits="hertz">
<rate>2</rate>
</clock>
<filename>turtle_data.txt</filename>
</data>
turtle_data.txt
data file.0.0000 0.00 0.00 0.00 0.00 0.00 0.00 0.9999 0.00 0.00 0.00 0.00 -10.00 0.00
Note
|
The fields in each line are scan fraction followed by the XYZ rotation triplet and then the XYZ translation triplet. |
If you are setting up a tabulated mount from scratch and want to import data from an external file to be stored internally, simply right-click inside the table area and select the "Import" item from the menu.
Note
|
The reason that this mount supports either internal ot external data is to better support different scenarios. A fixed scan pattern that never changes from collection to collection can be stored as "internal" data. If the pointing is specific to a specific collection, then it might make more sense to store that data "external" to the platform file (to avoid having multiple copies of platform files that simply vary in the command data driving the pointing. |
Each of the mounts have a "Data Recorder" instrument attached to them. They are recording "platform relative" angles, so they are capturing the scanner pointing vs. time. If you compare the location values of the data recorder output files, they are the same (because we are using the same data).
Results
The video_wo_motion.sim
scenario places the platform on a static
(motionless) vehicle (see wo_motion.ppd
) and collects a series of
images as the mount moves. The simulation spans two scans of the
mount pattern. This motion can be observed in the animation below:

The video_w_motion.sim
scenario places the platform on a dynamic
vehicle (see w_motion.ppd
). The vehicle motion is in equal and
the opposite direction as the mount motion, which essentially makes
the mount a motion compensation mechanism. When the mount runs
out of room, it snaps back to the start, at which point the vehicle
has made significant forward progress. As a result, we see the target
stay still (during motion compensation) and then jump and stay still
again for the next scan cycle. This motion can be observed in the
animation below (note the animation loops through both scan cycles):
