As of October 1st, 2023, QTFM Gen-2 sensors will come equipped with an onboard nine-axis Inertial Measurement Unit (IMU) [P/N: ICM-20948]. The addition of the IMU IC directly on the ECU improves the sensor’s functionalities, enabling it to output both IMU and magnetometer data. The IMU includes a 3-axis accelerometer, a 3-axis gyroscope, and a 3-axis vector magnetometer. Note: The IMU vector magnetometers are distinct from the QTFM’s primary vector add-on. The IMU also features a temperature sensor. The integration of the IMU aims to aid in mitigating platform-induced heading errors. The combination of the IMU and the Vector add-on gives the Gen-2 QTFM sensor unparalleled tools to refine magnetometer data accuracy.
IMU Data Sheet: ICM-20948 Data Sheet
Part Number: ICM-20948
Upon sensor ECU initialization:
- ECUs with an IMU will output the status message: #IMU Detected and Initialized.
- ECUs without an IMU will output the message: #No IMU Detected.
IMU Control Commands
Using Decimal ASCII commands, you can control the IMU functions:
- 82: R – Toggle IMU Accelerometer print on/off
- 83: S – Toggle IMU Gyroscope print on/off
- 85: U – Toggle IMU Vector Magnetometer print on/off
- 86: V – Toggle IMU Temperature readings print on/off
IMU Data Formatting
The IMU data is structured to be the last element in the output data string. The unique identifiers or delimiters for IMU data are lowercase letters. Notably:
- IMU Accelerometer Data
- X-axis delimiter: “a”
- Y-axis delimiter: “b”
- Z-axis delimiter: “c”
- IMU Gyroscope Data
- X-axis delimiter: “i”
- Y-axis delimiter: “j”
- Z-axis delimiter: “k”
- IMU Vector Magnetometer Data
- X-axis delimiter: “x”
- Y-axis delimiter: “y”
- Z-axis delimiter: “z”
- IMU Temperature Data
- Delimiter: “t”
For the IMU data, all directional readings (X, Y, Z) are printed on a single line. If multiple IMU data types are enabled, their outputs will be presented on alternating lines to ensure clarity.
Composition of the QTFM Gen-2 Data (Including IMU Data)
The QTFM Gen-2 data format, with the new IMU feature, is broken down as follows. Users can select which items they want to stream. When all print items are active, they will appear in this structured format:
- Magnetometer Data with IMU Accelerometer Data
!{Magdata}X{Vectordata}@{Datacounter}>{Timestamp}s{Scalar Sensitivity}v{Vector Sensitivity}a{AccelData X}b{AccelData Y}c{AccelData Z}
- Magnetometer Data with IMU Gyroscope Data
!{Magdata}Y{Vectordata}@{Datacounter}>{Timestamp}s{Scalar Sensitivity}v{Vector Sensitivity}i{GyroData X}j{GyroData Y}k{GyroData Z}
- Magnetometer Data with IMU Vector Magnetometer Data
!{Magdata}Z{Vectordata}@{Datacounter}>{Timestamp}s{Scalar Sensitivity}v{Vector Sensitivity}x{IMU.VMagData X}y{IMU.VMagData Y}z{IMU.VMagData Z}
- Magnetometer Data with IMU Temperature Data
!{Magdata}X{Vectordata}@{Datacounter}>{Timestamp}s{Scalar Sensitivity}v{Vector Sensitivity}t{TempData}
When all IMU data types are enabled, they will be printed on separate alternating lines in the data output, ensuring clarity in reading and processing.
IMU Data Output Examples
To better understand the data output formats when the IMU functions are enabled, here are some visual examples: