{
  "id": 323135,
  "title": "Time Synchronization Across CSVs",
  "url": "/competitions/smartphone-decimeter-2022/discussion/323135",
  "author_name": "",
  "post_date": "2022-05-04T23:06:45.266583500Z",
  "votes": 18,
  "comment_count": 2,
  "views": 0,
  "content": "<p>The device_{gnss,imu}.csv files were generated such that their utcTimeMillis values are synchronized as closely as possible. Specifically:</p>\n<ul>\n<li>The device_gnss.csv uses the GNSS signal arrival time as calculated by the GNSS hardware clock.</li>\n<li>The device_imu.csv uses the Android system clock and, when available, corrects for biases using a <a href=\"https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()\" target=\"_blank\">GNSS chipset real-time clock</a>.</li>\n</ul>\n<p>Since the <a href=\"https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()\" target=\"_blank\">GNSS chipset real-time clock</a> is not always available in raw GNSS measurements, there will be inconsistencies concerning the synchronization of IMU measurements to GNSS measurements. These inconsistencies tend to be larger for Qualcomm devices (Google Pixel {4, 5}),  as their 1Hz GNSS measurements are out of phase with respect to their position reporting. Based on our experience, shifting each IMU measurement ~0.6 seconds forward before matching GNSS measurement may result in better synchronization. For Broadcom devices (Xiaomi Mi 8, Google Pixel 6 Pro, and Samsung Galaxy {S20, S21, S21 Plus}), no such compensation is needed. </p>\n<p>Note that the ground_truth.csv files were generated such that their UnixTimeMillis values are the GNSS signal arrival time as calculated by the reference INS system. They are expected to be accurately synchronized with respect to the utcTimeMillis values in their corresponding device_gnss.csv files.</p>",
  "messages": [
    {
      "id": "1777924",
      "postDate": "05/04/2022 23:06:45",
      "content": "<p>The device_{gnss,imu}.csv files were generated such that their utcTimeMillis values are synchronized as closely as possible. Specifically:</p>\n<ul>\n<li>The device_gnss.csv uses the GNSS signal arrival time as calculated by the GNSS hardware clock.</li>\n<li>The device_imu.csv uses the Android system clock and, when available, corrects for biases using a <a href=\"https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()\" target=\"_blank\">GNSS chipset real-time clock</a>.</li>\n</ul>\n<p>Since the <a href=\"https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()\" target=\"_blank\">GNSS chipset real-time clock</a> is not always available in raw GNSS measurements, there will be inconsistencies concerning the synchronization of IMU measurements to GNSS measurements. These inconsistencies tend to be larger for Qualcomm devices (Google Pixel {4, 5}),  as their 1Hz GNSS measurements are out of phase with respect to their position reporting. Based on our experience, shifting each IMU measurement ~0.6 seconds forward before matching GNSS measurement may result in better synchronization. For Broadcom devices (Xiaomi Mi 8, Google Pixel 6 Pro, and Samsung Galaxy {S20, S21, S21 Plus}), no such compensation is needed. </p>\n<p>Note that the ground_truth.csv files were generated such that their UnixTimeMillis values are the GNSS signal arrival time as calculated by the reference INS system. They are expected to be accurately synchronized with respect to the utcTimeMillis values in their corresponding device_gnss.csv files.</p>",
      "rawMarkdown": "The device_{gnss,imu}.csv files were generated such that their utcTimeMillis values are synchronized as closely as possible. Specifically:\n* The device_gnss.csv uses the GNSS signal arrival time as calculated by the GNSS hardware clock.\n* The device_imu.csv uses the Android system clock and, when available, corrects for biases using a [GNSS chipset real-time clock](https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()).\n \nSince the [GNSS chipset real-time clock](https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()) is not always available in raw GNSS measurements, there will be inconsistencies concerning the synchronization of IMU measurements to GNSS measurements. These inconsistencies tend to be larger for Qualcomm devices (Google Pixel {4, 5}),  as their 1Hz GNSS measurements are out of phase with respect to their position reporting. Based on our experience, shifting each IMU measurement ~0.6 seconds forward before matching GNSS measurement may result in better synchronization. For Broadcom devices (Xiaomi Mi 8, Google Pixel 6 Pro, and Samsung Galaxy {S20, S21, S21 Plus}), no such compensation is needed. \n \nNote that the ground_truth.csv files were generated such that their UnixTimeMillis values are the GNSS signal arrival time as calculated by the reference INS system. They are expected to be accurately synchronized with respect to the utcTimeMillis values in their corresponding device_gnss.csv files.",
      "votes": null
    },
    {
      "id": "1782390",
      "postDate": "05/09/2022 14:38:27",
      "content": "<p>👍Benifit a lot, but I  have some questions.  Are you sure your conclusion is correct? The paer  from ION <em>Time-Synchronized GNSS/IMU Data Logging from Android Smartphone and its Influence on the Positioning Accuracy</em> pointed out it that it is neccessary to take the time synchronization into consideration for Mi8. Besides, i want to know the differences between  ChipsetElapsedRealtimeNanos and elapsedRealtimeNanos, and how to get the time difference between sensor time and GNSS time. Looking forward to your reply.</p>",
      "rawMarkdown": "👍Benifit a lot, but I  have some questions.  Are you sure your conclusion is correct? The paer  from ION *Time-Synchronized GNSS/IMU Data Logging from Android Smartphone and its Influence on the Positioning Accuracy* pointed out it that it is neccessary to take the time synchronization into consideration for Mi8. Besides, i want to know the differences between  ChipsetElapsedRealtimeNanos and elapsedRealtimeNanos, and how to get the time difference between sensor time and GNSS time. Looking forward to your reply.",
      "votes": null
    },
    {
      "id": "1866026",
      "postDate": "07/22/2022 08:16:01",
      "content": "<p>Looks like accelerometer and gyroscope have different time shifts for mi8. For accelerometer it is indeed ~0.6 second, but for gyro it is slightly more than 1. sec<br>\nThere is strong minima in track/imu data synchronization<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F515279%2F387e2d5eb95f9872948287cc61181541%2FFigure_111.png?generation=1658477719107627&amp;alt=media\" alt=\"\"></p>",
      "rawMarkdown": "Looks like accelerometer and gyroscope have different time shifts for mi8. For accelerometer it is indeed ~0.6 second, but for gyro it is slightly more than 1. sec\nThere is strong minima in track/imu data synchronization\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F515279%2F387e2d5eb95f9872948287cc61181541%2FFigure_111.png?generation=1658477719107627&alt=media)",
      "votes": null
    }
  ],
  "comments": [
    {
      "id": 1782390,
      "author_name": "hyisoecn",
      "author_url": "",
      "post_date": "05/09/2022 14:38:27",
      "content": "<p>👍Benifit a lot, but I  have some questions.  Are you sure your conclusion is correct? The paer  from ION <em>Time-Synchronized GNSS/IMU Data Logging from Android Smartphone and its Influence on the Positioning Accuracy</em> pointed out it that it is neccessary to take the time synchronization into consideration for Mi8. Besides, i want to know the differences between  ChipsetElapsedRealtimeNanos and elapsedRealtimeNanos, and how to get the time difference between sensor time and GNSS time. Looking forward to your reply.</p>",
      "votes": null,
      "replies": []
    },
    {
      "id": 1866026,
      "author_name": "ielenik",
      "author_url": "",
      "post_date": "07/22/2022 08:16:01",
      "content": "<p>Looks like accelerometer and gyroscope have different time shifts for mi8. For accelerometer it is indeed ~0.6 second, but for gyro it is slightly more than 1. sec<br>\nThere is strong minima in track/imu data synchronization<br>\n<img src=\"https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F515279%2F387e2d5eb95f9872948287cc61181541%2FFigure_111.png?generation=1658477719107627&amp;alt=media\" alt=\"\"></p>",
      "votes": null,
      "replies": []
    }
  ],
  "raw_markdown_by_id": {
    "1777924": "The device_{gnss,imu}.csv files were generated such that their utcTimeMillis values are synchronized as closely as possible. Specifically:\n* The device_gnss.csv uses the GNSS signal arrival time as calculated by the GNSS hardware clock.\n* The device_imu.csv uses the Android system clock and, when available, corrects for biases using a [GNSS chipset real-time clock](https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()).\n \nSince the [GNSS chipset real-time clock](https://developer.android.com/reference/android/location/GnssClock#getElapsedRealtimeNanos()) is not always available in raw GNSS measurements, there will be inconsistencies concerning the synchronization of IMU measurements to GNSS measurements. These inconsistencies tend to be larger for Qualcomm devices (Google Pixel {4, 5}),  as their 1Hz GNSS measurements are out of phase with respect to their position reporting. Based on our experience, shifting each IMU measurement ~0.6 seconds forward before matching GNSS measurement may result in better synchronization. For Broadcom devices (Xiaomi Mi 8, Google Pixel 6 Pro, and Samsung Galaxy {S20, S21, S21 Plus}), no such compensation is needed. \n \nNote that the ground_truth.csv files were generated such that their UnixTimeMillis values are the GNSS signal arrival time as calculated by the reference INS system. They are expected to be accurately synchronized with respect to the utcTimeMillis values in their corresponding device_gnss.csv files.",
    "1782390": "👍Benifit a lot, but I  have some questions.  Are you sure your conclusion is correct? The paer  from ION *Time-Synchronized GNSS/IMU Data Logging from Android Smartphone and its Influence on the Positioning Accuracy* pointed out it that it is neccessary to take the time synchronization into consideration for Mi8. Besides, i want to know the differences between  ChipsetElapsedRealtimeNanos and elapsedRealtimeNanos, and how to get the time difference between sensor time and GNSS time. Looking forward to your reply.",
    "1866026": "Looks like accelerometer and gyroscope have different time shifts for mi8. For accelerometer it is indeed ~0.6 second, but for gyro it is slightly more than 1. sec\nThere is strong minima in track/imu data synchronization\n![](https://www.googleapis.com/download/storage/v1/b/kaggle-forum-message-attachments/o/inbox%2F515279%2F387e2d5eb95f9872948287cc61181541%2FFigure_111.png?generation=1658477719107627&alt=media)"
  },
  "source": "meta"
}