-
Notifications
You must be signed in to change notification settings - Fork 1
/
imu_registers.py
197 lines (158 loc) · 6.87 KB
/
imu_registers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
class IMURegisters:
'''
Device Identification Registers
'''
NAVX_REG_WHOAMI = 0x00 # IMU_MODEL_XXX
NAVX_REG_HW_REV = 0x01
NAVX_REG_FW_VER_MAJOR = 0x02
NAVX_REG_FW_VER_MINOR = 0x03
# Model types
NAVX_MODEL_NAVX_MXP = 0x32
@classmethod
def model_type(cls, whoami):
if whoami == cls.NAVX_MODEL_NAVX_MXP:
return "NavX MXP"
else:
return "unknown"
'''
Status and Control Registers
'''
# Read-write
NAVX_REG_UPDATE_RATE_HZ = 0x04 # Range: 4 - 50 [unsigned byte]
# Read-only
# Accelerometer Full-Scale Range: in units of G [unsigned byte]
NAVX_REG_ACCEL_FSR_G = 0x05
# Gyro Full-Scale Range (Degrees/Sec): Range: 250, 500, 1000 or 2000 [unsigned short]
NAVX_REG_GYRO_FSR_DPS_L = 0x06 # Lower 8-bits of Gyro Full-Scale Range
NAVX_REG_GYRO_FSR_DPS_H = 0x07 # Upper 8-bits of Gyro Full-Scale Range
NAVX_REG_OP_STATUS = 0x08 # NAVX_OP_STATUS_XXX
NAVX_REG_CAL_STATUS = 0x09 # NAVX_CAL_STATUS_XXX
NAVX_REG_SELFTEST_STATUS = 0x0A # NAVX_SELFTEST_STATUS_XXX
NAVX_REG_CAPABILITY_FLAGS_L = 0x0B
NAVX_REG_CAPABILITY_FLAGS_H = 0x0C
'''
Processed Data Registers
'''
NAVX_REG_SENSOR_STATUS_L = 0x10 # NAVX_SENSOR_STATUS_XXX
NAVX_REG_SENSOR_STATUS_H = 0x11
# Timestamp: [unsigned long]
NAVX_REG_TIMESTAMP_L_L = 0x12
NAVX_REG_TIMESTAMP_L_H = 0x13
NAVX_REG_TIMESTAMP_H_L = 0x14
NAVX_REG_TIMESTAMP_H_H = 0x15
# Yaw, Pitch, Roll: Range: -180.00 to 180.00 [signed hundredths]
# Compass Heading: Range: 0.00 to 360.00 [unsigned hundredths]
# Altitude in Meters: In units of meters [16:16]
NAVX_REG_YAW_L = 0x16 # Lower 8 bits of Yaw
NAVX_REG_YAW_H = 0x17 # Upper 8 bits of Yaw
NAVX_REG_ROLL_L = 0x18 # Lower 8 bits of Roll
NAVX_REG_ROLL_H = 0x19 # Upper 8 bits of Roll
NAVX_REG_PITCH_L = 0x1A # Lower 8 bits of Pitch
NAVX_REG_PITCH_H = 0x1B # Upper 8 bits of Pitch
NAVX_REG_HEADING_L = 0x1C # Lower 8 bits of Heading
NAVX_REG_HEADING_H = 0x1D # Upper 8 bits of Heading
NAVX_REG_FUSED_HEADING_L = 0x1E # Upper 8 bits of Fused Heading
NAVX_REG_FUSED_HEADING_H = 0x1F # Upper 8 bits of Fused Heading
NAVX_REG_ALTITUDE_I_L = 0x20
NAVX_REG_ALTITUDE_I_H = 0x21
NAVX_REG_ALTITUDE_D_L = 0x22
NAVX_REG_ALTITUDE_D_H = 0x23
# World-frame Linear Acceleration: In units of +/- G * 1000 [signed thousandths]
NAVX_REG_LINEAR_ACC_X_L = 0x24 # Lower 8 bits of Linear Acceleration X
NAVX_REG_LINEAR_ACC_X_H = 0x25 # Upper 8 bits of Linear Acceleration X
NAVX_REG_LINEAR_ACC_Y_L = 0x26 # Lower 8 bits of Linear Acceleration Y
NAVX_REG_LINEAR_ACC_Y_H = 0x27 # Upper 8 bits of Linear Acceleration Y
NAVX_REG_LINEAR_ACC_Z_L = 0x28 # Lower 8 bits of Linear Acceleration Z
NAVX_REG_LINEAR_ACC_Z_H = 0x29 # Upper 8 bits of Linear Acceleration Z
# Quaternion: Range -1 to 1 [signed short ratio]
NAVX_REG_QUAT_W_L = 0x2A # Lower 8 bits of Quaternion W
NAVX_REG_QUAT_W_H = 0x2B # Upper 8 bits of Quaternion W
NAVX_REG_QUAT_X_L = 0x2C # Lower 8 bits of Quaternion X
NAVX_REG_QUAT_X_H = 0x2D # Upper 8 bits of Quaternion X
NAVX_REG_QUAT_Y_L = 0x2E # Lower 8 bits of Quaternion Y
NAVX_REG_QUAT_Y_H = 0x2F # Upper 8 bits of Quaternion Y
NAVX_REG_QUAT_Z_L = 0x30 # Lower 8 bits of Quaternion Z
NAVX_REG_QUAT_Z_H = 0x31 # Upper 8 bits of Quaternion Z
'''
Raw Data Registers
'''
# Sensor Die Temperature: Range +/- 150, In units of Centigrade * 100 [signed hundredths float
NAVX_REG_MPU_TEMP_C_L = 0x32 # Lower 8 bits of Temperature
NAVX_REG_MPU_TEMP_C_H = 0x33 # Upper 8 bits of Temperature
# Raw, Calibrated Angular Rotation, in device units. Value in DPS = units / GYRO_FSR_DPS [signed short]
NAVX_REG_GYRO_X_L = 0x34
NAVX_REG_GYRO_X_H = 0x35
NAVX_REG_GYRO_Y_L = 0x36
NAVX_REG_GYRO_Y_H = 0x37
NAVX_REG_GYRO_Z_L = 0x38
NAVX_REG_GYRO_Z_H = 0x39
# Raw, Calibrated, Acceleration Data, in device units. Value in G = units / ACCEL_FSR_G [signed short]
NAVX_REG_ACC_X_L = 0x3A
NAVX_REG_ACC_X_H = 0x3B
NAVX_REG_ACC_Y_L = 0x3C
NAVX_REG_ACC_Y_H = 0x3D
NAVX_REG_ACC_Z_L = 0x3E
NAVX_REG_ACC_Z_H = 0x3F
# Raw, Calibrated, Un-tilt corrected Magnetometer Data, in device units. 1 unit = 0.15 uTesla [signed short]
NAVX_REG_MAG_X_L = 0x40
NAVX_REG_MAG_X_H = 0x41
NAVX_REG_MAG_Y_L = 0x42
NAVX_REG_MAG_Y_H = 0x43
NAVX_REG_MAG_Z_L = 0x44
NAVX_REG_MAG_Z_H = 0x45
# Calibrated Pressure in millibars Valid Range: 10.00 Max: 1200.00 [16:16 float]
NAVX_REG_PRESSURE_IL = 0x46
NAVX_REG_PRESSURE_IH = 0x47
NAVX_REG_PRESSURE_DL = 0x48
NAVX_REG_PRESSURE_DH = 0x49
# Pressure Sensor Die Temperature: Range +/- 150.00C [signed hundredths]
NAVX_REG_PRESSURE_TEMP_L = 0x4A
NAVX_REG_PRESSURE_TEMP_H = 0x4B
'''
Calibration Registers
'''
# Yaw Offset: Range -180.00 to 180.00 [signed hundredths]
NAVX_REG_YAW_OFFSET_L = 0x4C # Lower 8 bits of Yaw Offset
NAVX_REG_YAW_OFFSET_H = 0x4D # Upper 8 bits of Yaw Offset
# Quaternion Offset: Range: -1 to 1 [signed short ratio]
NAVX_REG_QUAT_OFFSET_W_L = 0x4E # Lower 8 bits of Quaternion W
NAVX_REG_QUAT_OFFSET_W_H = 0x4F # Upper 8 bits of Quaternion W
NAVX_REG_QUAT_OFFSET_X_L = 0x50 # Lower 8 bits of Quaternion X
NAVX_REG_QUAT_OFFSET_X_H = 0x51 # Upper 8 bits of Quaternion X
NAVX_REG_QUAT_OFFSET_Y_L = 0x52 # Lower 8 bits of Quaternion Y
NAVX_REG_QUAT_OFFSET_Y_H = 0x53 # Upper 8 bits of Quaternion Y
NAVX_REG_QUAT_OFFSET_Z_L = 0x54 # Lower 8 bits of Quaternion Z
NAVX_REG_QUAT_OFFSET_Z_H = 0x55 # Upper 8 bits of Quaternion Z
'''
Integrated Data Registers
'''
# Integration Control (Write-Only)
NAVX_REG_INTEGRATION_CTL = 0x56
NAVX_REG_PAD_UNUSED = 0x57
# Velocity: Range -32768.9999 - 32767.9999 in units of Meters/Sec
NAVX_REG_VEL_X_I_L = 0x58
NAVX_REG_VEL_X_I_H = 0x59
NAVX_REG_VEL_X_D_L = 0x5A
NAVX_REG_VEL_X_D_H = 0x5B
NAVX_REG_VEL_Y_I_L = 0x5C
NAVX_REG_VEL_Y_I_H = 0x5D
NAVX_REG_VEL_Y_D_L = 0x5E
NAVX_REG_VEL_Y_D_H = 0x5F
NAVX_REG_VEL_Z_I_L = 0x60
NAVX_REG_VEL_Z_I_H = 0x61
NAVX_REG_VEL_Z_D_L = 0x62
NAVX_REG_VEL_Z_D_H = 0x63
# Displacement: Range -32768.9999 - 32767.9999 in units of Meters
NAVX_REG_DISP_X_I_L = 0x64
NAVX_REG_DISP_X_I_H = 0x65
NAVX_REG_DISP_X_D_L = 0x66
NAVX_REG_DISP_X_D_H = 0x67
NAVX_REG_DISP_Y_I_L = 0x68
NAVX_REG_DISP_Y_I_H = 0x69
NAVX_REG_DISP_Y_D_L = 0x6A
NAVX_REG_DISP_Y_D_H = 0x6B
NAVX_REG_DISP_Z_I_L = 0x6C
NAVX_REG_DISP_Z_I_H = 0x6D
NAVX_REG_DISP_Z_D_L = 0x6E
NAVX_REG_DISP_Z_D_H = 0x6F
NAVX_REG_LAST = NAVX_REG_DISP_Z_D_H