GPS/GNSS Synchronization Guide

For more information on how to physically connect a GPS to your Ouster sensor and synchronise the Ouster sensor timestamp to an NMEA sentence, please refer to your sensor’s Hardware User Manual.

Configuring the Ouster Sensor

Now that all GPS configurations are in place and connections to the Ouster sensor have been successfully established, it’s time to initiate the synchronization process on the Ouster sensor, ensuring its timestamp aligns precisely with the GPS signal.

Note

After POST api/v1/sensor/config request is received successfully, the sensor will reinitialize automatically to make the new configuration active and the config settings are persisted across power cycles.

Checking for Sync

Once you have completed all the above you should be able to check for synchronization

  • Check the output from the HTTP Endpoint GET /api/v1/time.

  • Verify that the sensor is locked onto the PPS signal.

    • ”sync_pulse_in”: { “locked”: 1 }

    • If not check the polarity and change it if necessary.

  • Verify that the sensor is locked on the NMEA signal.

    • “nmea”: { “locked”: 1 }

    • If not check the polarity and baud rate and change them if necessary.

  • Verify that last_read_message looks like a valid GPRMC sentence.

    • “decoding”: {“last_read_message”: “GPRMC,024041.00,A,5107.0017737,N,11402.3291611, W,0.080,323.3,020420,0.0,E,A*20”}

  • Verify that timestamp time has updated to a reasonable GPS time.

    • “timestamp”: {“time”: 1585881641.96139565999999,

      “mode”: “TIME_FROM_SYNC_PUSLE_IN”,

      “time_options”: { “sync_pulse_in”: 1585881641}}

Example output from GET /api/v1/time:

{
   "timestamp":{
      "time":1585881641.96139565999999,
      "mode":"TIME_FROM_SYNC_PUSLE_IN",
      "time_options":{
         "sync_pulse_in":1585881641,
         "internal_osc":302,
         "ptp_1588":309
      }
   },
   "sync_pulse_in":{
      "locked":1,
      "diagnostics":{
         "last_period_nsec":10,
         "count_unfiltered":832,
         "count":832
      },
      "polarity":"ACTIVE_HIGH"
   },
   "multipurpose_io":{
      "mode":"INPUT_NMEA_UART",
      "sync_pulse_out":{
         "pulse_width_ms":10,
         "angle_deg":360,
         "frequency_hz":1,
         "polarity":"ACTIVE_HIGH"
      },
      "nmea":{
         "locked":1,
         "baud_rate":"BAUD_9600",
         "diagnostics":{
            "io_checks":{
               "bit_count":2938457,
               "bit_count_unfilterd":2938457,
               "start_char_count":832,
               "char_count":66526
            },
            "decoding":{
               "last_read_message":"GPRMC,024041.00,A,5107.0017737,N,11402.3291611,W,
                                   0.080,323.3,020420,0.0,E,A*20",
               "date_decoded_count":832,
               "not_valid_count":0,
               "utc_decoded_count":832
            }
         },
         "leap_seconds":37,
         "ignore_valid_char":0,
         "polarity":"ACTIVE_HIGH"
      }
   }
}