Parse UDD data

How to configure, check, and parse UDD data format

Purpose: Learn about User Defind Data output format
Last Updated: November 2023

Whether you are a data analyst, software developer, or IT professional, understanding how to effectively configure, check, and parse User Defined Data (UDD)  output format is essential for maintaining the integrity and utility of the data you work with. This article will serve as a comprehensive guide to navigating the intricacies of the UDD format.

We will begin by exploring the configuration process, detailing the steps and considerations necessary to set up a UDD-compliant system. This will include an overview of the tools and environments best suited for handling UDD files. Following that, we will delve into the methods for checking UDD data, which is a critical step to validate the structure and content against the defined schema, ensuring that the data adheres to the expected format before it is processed or consumed by downstream systems.

Lastly, parse UDD data is where the practicality of this format truly comes to life. Parsing transforms raw data into a structured and usable form, enabling applications to manipulate and analyze the data effectively. We will examine the parsing techniques and provide insights into best practices for extracting information from UDD data formats effectively.

UDD is an output format where the user can choose desirable INS data for output. Table 6.30 of the INS ICD shows the full list of data that a user can choose. Table 6.31 of the INS ICD gives a detailed description of each data type.

The article provides information about configuring, checking, and parsing the INS UDD data format. The byte structure for all messages and commands to/from the INS corresponds to Table 6.2 of the INS ICD. 

Example of parsing data of the OPVT and OPVT2AHR data formats
Fig.1 The INS byte structure

To set the necessary data types for the UDD output, the User_Def_Data_config command (code 0x96 in the “Payload” field) should be sent, followed by the message with the block of parameters whose byte structure corresponds to Table 6.2, where the payload is shown in Table 6.80. This message should be sent without pause after sending the User_Def_Data_config command. 

How to configure, check, and parse UDD data format
Fig. 2 Table 6.80. Payload of the message following after the UDD_config command and answer on the Get_UDD_struct command

Below is an example of the User_Def_Data_config command and the message with the block of parameters used in the article: 

AA 55 00 00 07 00 96 9D 00 – UDD_config command
AA 55 00 00 13 00 0C 04 08 21 23 11 12 50 52 53 54 37 41 53 02 – the message with the block of parameters listed in Table 6.80.

In this article we chose the  following data to output: 

04 – UTC

08 – Orientation angles HR

21 – Gyro data HR

23 – Accelerometer data HR

11 – Position HR

12 – Velocities

50 – Supply voltage

52 – Temperature

53 – Unit status word (USW)

54 – INS solution status

37 – Full satellites info

41 – New GPS

The INS calculates the check sum of the received message with parameters and returns it for checking. Additionally, the INS checks the correctness of the list of data types. The byte structure of the INS answer corresponds to Table 6.2, where the payload is shown in Table 6.81.

How to configure, check, and parse UDD data format
Fig. 3 Table 6.81. Payload of the INS answer on the UDD_config command with list of data types

The answer to the UDD_config command and the message with the block of parameters:

AA 55 01 96 0E 00 53 02 00 00 00 C8 00 00 C2 01

The Get_User_Def_Data_struct command (code 0x97 in the “Payload” field) can be sent from the host computer to check the “User Defined Data” structure set by the previous user. In answer to this command, the INS sends out the message with information shown in Table 6.80. This message has the byte structure shown in Table 6.2.

AA 55 00 00 07 00 97 9E 00 – Get_User_Def_Data_struct command.

Answer to the Get_User_Def_Data_struct command:
AA 55 01 00 13 00 0C 04 08 21 23 11 12 50 52 53 54 37 41 54 02

Below is a screenshot of the data received from the device after the INS UDD command was sent:

How to configure, check, and parse UDD data format
Fig. 4 UDD data format message

1 – Response to the INS UDD Command

2 – The end of the Initial Alignment Block – see Table 6.86 of the INS ICD

3 – The end of the first INS UDD Packet – see Section 6.2.12 of the INS ICD

4 – The end of the second INS UDD Packet

5 – The end of the third INS UDD Packet

Example of Parsing of the second INS UDD Packet

Message:

AA 55 01 95 70 00 0C 04 08 21 23 11

12 50 52 53 54 37 41 13 0F 06 91 03 0A 05 E7 07

3F 7E 05 00 B1 00 00 00 47 01 00 00 67 08 00 00

CC FF FF FF A3 07 00 00 58 EA FF FF 9E 0D 00 00

05 2B 0F 00 44 14 77 1D 09 00 00 00 1C 25 89 ED

ED FF FF FF 99 4A 02 00 00 00 00 00 00 00 00 00

00 00 00 00 77 09 07 01 00 00 03 1F 1F 00 00 00

00 B4 00 00 BE 18

AA 55 – Header 

01 – Message type (uint8)

95 – Message identifier (uint8) (code of the INS OPVT output format)

70 00 – Message length(uint16). 70 00 Hex little endian -> 00 70 – Hex little endian converted to Hex big endian -> 112 – Hex big endian converted to decimal -> total 112 bytes in the packet (does not include AA 55)

This approach of parsing data applies to the rest of the message.

How to configure, check, and parse UDD data format
Fig. 5 Table 6.29. Payload of the UDD message

0C –  Number of data packages(uint8). 0С -> 12 -> total 12 data packages in the message

04 – UTC(uint8)

08 – Orientation angles HR(uint8)

21 – Gyro data HR(uint8)

23 – Accelerometer data HR(uint8)

11 – Position HR(uint8)

12 – Velocities(uint8)

50 – Supply voltage(uint8)

52 – Temperature(uint8)

53 – Unit status word (USW)(uint8)

54 – INS solution status(uint8)

37 – Full satellites info(uint8)

41 – New GPS

13 0F 06 91 03 0A 05 E7 07 –  UTC package:

13 – UTC hours(uint8). 13 -> 19 

0F – UTC minutes(uint8). 0F -> 15 

06 – UTC seconds(uint8). 06 -> 6

91 03 – UTC decimal seconds(uint16).91 03 -> 03 91 -> 913

0A – UTC month(uint8). 0A -> 10 

05 – UTC day(uint8). 05 -> 5 

E7 07 – UTC year(uint16). E7 07 -> 07 E7 -> 2023

3F 7E 05 00 B1 00 00 00 47 01 00 00 – Orientation angles HR:

3F 7E 05 00 Heading(uint32). 3F 7E 05 00 – Hex little endian -> 00 05 7E 3F – Hex little endian converted to Hex big endian -> 359999 – Hex big endian converted to decimal -> 359999 /1000 – apply scale factor (see table 6.31)=359.999 deg

This approach of parsing data applies to the rest of the message.

B1 00 00 00 – Pitch(int32). B1 00 00 00  -> 00 00 00 B1 -> 177  -> 177/1000 = 0.177 deg

47 01 00 00  Roll(int32). 47 01 00 00 -> 00 00 01 47-> 327/1000 = 0.327 deg

67 08 00 00 CC FF FF FF A3 07 00 00  Gyro data HR package:

67 08 00 00 Gyro X(int32). 67 08 00 00 -> 00 00 08 67 -> 2151/1.0e5= 0.02151 dps 

CC FF FF FF Gyro Y(int32). CC FF FF FF -> FF FF FF CC-> -52/1.0e5= -0.00052 dps 

A3 07 00 00 Gyro Z(int32). A3 07 00 00 -> 00 00 07 A3 -> 1955/1.0e5= 0.01955 dps 

58 EA FF FF 9E 0D 00 00 05 2B 0F 00 – Accelerometer data HR package:

58 EA FF FF Acc X(int32). 58 EA FF FF -> FF FF EA 58 -> -5544/1.0e6=-0.005544 g 

9E 0D 00 00 – Acc Y(int32). 9E 0D 00 00 -> 00 00 0D 9E-> 3486/1.0e6=0.003486 g  

05 2B 0F 00 – Acc Z(int32). 05 2B 0F 00 -> 00 0F 2B 05-> 994053/1.0e6= 0.994053 g 

44 14 77 1D 09 00 00 00 1C 25 89 ED ED FF FF FF 99 4A 02 00 Position HR package:

44 14 77 1D 09 00 00 00 – Latitude(int64). 44 11 77 1D 09 00 00 00 ->  00 00 00 09 1D 77 14 44 =39149048900/1.0e9= 39.149048900deg

1C 25 89 ED ED FF FF FF Longitude(int64). 1C 25 89 ED ED FF FF FF -> FF FF FF ED ED 89 25 1C = -77619190500/1.0e9= -77.619190500 deg

99 4A 02 00 – Altitude(int32). 99 4A 02 00 -> 00 02 4A 99 -> 150169/1000= 150.169 m 

00 00 00 00 00 00 00 00 00 00 00 00 – Velocities package: 

00 00 00 00 East speed(int32). 0 m/s 

00 00 00 00 –  North speed(int32). 0 m/s 

00 00 00 00 –  Vertical speed(int32).  0 m/s 

77 09 – Supply voltage(uint8). 77 09 -> 09 77 -> 2423/100 =24.23 VDC

07 01 – Temperature(int8). 07 01 -> 01 07 -> 263/10 = 26,3 °C

00 00  USW(uint16). See section 6.10 of the INS ICD for details. Note the non-zero value of the USW indicates the warning or the issue with the device.

03 – INS solution status(uint8).  See section 6.16 of the INS ICD for details.

1F 1F 00 00 00 00 B4 00 – Full satellites info package–:

1F –  #SVs(uint8). 1F -> 31

1F – #SolnSVs(uint8). 1F -> 31

00 – #SolnL1SVs(uint8). 0

00 – #SolnMultiSVs(uint8). 0

00 –Galileo and BeiDou signal-used mask (see Table 6.21)(uint8). 

00 – GPS and GLONASS signal-used mask (see Table 6.20)(uint8).

B4 – GPS time status (see Table 6.25)(uint8). B4 -> 180 – Time is fine set and is being steered

00 – Extended solution status (Table 6.19)(uint8).

00 – New GPS(uint8). 0 

BE 18 – Checksum(uint16)

For any additional questions, please email support@inertiallabs.com

Scroll to Top

Website maintenance has been scheduled for Sunday, April 2 from 7 am to 9 pm EDT.
The resource may be unavailable at this time. Please accept our apologies for any inconvenience.