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.

ParamOptionalDescription

$version

(error)IMU ASCII file format version, should be set to 2

$timeSource

(tick)

IMU data time stamp format:

  • gps: Seconds from 6 January 1980 (no leap second)
  • gpsTow: GPS time of week in seconds
  • utcIso: ISO 6801 (e.g. 2020-06-19T11:50:04.535Z)
  • unix Seconds from 1 January 1970 (UTC time)

The default value is gps

$gpsWeekNumber

(tick)

GPS week number to use in case $timeSource is gpsTow

If gpsTow is selected this parameter is mandatory and has no default value.

$deltaVelScaleFactor

(tick)

Scale factor to apply on delta velocity values.

The default is 1.0

$deltaAngleScaleFactor

(tick)

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.

FieldTypeUnitOptionalDescription

timestamp

--(error)The IMU data time stamp expressed in the format specified by the $timeSource header field.

deltaVelocityX

doublem.s^-2(error)Acceleration along the X axis, at least 6 digits required

deltaVelocityY

doublem.s^-2(error)Acceleration along the Y axis, at least 6 digits required

deltaVelocityZ

doublem.s^-2(error)Acceleration along the Z axis, at least 6 digits required

deltaAngleX

doublerad.s^-1(error)Rotation around the X axis, at least 6 digits required

deltaAngleY

doublerad.s^-1(error)Rotation around the Y axis, at least 6 digits required

deltaAngleZ

doublerad.s^-1(error)Rotation around the Z axis, at least 6 digits required

temperature

double°C(tick)IMU average temperature - leave it to 20°C of not available

status

integer-(tick)

IMU data validity status:

  • 0 - delta velocity and delta angle are invalid
  • 1 - delta velocity is valid and delta angle is invalid
  • 2 - delta velocity is invalid and delta angle is valid
  • 3 - valid data

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
TEXT

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:

FieldTypeSizeDescription
signaturechars4Set it to QIMU it is used to identify the file as a binary IMU
versionuint32_t4Binary IMU file version, should be set to 1
timeSourceuint32_t4

Defines how each IMU data time stamp is expressed:

  • 0: GPS time in seconds since 6 January 1980 (no leap second)
  • 1: UNIX time in seconds from 1 January 1970 (UTC time)
deltaAngleScaleFactordouble8Scale factory to apply on each delta angle entry to convert LSB to rad.s^-1 value
deltaVelocityScaleFactordouble8Scale 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:

FieldTypeSizeUnitDescription
timeStampdouble8Seconds

IMU data absolute time stamp in decimal seconds according to timeSource setting

statusuint16_t2-

IMU data validity status bit mask:

  • Bit 1: is set if delta velocity is valid
  • Bit 2: is set if delta angle is valid
deltaVelocityXint32_t4m.s^-2Acceleration along the X axis - will  be multiplied by the header scale factor to get m.s^-2
deltaVelocityYint32_t4m.s^-2Acceleration along the Y axis - will be multiplied by the header scale factor to get m.s^-2
deltaVelocityZint32_t4m.s^-2Acceleration along the Z axis - will be multiplied by the header scale factor to get m.s^-2
deltaAngleXint32_t4rad.s^-1Rotation around the X axis - will be multiplied by the header scale factor to get rad.s^-1
deltaAngleYint32_t4rad.s^-1Rotation around the Y axis - will be multiplied by the header scale factor to get rad.s^-1
deltaAngleZint32_t4rad.s^-1Rotation around the Z axis - will be multiplied by the header scale factor to get rad.s^-1
temperaturefloat4°CIMU 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