Sensor Configuration

Configurable Parameters

Please find a list of all config_param that can be used to configure the sensor below. For detailed description of each parameter refer to Description- Configurable Parameters.

Overview

Parameter

Type

Valid Values

udp_dest

String

"" (default)

udp_port_lidar

Integer

7502 (default)

udp_port_imu

Integer

7503 (default)

sync_pulse_in_polarity

Keyword

ACTIVE_HIGH (default)

ACTIVE_LOW

sync_pulse_out_polarity

Keyword

ACTIVE_LOW (default)

ACTIVE_HIGH

sync_pulse_out_frequency

Integer >= 1

1 (default)

sync_pulse_out_angle

Integer [0 … 360]

360 (default)

sync_pulse_out_pulse_width

Integer >= 0

10 (default)

nmea_in_polarity

Keyword

ACTIVE_HIGH (default)

ACTIVE_LOW

nmea_ignore_valid_char

integer [ 0 … 1 ]

0 (default)

1

nmea_baud_rate

Keyword

BAUD_9600 (default)

BAUD_115200

nmea_leap_seconds

Integer >= 0

0 (default)

azimuth_window

List

[0,360000] (default)

signal_multiplier

number [ 1 … 3 ]

1 (default)

2

3

udp_profile_lidar

Keyword

LEGACY (default)

RNG19_RFL8_SIG16_NIR16

RNG19_RFL8_SIG16_NIR16_DUAL

RNG15_RFL8_NIR8

udp_profile_imu

Keyword

LEGACY (default)

phase_lock_enable

Boolean

false (default)

true

phase_lock_offset

Integer [ 0 … 360 ]

0 (default)

lidar_mode

Keyword

512x10

1024x10 (default)

2048x10

512x20

1024x20

timestamp_mode

Keyword

TIME_FROM_INTERNAL_OSC (default)

TIME_FROM_PTP_1588

TIME_FROM_SYNC_PULSE_IN

multipurpose_io_mode

Keyword

OFF (default)

INPUT_NMEA_UART

OUTPUT_FROM_INTERNAL_OSC

OUTPUT_FROM_SYNC_PULSE_IN

OUTPUT_FROM_PTP_1588

OUTPUT_FROM_ENCODER_ANGLE

operating_mode

Keyword

NORMAL (default)

STANDBY

Description- Configurable Parameters

udp_dest

Description:

  • Type: String

  • Default: “169.254.198.184”

  • Destination to which the sensor sends UDP traffic.

Note

As of now, setting the udp_dest to “@auto” is not supported through the set_config_param TCP command. It is only supported through HTTP endpoint POST /api/v1/sensor/config, and the set_udp_dest_auto using TCP command. udp_ip flag has been deprecated in Firmware 2.4, please use udp_dest flag.

udp_port_lidar

Description:

  • Type: Integer [ 0 … 65535 ]

  • Default: 7502

  • The <port> on udp_dest to which lidar data will be sent (7502, default).

udp_port_imu

Description:

  • Type: Integer [ 0 … 65535 ]

  • Default: 7503

  • The <port> on udp_dest to which IMU data will be sent (7503, default).

sync_pulse_in_polarity

Description:

  • Type: Keyword

  • Default: “ACTIVE_HIGH”

  • Enum:
    • “ACTIVE_HIGH”

    • “ACTIVE_LOW”

  • The polarity of SYNC_PULSE_IN input, which controls polarity of SYNC_PULSE_IN pin when timestamp_mode is set in TIME_FROM_SYNC_PULSE_IN.

sync_pulse_out_polarity

Description:

  • Type: Keyword

  • Default: “ACTIVE_HIGH”

  • The polarity of SYNC_PULSE_OUT output, if the sensor is set as the master sensor used for time synchronization.

sync_pulse_out_frequency

Description:

  • Type: Integer >= 1

  • Default: 1

  • The output SYNC_PULSE_OUT pulse rate in Hz. Valid inputs are integers >0 Hz, but also limited by the criteria described in the Time Synchronization section of the Software User Manual.

sync_pulse_out_angle

Description:

  • Type: Integer [ 0 … 360 ]

  • Default: 360

  • The angle in terms of degrees that the sensor traverses between each SYNC_PULSE_OUT pulse. E.g. a value of 180 means a sync pulse is sent out every 180° for a total of two pulses per revolution and angular frequency of 20 Hz if the sensor is 1024x10 Hz lidar mode. Valid inputs are integers between 0 and 360 inclusive but also limited by the criteria described in the Time Synchronization section of Software User Manual.

sync_pulse_out_pulse_width

Description:

  • Type: Integer >= 0

  • Default: 10

  • The polarity of SYNC_PULSE_OUT output, if the sensor is set as the master sensor used for time synchronization. Output SYNC_PULSE_OUT pulse width is in ms, increments in 1 ms. Valid inputs are integers greater than 0 ms, but also limited by the criteria described in the Time Synchronization section of Software User Manual.

nmea_in_polarity

Description:

  • Type: Keyword

  • Default: “ACTIVE_HIGH”

  • Enum:
    • “ACTIVE_HIGH”

    • “ACTIVE_LOW”

  • Set the polarity of NMEA UART input $GPRMC messages. See Time Synchronization section in sensor user manual for NMEA use case. Use ACTIVE_HIGH if UART is active high, idle low, and start bit is after a falling edge.

nmea_ignore_valid_char

Description:

  • Type: Integer [ 0 … 1 ]

  • Default: 0

  • Set 0 if NMEA UART input $GPRMC messages should be ignored if valid character is not set, and 1 if messages should be used for time syncing regardless of the valid character.

nmea_baud_rate

Description:

  • Type: Keyword

  • Default: “BAUD_9600”

  • Enum:
    • “BAUD_9600”

    • “BAUD_115200”

  • BAUD_9600 (default) or BAUD_115200 for the expected baud rate the sensor is attempting to decode for NMEA UART input $GPRMC messages.

nmea_leap_seconds

Description:

  • Type: Integer >= 0

  • Default: 0

  • Set an integer number of leap seconds that will be added to the UDP timestamp when calculating seconds since 00:00:00 Thursday, 1 January 1970. For Unix Epoch time, this should be set to 0.

azimuth_window

Description:

  • Type: List

  • Default: [0,360000]

  • Set the visible region of interest of the sensor in millidegrees. Only data from within the specified azimuth window bounds is sent. The value should be provisioned as: [min_bound_millideg, max_bound_millideg]

signal_multiplier

Description:

  • Type: Number [ 1 … 3 ]

  • Default: 1

  • The value that the signal_multiplier is configured. By default the sensor has a signal multiplier value of 1.

    For 2x and 3x multipliers, the azimuth_window parameter sets the azimuth window that the lasers will be enabled in.

    The higher the signal multiplier value, the smaller the maximum azimuth window can be.

    Signal Multiplier Value Max Azimuth Window 1: ( Default) 360°, 2: 180°, 3: 120°.

    All sensors have equivalent power draw and thermal output when operating at the max azimuth window for a particular signal multiplier value. Therefore, using an azimuth window that is smaller than the maximum allowable azimuth window with a particular signal multiplier value (excluding 1x) can reduce the power draw and thermal output of the sensor.

    However, while this can increase the max operating temp of the sensor, it can also degrade the performance at low temps. This discrepancy will be resolved in a future firmware. The table below outlines some example use cases.

udp_profile_lidar

Description:

  • Type: Keyword

  • Default: “LEGACY”

  • Enum:
    • “LEGACY”

    • “RNG19_RFL8_SIG16_NIR16”

    • “RNG19_RFL8_SIG16_NIR16_DUAL”

    • “RNG15_RFL8_NIR8”

  • The configuration of the LIDAR data packets. Valid values are LEGACY [Default], RNG19_RFL8_SIG16_NIR16, RNG19_RFL8_SIG16_NIR16_DUAL, RNG15_RFL8_NIR8.

udp_profile_imu

Description:

  • Type: Keyword

  • Default: “LEGACY”

  • Value: “LEGACY”

  • The configuration of the IMU data packets. Valid value is LEGACY.

phase_lock_enable

Description: Whether phase locking is enabled. Refer to Phase Lock Section in the Firmware User Manual for more details on using phase lock.

  • Type: Boolean

  • Default: False

  • Whether phase locking is enabled. Refer to Phase Lock Section in the Firmware User Manual for more details on using phase lock.

phase_lock_offset

Description:

  • Type: Integer [ 0 … 360000 ]

  • Default: 0

  • The angle in the Lidar Coordinate Frame that sensors are locked to in millidegrees if phase locking is enabled. Angle is traversed at the top of the second.

lidar_mode

Description:

  • Type: Keyword

  • Default: “1024x10”

  • Enum:
    • “512x10”

    • “1024x10”

    • “2048x10”

    • “512x20”

    • “1024x20”

  • The horizontal resolution and rotation rate of the sensor. The effective range of the sensor is increased by 15-20% for every halving of the number of points gathered e.g. 512x10 has 15-20% longer range than 512x20.

timestamp_mode

Description:

The method used to timestamp measurements. Valid modes are TIME_FROM_INTERNAL_OSC, TIME_FROM_SYNC_PULSE_IN, or TIME_FROM_PTP_1588.

multipurpose_io_mode

Description:

  • Type: Keyword

  • Default: “OFF”

  • Enum:
    • “OFF”

    • “INPUT_NMEA_UART”

    • “OUTPUT_FROM_INTERNAL_OSC”

    • “OUTPUT_FROM_SYNC_PULSE_IN”

    • “OUTPUT_FROM_PTP_1588”

    • “OUTPUT_FROM_ENCODER_ANGLE”

  • Configure the mode of the MULTIPURPOSE_IO pin. Refer to Time Synchronization section in Firmware user manual for a detailed description of each option.

operating_mode

Description:

  • Type: Any

  • Default: “NORMAL”

  • Set NORMAL to put the sensor into a normal operating mode or STANDBY to put the sensor into a low power (5W) operating mode where the motor does not spin and lasers do not fire.

Note

auto_start_flag is deprecated parameter in Firmware 2.4 and later. auto_start_flag 0 is equivalent to operating_mode STANDBY and auto_start_flag 1 is equivalent to operating_mode NORMAL.

TCP API Guide

Querying Sensor Info and Intrinsic Calibration

The sensor can be queried and configured using a simple plaintext protocol over TCP on port 7501.

An example session using the unix netcat utility is shown below. Note: “xxx” refers to the sensor serial number. The hostname of the sensor can look like “os-xxx” or “os1-xxx”.

$ nc os-122201000998.local 7501
get_sensor_info

 {"prod_line": "OS-1-128", "prod_pn": "840-103575-06", "prod_sn": "122201000998",
  "image_rev": "ousteros-image-prod-aries-v2.4.0-omega.2+20220730010801.staging",
  "build_rev": "v2.4.0-omega.2", "build_date": "2022-07-29T23:56:15Z",
  "status": "RUNNING", "initialization_id": 9599937}

A sensor may have one of the following statuses:

Sensor Status

Status

Description

INITIALIZING

When the sensor is booting and not yet outputting data

WARMUP

Sensor has gone into thermal warmup state

UPDATING

When the sensor is updating the FPGA firmware on the first reboot after a firmware upgrade

RUNNING

When the sensor has reached the final running state where it can output data

STANDBY

The sensor has been configured into a low-power state where sensor is on but not spinning

ERROR

Check error codes in the errors field for more information

UNCONFIGURED

An error with factory calibration that requires a manual power cycle or reboot

Note

If the sensor is set to STANDBY mode some of these commands will not return the expected values.

If the sensor is in an ERROR or UNCONFIGURED state, please contact Ouster support with the diagnostic file found at http://os-9919xxxxxxxx/diag for support.

Sensor Configuration Parameter Interface

get_config_param

Description: Returns all active or staged JSON-formatted sensor configuration.

Sensor configurations and operating modes can also be queried over TCP. Below is the command format:

  • get_config_param active <parameter> will return the current active configuration parameter values.

  • get_config_param staged <parameter> will return the parameter values that will take place after issuing a reinitialize command.

Warning

The command get_config_txt is deprecated and superseded by get_config_param active, which provides the same response. get_config_txt will be removed in a future firmware.

Example 1: Shows how a user can get information of a particular parameter below using the unix netcat utility:

$ nc os-991900123456 7501
get_config_param active lidar_mode
1024x10

Example 2: Shows how a user can get all the <active> parameters information below using the unix netcat utility:

$ nc os-991900123456 7501
  get_config_param active
  {
    "udp_dest": "169.254.111.53",
    "udp_port_lidar": 7502,
    "udp_port_imu": 7503,
    "udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL",
    "udp_profile_imu": "LEGACY",
    "columns_per_packet": 16,
    "timestamp_mode": "TIME_FROM_INTERNAL_OSC",
    "sync_pulse_in_polarity": "ACTIVE_HIGH",
    "nmea_in_polarity": "ACTIVE_HIGH",
    "nmea_ignore_valid_char": 0,
    "nmea_baud_rate": "BAUD_9600",
    "nmea_leap_seconds": 0,
    "multipurpose_io_mode": "OFF",
    "sync_pulse_out_polarity": "ACTIVE_HIGH",
    "sync_pulse_out_frequency": 1,
    "sync_pulse_out_angle": 360,
    "sync_pulse_out_pulse_width": 10,
    "operating_mode": "NORMAL",
    "lidar_mode": "1024x10",
    "azimuth_window": [0, 360000],
    "signal_multiplier": 1,
    "phase_lock_enable": false,
    "phase_lock_offset": 0
  }

set_config_param

set_config_param <parameter> <value> will set new values for configuration parameters, which will take effect after issuing the reinitialize command.

reinitialize will reinitialize the sensor so the staged values of the parameters will take effect immediately.

save_config_params will write new values of active parameters into a configuration file, so they will persist after sensor reset. In order to permanently change a parameter in the configuration file, first use set_config_param to update the parameter in a staging area, then use reinitialize to make that parameter active. Only after the parameter is made active will save_config_params capture it to persist after reset.

Warning

The command write_config_txt will be deprecated in a future firmware. The command save_config_params provides the same response.

While in STANDBY mode, we can set the config parameters, but it will not take effect until we switch the sensor back to NORMAL mode.

set_udp_dest_auto will automatically determine the sender’s IP address at the time the command was sent, and set it as the destination of UDP traffic. This takes effect after issuing a reinitialize command. Using this command has the same effect as using set_config_param udp_dest <ip address>.

An example session using the unix netcat utility is shown below.

Note

In the example below, to distinguish between the command and expected response, a dash has been added before the expected response. The actual response will be without the dash.

$ nc os-991900123456.local 7501
set_config_param lidar_mode 512x20
-set_config_param
set_udp_dest_auto
-set_udp_dest_auto
reinitialize
-reinitialize
save_config_params
-save_config_params

Note

In the example below, see the error message when an invalid value is set i.e., lidar_mode = 511x10.

$ nc os-122201000998.local 7501
set_config_param lidar_mode 511x10
error: '511x10' is not supported

The following commands will set sensor configuration parameters:

Note

Each of the following commands have two responses: * set_config_param on Success * error: Otherwise

Reinitialize, Save Sensor Config, and Auto Setting of Destination IP

Command

Command Description

reinitialize or reinit

Restarts the sensor. Changes to lidar, multipurpose_io, and timestamp modes will only take effect after reinitialization. Response on success: reinitialize or reinit

save_config_params

Makes all current parameter settings persist after reboot. Response on success: save_config_params

set_udp_dest_auto

Set the destination of UDP traffic to the destination address that issued the command.

Response on success: set_udp_dest_auto

Note

Refer to Sensor Configuration for detailed information on all configurable parameters using TCP commands.

Sensor Status and Calibration

get_sensor_info

Description: Returns JSON-formatted sensor metadata: serial number, hardware and software revision, and sensor status.

{
   "prod_line": "OS-1-128",
   "prod_pn": "840-103575-06",
   "prod_sn": "122201000998",
   "image_rev": "ousteros-image-prod-aries-v2.4.0-omega.2+20220730010801.staging",
   "build_rev": "v2.4.0-omega.2",
   "build_date": "2022-07-29T23:56:15Z",
   "status": "RUNNING",
   "initialization_id": 9599937
}

get_time_info

Description: Returns JSON-formatted sensor timing configuration and status of udp timestamp, sync_pulse_in, and multipurpose_io.

{
   "timestamp":
     {
       "time": 3709.04727264,
       "mode": "TIME_FROM_INTERNAL_OSC",
      "time_options":
         {
            "ptp_1588": 3718,
            "sync_pulse_in": 1,
            "internal_osc": 3709
         }
     },
   "sync_pulse_in":
     {
       "locked": 0,
       "polarity": "ACTIVE_HIGH",
       "diagnostics":
         {
            "last_period_nsec": 0,
            "count": 1,
            "count_unfiltered": 0
         }
     },
   "multipurpose_io":
     {
       "mode": "OFF",
       "sync_pulse_out":
        {
          "polarity": "ACTIVE_HIGH",
          "frequency_hz": 1,
          "angle_deg": 360,
          "pulse_width_ms": 10
        },
      "nmea":
        {
          "locked": 0,
          "polarity": "ACTIVE_HIGH",
          "ignore_valid_char": 0,
          "baud_rate": "BAUD_9600",
          "leap_seconds": 0,
          "diagnostics":
           {
             "decoding":
               {
                 "utc_decoded_count": 0,
                 "date_decoded_count": 0,
                 "not_valid_count": 0,
                 "last_read_message": ""
               },
             "io_checks":
               {
                 "start_char_count": 0,
                 "char_count": 0,
                 "bit_count": 1,
                 "bit_count_unfiltered": 0
               }
           }
        }
     }
}

get_beam_intrinsics

Description: Returns JSON-formatted beam altitude and azimuth offsets, in degrees. Length of arrays is equal to the number of channels in the sensor. Also returns distance between lidar origin and beam origin in mm, to be used for point cloud calculations.

{
  "beam_altitude_angles": [21.01, 20.72, 20.42,
    20.1, 19.79, 19.48, 19.17,
    18.84, 18.55, 18.22, 17.9, 17.6,
    17.27, 16.96, 16.65, 16.32, 15.97,
    15.65, 15.34, 15.01, 14.67, 14.35,
    14.01, 13.68, 13.33, 13.02, 12.67,
    12.34, 11.99, 11.65, 11.33, 10.98,
    10.64, 10.28, 9.949999999999999,
    9.609999999999999, 9.27, 8.92, 8.57,
    8.23, 7.88, 7.54, 7.18, 6.84, 6.47,
    6.13, 5.78, 5.45, 5.09, 4.73,
    4.41, 4.05, 3.69, 3.32, 2.98,
    2.63, 2.27, 1.93, 1.57, 1.22,
    0.85, 0.5, 0.15, -0.19, -0.55, -0.92,
   -1.25, -1.63, -1.98, -2.31, -2.67,
   -3.04, -3.4, -3.74, -4.09, -4.45, -4.8,
   -5.15, -5.5, -5.87, -6.21, -6.57, -6.91,
   -7.25, -7.62, -7.95, -8.300000000000001,
   -8.65, -9.01, -9.35, -9.69, -10.05,
   -10.39, -10.74, -11.09, -11.42, -11.77,
   -12.11, -12.45, -12.8, -13.14, -13.47,
   -13.81, -14.15, -14.48, -14.82, -15.13,
   -15.47, -15.81, -16.15, -16.48, -16.8,
   -17.15, -17.48, -17.79, -18.12, -18.47,
   -18.77, -19.09, -19.42, -19.73, -20.06,
   -20.36, -20.69, -21, -21.32, -21.62, -21.94],
  "beam_azimuth_angles": [4.23, 1.41, -1.4,
   -4.21, 4.22, 1.42, -1.41, -4.22, 4.23,
    1.41, -1.42, -4.21, 4.23, 1.42, -1.4,
   -4.2, 4.23, 1.41, -1.39, -4.21, 4.25,
    1.43, -1.41,-4.22, 4.24, 1.44, -1.41,
   -4.22, 4.23, 1.42, -1.38, -4.22, 4.24,
    1.42, -1.4, -4.23, 4.26, 1.44, -1.41,
   -4.23, 4.24, 1.44, -1.41, -4.23, 4.24,
    1.42, -1.41, -4.24, 4.25, 1.42, -1.39,
   -4.22, 4.25, 1.41, -1.4, -4.23, 4.24,
    1.43, -1.41, -4.23, 4.24, 1.42, -1.41,
   -4.23, 4.25, 1.42, -1.4, -4.24, 4.24,
    1.44, -1.4, -4.24, 4.24, 1.43, -1.4, -4.24,
    4.25, 1.43, -1.41, -4.24, 4.25, 1.42, -1.42,
   -4.22, 4.24, 1.43, -1.4, -4.24, 4.25, 1.44,
   -1.41, -4.24, 4.25, 1.42, -1.41, -4.24,
    4.25, 1.42, -1.41, -4.25, 4.26, 1.43, -1.41,
   -4.26, 4.27, 1.43, -1.4, -4.24, 4.25, 1.43,
   -1.4, -4.24, 4.26, 1.42, -1.4, -4.25, 4.26,
    1.43, -1.41, -4.26, 4.26, 1.42, -1.42,
    -4.26, 4.25, 1.42, -1.42, -4.27],
  "lidar_origin_to_beam_origin_mm": 15.806
}

get_imu_intrinsics

Description: Returns JSON-formatted IMU transformation matrix needed to transform to the Sensor Coordinate Frame.

{
  "imu_to_sensor_transform":
    [
     1, 0, 0, 6.253, 0, 1, 0, -11.775,
     0, 0, 1, 7.645, 0, 0, 0, 1
    ]
}

get_lidar_intrinsics

Description: Returns JSON-formatted lidar transformation matrix needed to transform to the Sensor Coordinate Frame.

{
  "lidar_to_sensor_transform":
  [
    -1, 0, 0, 0, 0, -1, 0, 0, 0, 0,
     1, 36.18, 0, 0, 0, 1
  ]
}

get_alerts

Example 1: get_alerts <START_CURSOR><MODE>

Description: Returns JSON-formatted sensor diagnostic information.

Two lists will be returned, an active list and a log list. The active list will contain alert-trigger events for alerts that are currently active. An alert-trigger event will by-definition always have its active attribute set to true. There is no limit on the number of alert-trigger events that are displayed in the active event list. All currently active alert-trigger events will be displayed in the active event list.

The log list will contain all current and past alert-trigger and alert-clear events. An alert-clear event will by-definition have the exact same attributes and attribute values as its corresponding trigger event, with the exception of the realtime and cursor attributes which should have higher values, since an alert-clear event will always be received after an alert-trigger event. The log list has a length limit of 32 events with the oldest events automatically removed from the log list once a new event needs to be added to the log list and the log list length limit is reached, essentially acting as a FIFO (First In First Out) queue.

In addition to the active and log lists, get_alerts also returns a next_cursor field. Every alert event has a cursor attribute, which increments for every alert event logged. This can be used to track the alert activity that has been viewed and reduce message bandwidth. To do this, users are recommended to save the next_cursor field when calling get_alerts and then use that value as the START_CURSOR argument on the next get_alerts call to fetch only new log entries.

A valid value for MODE is either summary or default.

Note

Valid uses of get_alerts:

  • Example: Calling get_alerts with START_CURSOR=1

    get_alerts 1

  • Example: Calling get_alerts with START_CURSOR=2 and MODE=summary

    get_alerts 2 summary

Invalid uses of get_alerts:

  • Example: Calling get_alerts with START_CURSOR=summary and MODE=2

    get_alerts summary 2

Note

The position of START_CURSOR and MODE is important to follow when using TCP Commands and is irrelevant when calling the equivalent /api/v1/sensor/alerts HTTP endpoint, meaning for an HTTP GET call the position is insensitive.

The example in the code block is for get_alerts.

{
   "log":
  [
    {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 0,
        "id": "0x01000018",
        "level": "WARNING",
        "msg": "Client machine announced
            it is not reachable on the
            provided not reachable on
            IMU data port; check that
            udp_dest and udp_port_imu
            configured on the sensor matches
            client IP and port.",
        "msg_verbose": "Failed to send
            imu UDP data to destination
            host 169.254.175.254:7503",
        "realtime": "39850161524"
    },
    {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 1,
        "id": "0x01000015",
        "level": "WARNING",
        "msg": "Client machine announced
            it is not reachable on the
            provided lidar data port;
            check that udp_dest and
            udp_port_lidar configured on
            the sensor matches client IP
            and port.",
        "msg_verbose": "Failed to send
            lidar UDP data to destination
            host 169.254.175.254:7502",
        "realtime": "40842065146"
    },
    {
        "active": true,
        "category": "ETHERNET_LINK_BAD",
        "cursor": 2,
        "id": "0x01000011",
        "level": "WARNING",
        "msg": "Ethernet link bad, please
            check network switch and
            harnessing can support
            1 Gbps Ethernet.",
        "msg_verbose": "Link transitioned
            to 0/Unknown",
        "realtime": "414257307390"
    },
    {
        "active": true,
        "category": "ETHERNET_LINK_BAD",
        "cursor": 2,
        "id": "0x01000011",
        "level": "WARNING",
        "msg": "Ethernet link bad, please
            check network switch and
            harnessing can support
            1 Gbps Ethernet.",
        "msg_verbose": "Link transitioned
            to 0/Unknown",
        "realtime": "414257307390"
    },
    {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 3,
        "id": "0x01000016",
        "level": "WARNING",
        "msg": "Could not send lidar data
            UDP packet to host; check that
            network is up.",
        "msg_verbose": "Failed to send
            lidar UDP data to destination
            host 169.254.175.254:7502",
        "realtime": "414261086316"
    },
    {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 4,
        "id": "0x01000019",
        "level": "WARNING",
        "msg": "Could not send IMU UDP
            packet to host; check
            that network is up.",
        "msg_verbose": "Failed to send imu
            UDP data to destination
            host 169.254.175.254:7503",
        "realtime": "414266339945"
    },
    {
        "active": false,
        "category": "ETHERNET_LINK_BAD",
        "cursor": 5,
        "id": "0x01000011",
        "level": "WARNING",
        "msg": "Ethernet link bad,
            please check network switch
            and harnessing can support
            1 Gbps Ethernet.",
        "msg_verbose": "Link transitioned
            to 1000/Full",
        "realtime": "416337486469"
    }
  ],
  "next_cursor": 6,
  "active":
    [
      {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 1,
        "id": "0x01000015",
        "level": "WARNING",
        "msg": "Client machine announced
            it is not reachable on the
            provided lidar data port;
            check that udp_dest and
            udp_port_lidar configured
            on the sensor matches
            client IP and port.",
        "msg_verbose": "Failed to send
            lidar UDP data to destination
            host 169.254.175.254:7502",
        "realtime": "40842065146"
      },
      {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 3,
        "id": "0x01000016",
        "level": "WARNING",
        "msg": "Could not send lidar data
            UDP packet to host;
            check that network is up.",
        "msg_verbose": "Failed to send
            lidar UDP data to destination
            host 169.254.175.254:7502",
        "realtime": "414261086316"
      },
      {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 0,
        "id": "0x01000018",
        "level": "WARNING",
        "msg": "Client machine announced
            it is not reachable on the provided
            not reachable on IMU data port;
            check that udp_dest and
            udp_port_imu configured on the
            sensor matches client IP
            and port.",
        "msg_verbose": "Failed to send imu
            UDP data to destination host
            169.254.175.254:7503",
        "realtime": "39850161524"
      },
      {
        "active": true,
        "category": "UDP_TRANSMISSION",
        "cursor": 4,
        "id": "0x01000019",
        "level": "WARNING",
        "msg": "Could not send IMU UDP
            packet to host; check that
            network is up.",
        "msg_verbose": "Failed to send
            imu UDP data to destination
            host 169.254.175.254:7503",
        "realtime": "414266339945"
      }
    ]
}

Example 2: get_alerts <START_CURSOR><MODE>

Description: Returns JSON-formatted sensor diagnostic information. A valid value for MODE is either summary or default. Setting the MODE argument to SUMMARY provides a less verbose version of the get_alerts <START_CURSOR> command as referenced above.

Note

Valid uses of get_alerts:

  • Example: Calling get_alerts with START_CURSOR=1

    get_alerts 1

  • Example: Calling get_alerts with START_CURSOR=2 and MODE=summary

    get_alerts 2 summary

Invalid uses of get_alerts:

  • Example: Calling get_alerts with START_CURSOR=summary and MODE=2

    get_alerts summary 2

Note

The order in which the START_CURSOR and MODE arguments are specified for the get_alerts TCP command must be followed when providing both arguments, with START_CURSOR preceding the MODE. The arguments can be specified in any order when calling the equivalent /api/v1/sensor/alerts HTTP endpoint.

The example shown in the code block is for get_alerts summary.

{
   "log":
  [
    {
        "cursor": 0,
        "id": "0x01000018",
        "realtime": "80395661548",
        "active": true
    },
    {
        "cursor": 1,
        "id": "0x01000015",
        "realtime": "81386289401",
        "active": true
    },
    {
        "cursor": 2,
        "id": "0x01000014",
        "realtime": "2730854039127",
        "active": true
    },
    {
        "cursor": 3,
        "id": "0x01000014",
        "realtime": "2740849252064",
        "active": false
    },
    {
        "cursor": 4,
        "id": "0x01000011",
        "realtime": "8835209059341",
        "active": true
    },
    {
        "cursor": 5,
        "id": "0x01000016",
        "realtime": "8835240707086",
        "active": true
    },
    {
        "cursor": 6,
        "id": "0x01000019",
        "realtime": "8835245794318",
        "active": true
    },
    {
        "cursor": 7,
        "id": "0x01000011",
        "realtime": "8837298086954",
        "active": false
    },
    {
        "cursor": 8,
        "id": "0x01000015",
        "realtime": "10742075130316",
        "active": false
    },
    {
        "cursor": 9,
        "id": "0x01000016",
        "realtime": "10742075535820",
        "active": false
    },
    {
        "cursor": 10,
        "id": "0x01000018",
        "realtime": "10742075793868",
        "active": false
    },
    {
        "cursor": 11,
        "id": "0x01000019",
        "realtime": "10742076051916",
        "active": false
    },
    {
        "cursor": 12,
        "id": "0x01000015",
        "realtime": "10799083353303",
        "active": true
    },
    {
        "cursor": 13,
        "id": "0x01000018",
        "realtime": "10799092477143",
        "active": true
    },
    {
        "cursor": 14,
        "id": "0x01000016",
        "realtime": "11782640857349",
        "active": true
    }
  ],
        "next_cursor": 15,
        "active":
  [
    {
        "cursor": 12,
        "id": "0x01000015",
        "realtime": "10799083353303"
    },
    {
        "cursor": 14,
        "id": "0x01000016",
        "realtime": "11782640857349"
    },
    {
        "cursor": 13,
        "id": "0x01000018",
        "realtime": "10799092477143"
    }
  ]
}

get_lidar_data_format

Description: Returns JSON-formatted response that describes the structure of a lidar packet.

  • columns_per_frame: Number of measurement columns per frame. This can be 512, 1024, or 2048, depending upon the set lidar mode.

  • columns_per_packet: Number of measurement blocks contained in a single lidar packet. Currently in v2.2.0 and earlier, this is 16. Note: This is not user configurable.

  • pixel_shift_by_row: Offset in terms of pixel count. Can be used to destagger image. Varies by lidar mode. Length of this array is equal to the number of channels of the sensor. Note: The new value is centered around zero with both positive and negative values such that the destaggered image corresponds to the sensor’s azimuth angles. The old destagger values introduced an offset to shift the pixel_shift_by_row values so they are all non-negative.

  • pixels_per_column: Number of channels of the sensor.

  • column_window: Index of measurement blocks that are active. Default is [0, lidar_mode-1], e.g. [0,1023]. If there is an azimuth window set, this parameter will reflect which measurement blocks of data are within the region of interest.

  • udp_profile_lidar - Lidar data profile format [Default LEGACY].

  • udp_profile_lidar - Lidar data profile format [Default LEGACY].

  • udp_profile_imu - IMU data profile format [Default LEGACY].

Note

This command only works when the sensor is in RUNNING status.

 {
   "column_window": [0, 1023],
   "columns_per_frame": 1024,
   "columns_per_packet": 16,
   "pixel_shift_by_row": [
     12, 4, -4, -12, 12, 4, -4,
    -12, 12, 4, -4, -12, 12, 4,
    -4, -12, 12, 4, -4, -12, 12,
     4, -4, -12, 12, 4, -4, -12,
     12, 4, -4, -12, 12, 4, -4,
    -12, 12, 4, -4, -12, 12, 4,
    -4, -12, 12, 4, -4, -12, 12,
     4, -4, -12, 12, 4, -4, -12,
     12, 4, -4, -12, 12, 4, -4,
    -12, 12, 4, -4, -12, 12, 4,
    -4, -12, 12, 4, -4, -12, 12,
     4, -4, -12, 12, 4, -4, -12,
     12, 4, -4, -12, 12, 4, -4,
    -12, 12, 4, -4, -12, 12, 4,
    -4, -12, 12, 4, -4, -12, 12,
     4, -4, -12, 12, 4, -4, -12,
     12, 4, -4, -12, 12, 4, -4,
    -12, 12, 4, -4, -12, 12, 4,
    -4, -12],
   "pixels_per_column": 128,
   "udp_profile_imu": "LEGACY",
   "udp_profile_lidar": "LEGACY"
}

get_calibration_status

Description: Returns JSON-formatted calibration status of the sensor reflectivity. valid: true/false depending on calibration status. timestamp: if valid is true; time at which the calibration was completed.

{
  "reflectivity":
   {
     "valid": true,
     "timestamp": "2021-10-05T00:02:36"
   }
}

get_telemetry

Description: Returns JSON-formatted response that provides sensor system state information. This includes the FPGA Timestamp in ns (Nanoseconds) at which the information was collected from the FPGA, Lidar Input Voltage in mv (Millivolt), Lidar Input Current in ma (Milliamp), Internal Temperature of the sensor in ºC (Degree Celsius) and Phase Lock status namely LOCKED, LOST, DISABLED.

Note

Using get_telemetry, Internal temperature can only be measured with Rev 06 and above sensors.

Note

Phase lock output will not indicate loss of lock if the PTP source is lost.

{
  "input_current_ma": 758,
  "input_voltage_mv": 23606,
  "internal_temperature_deg_c": 45,
  "phase_lock_status": "DISABLED",
  "timestamp_ns": 2962666299310
}