Keywords: mount

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.

The following demos, manuals and tutorials can provide additional information about the topics at the focus of this demo:

  • Related Demos

  • 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 angles vs. scan fraction data is stored within the .platform file. The second uses "external" data, where the angles vs. scan fraction data is stored within an external file (see "conical_data.txt").

The scan pattern in this case is a simple, constant angular velocity "conical scan". Because the mount linearly interpolates between the supplied scan fraction records, the entire scan (sweeping out the entire 360 degree arc of the cone perimeter) can be described with two entries:

  • The first entry sweeps out about the Y axis to a Z angle of 0.

  • The second entry sweeps out about the Y axis to a Z angle of 360.

The internal data mount in the demo.platform file.
    <mount type="tabulated" name="Tabulated (Internal Data)">
      <data rotationorder="xyz" angularunits="degrees">
        <clock type="independent" temporalunits="hertz">
          <rate>1</rate>
        </clock>
        <entry>
          <fraction>0.0000000000</fraction>
          <xrotation>0.0000000000</xrotation>
          <yrotation>7.7349302343</yrotation>
          <zrotation>0.0000000000</zrotation>
        </entry>
        <entry>
          <fraction>0.5000000000</fraction>
          <xrotation>0.0000000000</xrotation>
          <yrotation>7.7349302343</yrotation>
          <zrotation>180.0000000</zrotation>
        </entry>
        <entry>
          <fraction>0.9999999999</fraction>
          <xrotation>0.0000000000</xrotation>
          <yrotation>7.7349302343</yrotation>
          <zrotation>360.0000000</zrotation>
        </entry>
      </data>
Note
The xrotation, yrotation and zrotation elements are optional.
The external data mount in the demo.platform file.
    <mount type="tabulated" name="Tabulated (External Data)">
      <data rotationorder="xyz" angularunits="radians">
        <clock type="independent" temporalunits="hertz">
          <rate>1</rate>
        </clock>
        <filename>conical_data.txt</filename>
      </data>
The external conical_data.txt data file.
0.0000 0.00 0.135 0.0000
0.5000 0.00 0.135 3.1415
0.9999 0.00 0.135 6.2832
Note
The fields in each line are scan fraction followed by the XYZ rotation triplet and then the XYZ translation triplet.

The rotation order of "X, then Y, then Z" is critical in this case. See the "affine transform" documentation to understand why performing the Z rotation before the Y rotation would yield a different result than what we are trying to achieve.

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 orientation angles of the data recorder output files, they are the same (because we are using the same data).

Note
Because the data recorder always outputs data in the YZX order, (rather than XYZ input order) a plot of the angles will not yield the angles that drove the mount.
video
Figure 1. Animation from the camera on the mount