Installation Alignment Packet

Installation Alignment Packet
Packet ID 185
Length 73
Read / Write Read / Write
Field # Bytes Offset Data Type Size Description
1 0 u8 1 Permanent
2 1 fp32 4 Alignment DCM[0][0]
3 5 fp32 4 Alignment DCM[0][1]
4 9 fp32 4 Alignment DCM[0][2]
5 13 fp32 4 Alignment DCM[1][0]
6 17 fp32 4 Alignment DCM[1][1]
7 21 fp32 4 Alignment DCM[1][2]
8 25 fp32 4 Alignment DCM[2][0]
9 29 fp32 4 Alignment DCM[2][1]
10 33 fp32 4 Alignment DCM[2][2]
11 <add [3] jhere] 37 fp32 4 GNSS antenna offset X (m)1
12 <add [3] jhere] 41 fp32 4 GNSS antenna offset Y (m)1
13 <add [3] jhere] 45 fp32 4 GNSS antenna offset Z (m)
14 49 fp32 4 Odometer offset X (m)2
15 53 fp32 4 Odometer offset Y (m)2
16 57 fp32 4 Odometer offset Z (m)2
17 61 fp32 4 External data offset X (m)3
18 65 fp32 4 External data offset Y (m)3
19 69 fp32 4 External data offset Z (m)3

Installation Alignment Packet

1Update to GNSS Antenna offset results in an update to fields:

2Update to Odometer offset results in an update to fields:

3Update to External data offset results in an update to fields:

Alignment DCM

The alignment DCM (Direction Cosine Matrix) is used to represent an alignment offset of Boreas from its standard alignment. A DCM is used rather than Euler angles for accuracy reasons. To convert Euler angles to DCM, use the formula below with angles in radians.

DCM[0][0] = cos(heading) * cos(pitch)

DCM[0][1] = sin(heading) * cos(pitch)

DCM[0][2] = -sin(pitch)

DCM[1][0] = -sin(heading) * cos(roll) + cos(heading) * sin(pitch) * sin(roll)

DCM[1][1] = cos(heading) * cos(roll) + sin(heading) * sin(pitch) * sin(roll)

DCM[1][2] = cos(pitch) * sin(roll)

DCM[2][0] = sin(heading) * sin(roll) + cos(heading) * sin(pitch) * cos(roll)

DCM[2][1] = -cos(heading) * sin(roll) + sin(heading) * sin(pitch) * cos(roll)

DCM[2][2] = cos(pitch) * cos(roll)