Analysing driving performance throughout trips allows us to measure the health status of several vehicle components and as a consequence the health status of the vehicle itself. For this, we make use of driving data along with contextual data such as the slope of the road, road roughness and weather temperature to identify situations that have an impact on the vehicle components lifetime and therefore on the residual value of the vehicle.

We aim at calculating scores for the following seven components of the vehicle:

  • Battery
  • Body
  • Brakes
  • Engine
  • Suspension
  • Transmission
  • Tyres

Vehicle health assessment of a trip

The vehicle health value of a trip takes into consideration individual component scores that might go from 0 to 100, with 100 being the best case. For example, having smooth braking during the whole trip will lead to a high score in the brakes component. Then with the purpose of computing the global score of the trip, we need to combine these individual scores. And for this, we take the average replacement cost of each component to weight the impact of components scores.

Trip vehicle health details

The assessment submitted to the customer’s endpoint contains information about the trip and components scores as well as the driving metrics that lead to these scores. We detail in the following table the underlying logic for each vehicle component.

Name Description
Battery We evaluate the profile of the driver in terms of potential charging time of the battery during the trip, at different speed ranges
Body We analyze the exposure of the driver to high-density traffic (which might produce bumper-to-bumper situations) and the exposure to parking in potentially crowded areas
Brakes We compute the intensity and frequency of harsh braking events, in particular in downhill situations, where brakes may overheat
Engine We evaluate the extreme usage of the engine using different variables, including cold-start situations, jack-rabbit, harsh acceleration/demand and driving at inefficient speeds with regards to the context
Suspension By analyzing location after location the quality of the road in terms of its roughness and the speed profile of the driver during the trip, we can infer the exposure of the suspension system to extreme usage
Transmission Based on speed variation during the trip, we infer the usage of the gearbox and clutch
Tyres We take into account driving under extreme temperatures conditions on different types of road quality to inter the usage of the tyres


To recapitulate, we put forward the following example of the trip processing flow:

  1. Customer A subscribes to the vehicle health service;
  2. Customer A submits a trip to the Motion-S platform using the Motion-S API;
  3. The trip is augmented by the Motion-S platform;
  4. The vehicle health assessment is performed;
  5. Motion-S submits the result of the assessment to the Customer A’s endpoint.

The following is an example of such a result:

  "uid": "<motion-s-unique-trip-identifier>",
  "origin": "<customer-name>-<fleet-name>-<fleet-number>",
  "context": { ... },
  "vehicle_health": {
      "battery": {
          "charge_efficiency": 1.0,
          "battery_score": {
              "battery_score": 100.0,
              "battery_score_metadata": {
                  "charge_efficiency_score": 100.0
      "body": {
          "percentage_locations_with_dense_traffic": 0.0,
          "commercial_area_at_the_end": false,
          "body_score": {
              "body_score": 100.0,
              "body_score_metadata": {
                  "dense_traffic_score": 100.0,
                  "commercial_area_at_the_end_score": 100
      "brakes": {
          "percentage_locations_with_high_braking": 8.661417322834637,
          "braking_downhill_density": 4.502750525048122,
          "brakes_score": {
              "brakes_score": 42.417807523127664,
              "brakes_score_metadata": {
                  "high_braking_score": 23.955949755622157,
                  "braking_downhill_score": 60.87966529063317
      "engine": {
          "percentage_locations_with_harsh_accelerations": 2.091254752851711,
          "jackrabbit_start_density": 0.0,
          "temperature_in_degrees_at_start": 11.0,
          "percentage_locations_with_harsh_accelerations_low_temp": 0.0,
          "percentage_locations_with_inefficient_speed": 12.359550561797747,
          "engine_score": {
              "engine_score": 75.97277518106253,
              "engine_score_metadata": {
                  "percentage_locations_with_harsh_accelerations_score": 49.85000592681748,
                  "percentage_locations_with_harsh_accelerations_low_temp_score": 100.0,
                  "percentage_locations_with_inefficient_speed_score": 30.013869978495208,
                  "jackrabbit_start_density_score": 100.0,
                  "temperature_in_degrees_at_start_score": 100
      "suspension": {
          "proportions_performance_according_to_iri": {
              "good": 0.6673928830791576,
              "bad": 0.19317356572258534,
              "regular": 0.1394335511982571
          "suspension_score": {
              "suspension_score": 60.168130102770576,
              "suspension_score_metadata": {
                  "proportions_performance_according_to_iri_score": 60.168130102770576
      "transmission": {
          "gear_change_density": 1.8433027923142287,
          "transmission_score": {
              "transmission_score": 72.96730597398232,
              "transmission_score_metadata": {
                  "gear_change_density_score": 72.96730597398232
      "tyres": {
          "proportions_road_quality": {
              "fair": 0.5533769063180828,
              "good": 0.28467683369644153,
              "poor": 0.16194625998547568
          "proportions_temperature_type": {
              "moderate": 1.0,
              "hot": 0.0,
              "cold": 0.0
          "tyres_score": {
              "tyres_score": 83.72625227502981,
              "tyres_score_metadata": {
                  "proportions_road_quality_score": 67.45250455005961,
                  "proportions_temperature_type_score": 100.0
      "trip_vehicle_health_score": 73.42190751193664

Vehicle health assessment of a driver

Customers can also ask for the vehicle health of a given driver. For this, Motion-S exposes an endpoint which customers can call along with driver parameters. In the sections below, we give details about this endpoint.






Query parameters

  • ref_driver_ids (separated by “;”);
  • ref_from_date (“YYYY-MM-DD” format);
  • ref_to_date (“YYYY-MM-DD” format);
  • token: provided by Motion-S
curl -i -H "Accept: application/json" \
        -H "Content-Type: application/json" \
        -H "Authorization: Basic token" \
        -X GET https://<customer-name> drivers?ref_driver_ids=a793d2a99b632f0a;04893637cd6844e9


Successful response

HTTP status code


Response values

The response of this API consists of a list of risk assessments according to the requested drivers. Each of them has the following information:

Metric Description
device_id Motion-S device unique identifiers associated to a given driver.
vehicle_health_score_avg Average vehicle health score in a given date range.
battery_score_avg Average battery score in a given date range.
body_score_avg Average body score in a given date range.
brakes_score_avg Average brakes score in a given date range.
engine_score_avg Average engine score in a given date range.
suspension_score_avg Average suspension score in a given date range.
transmission_score_avg Average transmission score in a given date range.
tyres_score_avg Average tyres score in a given date range.
expected_kilometrage_per_year The expected kilometrage based on driver history.
number_of_trips Number of trips in a given date range.
date_from Date of the first trip used for this assessment.
date_to Date of the latest trip used for this assessment.

If no dates are provided, these values are computed including all driver’s trips.