# MSG_INSTALL_ALIGN

MSG_INSTALL_ALIGN
Packet ID 0x80
Length 73
Read / Write Read
Offset Size Format Field Unit Description
0 1 Uint8_t Permanent
1 36 float32_t Alignment_DCM[3][3] 对齐旋转矩阵
37 4 float32_t GNSS_antenna_offset_X m GNSS天线X方向偏移
41 4 float32_t GNSS_antenna_offset_Y m GNSS天线Y方向偏移
45 4 float32_t GNSS_antenna_offset_Z m GNSS天线Z方向偏移
49 4 float32_t Odometer_offset_X m 里程计X方向偏移
53 4 float32_t Odometer_offset_Y m 里程计Y方向偏移
57 4 float32_t Odometer_offset_Z m 里程计Z方向偏移
61 4 float32_t External_data_offset_X m 外部数据X方向偏移
65 4 float32_t External_data_offset_Y m 外部数据Y方向偏移
69 4 float32_t External_data_offset_Z m 外部数据Z方向偏移

Alignment DCM

The alignment DCM (direction cosine matrix) is used to represent an alignment offset of Spatial Dual from it's standard alignment. A DCM is used rather than euler angles for accuracy reasons. To convert euler angles to DCM please 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)