PVA File

The PVA binary format is directly supported by Waypoint’s inertial processing engines. It is used to store external coordinate updates. Two types of update are supported: absolute (CUPTs) and relative position updates. Each PVA file can only have a single update type. Absolute CUPTs provide updates in geographic frame, whereas relative position updates provide the translation vector between two epochs in the ENU or body frame.

If you have any questions, contact NovAtel Support at support.novatel@hexagon.com.

File Header

This header appears once at the start of the file. The position reference location defaults to IMU.

Field

Variable Name

Type

Description

Bytes

1

szHdr[12]

char

Must be "$PVABIN\r\n\0"

12

2

usFileVersion

uint16_t

File version, set to 1

2

3

usHdrSize

uint16_t

Size of file header, set to 3848 bytes

2

4

usFileType

uint16_t

File type, set to 1

2

5

usVersion[3]

uint16_t

Version numbers of creating program [major, minor, build]

6

6

szProgramName[32]

char

Name of program that created file

32

7

ulNumRec

uint32_t

Number of records (set to 0 for auto-detect)

4

8

usRecSize

uint16_t

Size of each record, set to 232 bytes

2

9

usReserved1[6]

uint8_t

Reserved (set to 0)

6

10

usPosSys

uint16_t

Position coordinate system

GEOGRAPHIC=0 (for absolute updates)

ENU=2 (for relative updates)

BODY=3 (for relative updates)

2

11

usReserved2[6]

uint8_t

Reserved (set to 0)

6

12

usOffsetAvail

uint16_t

Must be set to 1

2

13

usReserved3[3770]

uint8_t

Reserved (set to 0)

3770

Total size = 3848 bytes

If the position reference location is not the IMU, shift the location from sensor to IMU by adding the PVA_LEVER user command to the project:

  • PVA_LEVER = [ON/OFF] [x] [y] [z] (in meters)

    • The offsets are body-frame lever arm values.

Input Data Record

This record repeats for every PVA data record.

Field

Variable Name

Type

Description

Bytes

Absolute Update

Relative Update

1

dUpdateTime

double

TOW (s)

TOW (s), end of update

8

2

dRelStartTime

double

Set to 0

Start of update in TOW (s)

8

3

usUpdateWeek

uint16_t

GPS week number

End of update week number

2

4

usRelStartWeek

uint16_t

Set to 0

Start of update week number

2

5

uUpdate

uint32_t

Update flag/type, refer to Update Bit Definitions

4

6

szID[16]

char

Optional event 'ID', max 15 characters, NULL to terminate string

16

7

usCheck

uint16_t

Must be 0xC0DE, used as internal check for file validity

2

8

usReserved1[6]

uint8_t

Reserved (set to 0)

6

9

dPos[3]

double

Geographic coordinate [deg]

Delta in East, North, Up [m] (if header usPosSys==ENU)

Delta in X, Y, Z [m] (if header usPosSys==BODY)

24

10

usReserved2[36]

uint8_t

Reserved (set to 0)

36

11

fPosSD[3]

float

SD values for position in East, North, Up direction (m)

12

12

usReserved3[24]

uint8_t

Reserved (set to 0)

24

13

sCCUpperDiag[9]

int16_t

Optional, set to 0 if unknown

Off-diagonal correlation coefficients *

sCCUpperDiag[0] = pxpy

sCCUpperDiag[1] = pxpz

sCCUpperDiag[8] = pypz

18

14

usReserved4[70]

uint8_t

Reserved (set to 0)

70

Total size = 232 bytes

* The off-diagonal correlation coefficients are defined as:

cc = cov[i][j] / (sd_i * sd_j) scale to a signed 16-bit integer using the scale factor 65536.0

cc_int = (int) cc_float * 65536.0, so it will be [-1, 1] after scaling

Update Bit Definitions

Use the update bit definitions to define the update flag/type.

Name

Hex Value

Description

PVA_UPDATE_NONE

0

No update

PVA_UPDATE_POS

1

Absolute position update

PVA_UPDATE_RELATIVE

8

Relative position update