Skip to main content

Structure of parameterized data

Basic structure of the parameterized data

A message received from the Google pub-sub channel contains a vehicle record batch. This is an array of vehicle records.

[
{
"vehicle_id": "vehicle_id",
"timestamp": "date_string",
"gps": {},
"imu": {},
"fms": {}
},
{
"vehicle_id": "vehicle_id",
"timestamp": "date_string",
"gps": {},
"imu": {},
"fms": {}
},
...
{
"vehicle_id": "vehicle_id",
"timestamp": "date_string",
"gps": {},
"imu": {},
"fms": {}
}
]

A vehicle record contains the folloving fields:

  • vehicle_id - unique identifier of the vehicle in the RMS system (this is a uuid string)
  • timestamp - creation time of the record (this is a UTC datetime string)
  • gps - GPS receiver data
  • imu - IMU sensor data
  • fms - FMS parameters extracted from the vehicle CAN-bus

A vehicle record batch can contains records from multiple vehicles, you can use the vehicle_id field to sort out data for each vehicle.

GPS data structure

An example GPS data object:

"gps": {
"gps_time": "2025-10-01T05:16:50.1Z", // GPS time (UTC)
"latitude": 47.41660016666666, // GPS latitude - 47°24'59.8"N
"longitude": 18.879662333333336, // GPS longitude - 18°52'46.8"E
"hdop": 0.5, // HDOP value (Horizontal Dilution of Precision)
"speed": 0, // GPS speed in km/h
"altitude": 231.7 // GPS altitude in meters
}

IMU data structure

An example IMU sensor data structure:

"imu": {
"acceleration_sensor": { // in m/s2
"raw": { // raw sensor data received directly from the sensor
"x": -4.3621154,
"y": -7.080362,
"z": -5.1326046
},
"filtered": { // filtered sensor data after applying a filter
// to smooth the output
"x": -5.959174,
"y": -9.672626,
"z": -7.0117545
}
},
"gyro_sensor": { // angular velocity in °/s
"raw": { // raw sensor data received directly from the sensor
"x": 49.84,
"y": -24.9025,
"z": 233.8
},
"filtered": { // filtered sensor data after applying a filter
// to smooth the output
"x": 56.96,
"y": -28.46,
"z": 267.2
}
},
"temperature": 31.4375 // internal sensor temperature in celsius (°C)
}

FMS data structure

An example FMS data structure:

"fms": {
"signals": {
"103": { // signal ID 103 - Instantaneous fuel economy
"value": 2.900390625 // 2.9 km/L
},
"31": { // signal ID 31 - Tachograph vehicle speed
"value": 4.1875 // 4.2 km/h
},
"7": { // signal ID 7 - Engine speed
"value": 756 // 756 rpm
},
"1": { // signal ID 1 - Wheel based speed
"value": 4.1875 // 4.2 km/h
}
}
}

The signal ID list and signal descriptors can be accessed through the Administation page or using the RMS Data API.

Example vehicle record structure

A vehicle record contains a vehice_id and timestamp field and one or more data group field (gps, imu or fms):

{
"vehicle_id": "7e86fe57-b000-fb4e-b7cc-3ec33d750b84",
"timestamp": "2025-12-15T13:52:07.04Z",
"gps": null,
"imu": {
"acceleration_sensor": {
"raw": {
"x": -4.2687955,
"y": -6.7645097,
"z": -5.5537415
},
"filtered": {
"x": -5.831688,
"y": -9.241133,
"z": -7.587078
}
},
"gyro_sensor": {
"raw": {
"x": 101.115,
"y": -66.08,
"z": 241.08
},
"filtered": {
"x": 115.56,
"y": -75.52,
"z": 275.52
}
},
"temperature": 31.5
},
"fms": {
"signals": {
"103": {
"value": 2.900390625
},
"31": {
"value": 4.1875
},
"7": {
"value": 756
},
"1": {
"value": 4.1875
}
}
}
}

Sampling vehicle data

Each data source has different sampling rate. Sampling rate of

  • GPS data is 100 milliseconds
  • IMU data is 10-100 milliseconds
  • FMS CAN-bus data is depends on the repetition rates of the different CAN-bus messages

Each message on the CAN-bus has different repetition rates. For example an Electronic Engine Controller #1 (EEC1) message which contains the engine speed signal has a repetition rate of 20 ms, a Dash Display message which contains the fuel level signal has a repetition rate of 1000 ms, or a Vehicle Identification message (contains the vehicle identification number) has a repetition rate of 10,000 ms. For detailed information see the FMS-Standard documentation.

A vehicle data record is generated in every 50 ms if any of the observed data is changed:

  • a new GPS sensor data is received
  • a new IMU sensor data is received
  • one or more observed FMS CAN-bus signals are changed

If nothing changed during the 50 ms wide time window since the previous vehicle record, no new vehicle data record will be generated (and published).

To reduce the cost of network data transfer, each vehicle record contains only newly received sensor data and FMS signal values since the previous vehicle record. For example, if a vehicle record is generated every 50 ms and GPS sensor data is sampled every 100 ms, then, on average, every second vehicle record will contain GPS sensor data.

In the case of FMS CAN-bus data, just the changes are recorded in the fms object, but in each second a full snapshot is generated with all of actual values of the observed FMS CAN-bus signals.