GPS/GNSS Synchronization

Open in Claude

For GPS wiring instructions, see your sensor’s Hardware User Manual.

Configuring the Ouster Sensor

With GPS connections in place, configure the following parameters to synchronize the sensor’s timestamp to the GPS signal:

ParameterValue
timestamp_modeTIME_FROM_SYNC_PULSE_IN
multipurpose_io_modeINPUT_NMEA_UART
sync_pulse_in_polarityMatch the polarity of the GPS PPS signal
multipurpose_io_polarityMatch the polarity of the GPS NMEA UART signal
nmea_baud_rateMatch the baud rate of the GPS output
nmea_leap_secondsCurrent TAI–UTC offset — check leapsecond.com; at time of writing the value is 37

Checking for Sync

After applying the configuration above, verify synchronization using GET /api/v1/time:

  1. PPS lock — the response should include:

    1"sync_pulse_in": { "locked": 1 }

    If not, recheck sync_pulse_in_polarity.

  2. NMEA lock — the response should include:

    1"nmea": { "locked": 1 }

    If not, recheck multipurpose_io_polarity and nmea_baud_rate.

  3. NMEA decodinglast_read_message should contain a valid GPRMC sentence:

    1"decoding": { "last_read_message": "GPRMC,024041.00,A,5107.0017737,N,11402.3291611,W,0.080,323.3,020420,0.0,E,A*20" }
  4. Timestamptimestamp.mode should be TIME_FROM_SYNC_PULSE_IN and timestamp.time should reflect valid GPS time.

Example Response

Full example output from GET /api/v1/time:

1{
2 "timestamp": {
3 "time": 1585881641.96139565999999,
4 "mode": "TIME_FROM_SYNC_PULSE_IN",
5 "time_options": {
6 "sync_pulse_in": 1585881641,
7 "internal_osc": 302,
8 "ptp_1588": 309
9 }
10 },
11 "sync_pulse_in": {
12 "locked": 1,
13 "diagnostics": {
14 "last_period_nsec": 10,
15 "count_unfiltered": 832,
16 "count": 832
17 },
18 "polarity": "ACTIVE_HIGH"
19 },
20 "multipurpose_io": {
21 "mode": "INPUT_NMEA_UART",
22 "sync_pulse_out": {
23 "pulse_width_ms": 10,
24 "angle_deg": 360,
25 "frequency_hz": 1,
26 "polarity": "ACTIVE_HIGH"
27 },
28 "nmea": {
29 "locked": 1,
30 "baud_rate": "BAUD_9600",
31 "diagnostics": {
32 "io_checks": {
33 "bit_count": 2938457,
34 "bit_count_unfilterd": 2938457,
35 "start_char_count": 832,
36 "char_count": 66526
37 },
38 "decoding": {
39 "last_read_message": "GPRMC,024041.00,A,5107.0017737,N,11402.3291611,W,0.080,323.3,020420,0.0,E,A*20",
40 "date_decoded_count": 832,
41 "not_valid_count": 0,
42 "utc_decoded_count": 832
43 }
44 },
45 "leap_seconds": 37,
46 "ignore_valid_char": 0,
47 "polarity": "ACTIVE_HIGH"
48 }
49 }
50}