Download PDF
Download page IMU File.
IMU File
The generic IMU file format is used to import in Qinertia time stamped delta angles and delta velocities at high rate and generally at 200 Hz or 100 Hz. Qinertia accepts both an ASCII or binary file for IMU data.
The IMU data (accelerations and rotations rates) have to be correctly time stamped to an absolute time such as GPS, UTC or Unix with an accuracy of at least 1 ms and if possible better than 100 µs.
Qinertia can tolerate a certain amount of small gaps (missing data) in the file. However, Qinertia will reject your file if there are too much gaps or large gaps (above 100 ms).
Conventions
Qinertia expect the delta angles and delta velocities measurement to comply with Qinertia IMU coordinate frame and rotations directions as described in the Conventions page.
Depending on the INS manufacturer, IMU data are either expressed in the IMU reference frame or directly in the vehicle frame:
- IMU reference frame - Whatever how the INS is installed in a vehicle, the IMU data is still expressed in the physical sensor frame. To process the INS solution, the IMU data will have to be re-aligned correctly to the vehicle frame.
- Vehicle reference frame - The IMU data has been software re-aligned to the vehicle frame meaning that no additional alignment has to be applied on the IMU data to process the INS solution.
Qinertia can support both frames thanks to settings that can be defined in the Process file.
ASCII IMU Format
The ASCII IMU file format is the easiest way to import third party IMU data to Qinertia. However, it's not the most efficient one as it uses more disk space than binary equivalent and requires more time to import.
The file format is composed of an optional header followed by IMU data stored line by line. If Qinertia doesn't find the header, the default configuration values are used. The file can use either Windows, Unix or Linux line ending conventions and should use UTF-8 encoding.
ASCII header
The header is used to configure how Qinertia should parse and import the file. The header always starts with the $qimu
magic keyword to identify it. Then each parameter can be set using a succession of <param>:<value>
pairs stored line by line.
If there is no header or the parameter is not present in the file, Qinertia will use the default value.
Param | Optional | Description |
---|---|---|
| IMU ASCII file format version, should be set to 2 | |
| IMU data time stamp format:
The default value is | |
| GPS week number to use in case If | |
| Scale factor to apply on delta velocity values. The default is 1.0 | |
| Scale factor to apply on delta angle values. The default is 1.0 |
ASCII Data
The ASCII IMU data part is a succession of sensors measurement set stored line per line. Each column field is separated by a tabulation '\t'
or semicolon ';'
character.
Field | Type | Unit | Optional | Description |
---|---|---|---|---|
| - | - | The IMU data time stamp expressed in the format specified by the $timeSource header field. | |
| double | m.s^-2 | Acceleration along the X axis, at least 6 digits required | |
| double | m.s^-2 | Acceleration along the Y axis, at least 6 digits required | |
| double | m.s^-2 | Acceleration along the Z axis, at least 6 digits required | |
| double | rad.s^-1 | Rotation around the X axis, at least 6 digits required | |
| double | rad.s^-1 | Rotation around the Y axis, at least 6 digits required | |
| double | rad.s^-1 | Rotation around the Z axis, at least 6 digits required | |
| double | °C | IMU average temperature - leave it to 20°C of not available | |
| integer | - | IMU data validity status:
This column is optional. If not present, data will be considered valid. |
Example
$qimu
$version:2
$timeSource:gpsTow
$gpsWeekNumber:2000
490735.000;0.19288155;-1.816273;-9.828661;0.0062844071123335;0.0011926006939676;0.0298384904861450;36.528233;3
490735.005;0.14271985;-2.6644802;-9.923747;0.0040422836939494;0.0022135065661536;0.0067230032549964;36.524704;3
490735.010;0.4916746;-1.2855182;-9.754349;-0.0057917270395491;0.0033033682240380;-0.0189951923158434;36.502354;3
490735.015;0.24891225;0.5289389;-10.076363;-0.0131475342644586;-0.0067042999797397;-0.0364824056625366;36.47059;3
490735.020;0.1136211;2.0974708;-10.5110035;-0.0064445038636525;-0.0109467254744636;-0.0281047768063015;36.49059;3
490735.025;-0.07628032;2.883454;-10.413604;-0.0004028213934766;-0.0000530341640115;-0.0025157888730367;36.52117;3
490735.030;0.027972449;1.8641504;-9.812735;0.0024698025650448;0.0097982532448239;0.0243995004230075;36.56294;3
490735.035;-0.1216449;0.38619462;-9.776663;0.0110885520776113;-0.0079348292615679;0.0347687085469564;36.50941;3
Binary IMU Format
The binary IMU file format reduces both the file size and time needed to import it compared to the ASCII one. However, a specific converted has to be written requiring basic programming skills
The format is composed of a simple header followed by data blocks. The file is using "Little Endian" byte ordering (LSB first).
Binary Header
Binary IMU file starts with a 4 chars signature QIMU to allow Qinertia identify it as an IMU binary file. Right after this signature, there is the header that provides mandatory information to decode the IMU file:
Field | Type | Size | Description |
---|---|---|---|
signature | chars | 4 | Set it to QIMU it is used to identify the file as a binary IMU |
version | uint32_t | 4 | Binary IMU file version, should be set to 1 |
timeSource | uint32_t | 4 | Defines how each IMU data time stamp is expressed:
|
deltaAngleScaleFactor | double | 8 | Scale factory to apply on each delta angle entry to convert LSB to rad.s^-1 value |
deltaVelocityScaleFactor | double | 8 | Scale factory to apply on each delta velocity entry to convert LSB to m.s^-2 value |
Binary Data
After the header comes each IMU measurement block as described below:
Field | Type | Size | Unit | Description |
---|---|---|---|---|
timeStamp | double | 8 | Seconds | IMU data absolute time stamp in decimal seconds according to |
status | uint16_t | 2 | - | IMU data validity status bit mask:
|
deltaVelocityX | int32_t | 4 | m.s^-2 | Acceleration along the X axis - will be multiplied by the header scale factor to get m.s^-2 |
deltaVelocityY | int32_t | 4 | m.s^-2 | Acceleration along the Y axis - will be multiplied by the header scale factor to get m.s^-2 |
deltaVelocityZ | int32_t | 4 | m.s^-2 | Acceleration along the Z axis - will be multiplied by the header scale factor to get m.s^-2 |
deltaAngleX | int32_t | 4 | rad.s^-1 | Rotation around the X axis - will be multiplied by the header scale factor to get rad.s^-1 |
deltaAngleY | int32_t | 4 | rad.s^-1 | Rotation around the Y axis - will be multiplied by the header scale factor to get rad.s^-1 |
deltaAngleZ | int32_t | 4 | rad.s^-1 | Rotation around the Z axis - will be multiplied by the header scale factor to get rad.s^-1 |
temperature | float | 4 | °C | IMU average temperature - leave it to 20°C of not available |
Note
Currently, Qinertia has only been tested for 100 Hz and 200 Hz IMU. If your IMU outputs data at an other rate, please contact SBG Systems support team at support@sbg-systems.com