Hi
I'm also currently dealing with the conversion from their "counts-array" to actual usable gyroscope or accelerometer data. I decoded all messages in my "Virb Ultra 30" fit file and found the following message which might perhaps be useful for the conversion process:
three_d_sensor_calibration (167, type: 4, length: 66 bytes):
timestamp (253-1-UINT32): 2
gyro_cal_factor (1-1-UINT32, original name: calibration_factor): 5
calibration_divisor (2-1-UINT32): 82 counts (82)
level_shift (3-1-UINT32): 32768
offset_cal (4-3-SINT32): {-13, 20, -34}
orientation_matrix (5-9-SINT32): {0.0000 (0), -1.0000 (-65535), 0.0000 (0), 0.0000 (0), 0.0000 (0), -1.0000 (-65535), -1.0000 (-65535), 0.0000 (0), 0.0000 (0)}
sensor_type (0-1-ENUM): gyroscope (1)
When I look up the fields (in the profile.xlsx) which might help us converting the values I find:
-
gyro_cal_factor, deg/s, Gyro calibration factor, Calibration factor used to convert from raw ADC value to degrees, g, etc.
-
calibration_divisor, counts, Calibration factor divisor
-
level_shift, Level shift value used to shift the ADC value back into range
-
offset_cal, Internal calibration factors, one for each: xy, yx, zx (doesn't seems to fit in the conversion, as they state it is an internal calibration factor, should we assume that this already happened "internally"???). I attached a Excel workbook doing the conversion for all my gyro records.
When I look a bit further and pick a counts value, let's say 32745 counts.
When we use the knowledge above, here is my attempt to convert to degrees/s
32745 - level_shift = -23 counts
-23/calibration_divisor = -23 counts /82 counts = -0.2804878049
-0.2804878049*gyro_cal_factor = -0.2804878049*5 deg/s = -1.4024390244 deg/s
Which seems reasonable? Any thoughts or suggestions? I included an excel workbook with the conversion for the averages of the 30 values for x,y and z gyro data of a couple of timestamp records of a Garmin Virb fit file.
Cheers
Jelle