Gocator Development Kit
 All Classes Files Functions Variables Typedefs Friends Modules Pages
Multi-Reference Frame Support

Multi-reference frame support allows a tool to transform data represented in different reference frames into a common one, so that meaning results can be produced.

Both internal and user-defined operations in the system may perform data transformations, putting the data into a new frame of reference. For example, taking a section from a surface puts the extracted data into a new reference frame. In this frame, z is still range, but x is now aligned with the sectioning line. This data can be in turn put into yet another frame of reference.

To support the transformation of data into previous frames, the system maintains a chain of reference frames for each message. An operation that performs a reference frame change inserts a new frame into this chain, identified by an unique ID. Algorithm code can use this chain to reverse transform data into any of the preceding reference frames.

Frame Defintion

A reference frame is represented by its basis and origin with respect to the parent frame. For example, if an operation transforms data by an offset of (10, 20, -15), it's equivalent to representing the data in a new frame with origin at (-10, -20, 15) with respect to the previous frame. In other words, the reference frame is the inverse of the data transformation.

Frame Identification

The system currently does not have a consistent method for identifying reference frames. The user must come up with their own system for doing this. Note that the user-selected IDs must not conflict with the IDs used by the system. To ensure this, the user IDs must have a value of 2000 or greater.

Some internal pose IDs that might be useful:

  • 0: Sensor frame (before surface generation)
  • 1: Surface frame (before part detection)
  • 2: Source part (before part matching)
  • 1000: Profile source (section source)

Note that these IDs are not always available depending on the feature set enabled.

Chain Access

The reference frame chain can be accessed by the following functions:

  • GvDataMsg_PoseCount
  • GvDataMsg_PoseIdAt
  • GvDataMsg_PoseAt

The oldest reference frame has the lowest index. To transform data back to a preceding frame, the reference frames must be applied in decreasing index, starting with the last one.

Currently the reference system is represented by three values:

  • X
  • Y
  • Z Angle

This means the reference frame currently can only represent transformations within the Z plane.