How is a Coordinate transformation done?

The starting point is Binary to ASCII conversion of the raw data file so that you have access to the three velocity files, *.v1, *.v2 and *.v3, the transformation matrix and the *.sen file. Heading, pitch and roll are presented in the .sen file (ref. *.hdr), and these angles are output in degrees. The figure below indicates the three coordinate systems that the velocity data in *.v1, *.v2 and *.v3 are measured in: Beam, XYZ or ENU. The coordinate system selected during the deployment planning is indicated in the *.hdr file.

The three relevant coordinate systems. The figure shows an AWAC, but this applies to the other instruments as well.

Each instrument has its own unique transformation matrix, based on the transducer geometry. This matrix can be found, as previously mentioned, in the *.hdr file generated when performing a binary data conversion in the software. Each row of the matrix represents a component in the instrument’s XYZ coordinate system, starting with X at the top row. Each column represents a beam. The third and fourth rows of the Vectrino transformation matrix represent the two estimates of vertical velocity (Z1 and Z2) produced by the instrument. XYZ coordinates are defined relative to the instrument, so they do not take into account heading, pitch and roll. ENU utilizes the attitude measurements to provide an earth-relative coordinate system.

Beam to XYZ:

The transformation between beam and XYZ coordinates is done using the original T matrix listed in the header file. In matrix form (using MATLAB notation, so [ X; Y; Z ] is a column vector), the math is

T * [ B1; B2; B3 ] = [ X; Y; Z ]

Taking the matrix inverse of T will get you back to beam

inv( T ) * [ X; Y; Z ] = [ B1; B2; B3 ]

For the Vectrino Profiler: The transformation matrix for the Vectrino Profiler range cells is stored in Config.ProbeCalibration_calibrationMatrix, one row per cell. To get the calibration matrix in a more usable form for transforms, this can be used: