client.h

Client Initialization

std::shared_ptr<client> init_client(const std::string &hostname, int lidar_port, int imu_port)

Listen for sensor data on the specified ports; do not configure the sensor.

Parameters
  • hostname[in] The hostname to connect to.

  • lidar_port[in] port on which the sensor will send lidar data.

  • imu_port[in] port on which the sensor will send imu data.

Returns

pointer owning the resources associated with the connection.

std::shared_ptr<client> init_client(const std::string &hostname, const std::string &udp_dest_host, lidar_mode ld_mode = MODE_UNSPEC, timestamp_mode ts_mode = TIME_FROM_UNSPEC, int lidar_port = 0, int imu_port = 0, int timeout_sec = 60)

Connect to and configure the sensor and start listening for data.

Parameters
  • hostname[in] hostname or ip of the sensor.

  • udp_dest_host[in] hostname or ip where the sensor should send data or “” for automatic detection of destination.

  • ld_mode[in] The lidar mode to use.

  • ts_mode[in] The timestamp mode to use.

  • lidar_port[in] port on which the sensor will send lidar data. When using zero the method will automatically acquire and assign any free port.

  • imu_port[in] port on which the sensor will send imu data. When using zero the method will automatically acquire and assign any free port.

  • timeout_sec[in] how long to wait for the sensor to initialize.

Returns

pointer owning the resources associated with the connection.

Data Fetching

client_state ouster::sensor::poll_client(const client &cli, int timeout_sec = 1)

Block for up to timeout_sec until either data is ready or an error occurs.

NOTE: will return immediately if LIDAR_DATA or IMU_DATA are set and not cleared by read_lidar_data() and read_imu_data() before the next call.

Parameters
  • cli[in] client returned by init_client associated with the connection.

  • timeout_sec[in] seconds to block while waiting for data.

Returns

client_state s where (s & ERROR) is true if an error occured, (s & LIDAR_DATA) is true if lidar data is ready to read, and (s & IMU_DATA) is true if imu data is ready to read.

bool ouster::sensor::read_lidar_packet(const client &cli, uint8_t *buf, const packet_format &pf)

Read lidar data from the sensor. Will not block.

Parameters
  • cli[in] client returned by init_client associated with the connection.

  • buf[out] buffer to which to write lidar data. Must be at least lidar_packet_bytes + 1 bytes.

  • pf[in] The packet format.

Returns

true if a lidar packet was successfully read.

bool ouster::sensor::read_imu_packet(const client &cli, uint8_t *buf, const packet_format &pf)

Read imu data from the sensor. Will not block.

Parameters
  • cli[in] client returned by init_client associated with the connection.

  • buf[out] buffer to which to write imu data. Must be at least imu_packet_bytes + 1 bytes.

  • pf[in] The packet format.

Returns

true if an imu packet was successfully read.

Config And Metadata

std::string ouster::sensor::get_metadata(client &cli, int timeout_sec = 60, bool legacy_format = true)

Get metadata text blob from the sensor.

Will attempt to fetch from the network if not already populated.

Parameters
  • cli[in] client returned by init_client associated with the connection.

  • timeout_sec[in] how long to wait for the sensor to initialize.

  • legacy_format[in] whether to use legacy format of metadata output.

Returns

a text blob of metadata parseable into a sensor_info struct.

bool ouster::sensor::get_config(const std::string &hostname, sensor_config &config, bool active = true)

Get sensor config from the sensor.

Populates passed in config with the results of get_config.

Parameters
  • hostname[in] sensor hostname.

  • config[out] sensor config to populate.

  • active[in] whether to pull active or passive configs.

Returns

true if sensor config successfully populated.

bool ouster::sensor::set_config(const std::string &hostname, const sensor_config &config, uint8_t config_flags = 0)

Set sensor config on sensor.

Throws
  • runtime_error – on failure to communcate with the sensor.

  • invalid_argument – when config parameters fail validation.

Parameters
  • hostname[in] sensor hostname.

  • config[in] sensor config.

  • config_flags[in] flags to pass in.

Returns

true if config params successfuly set on sensor.

enum ouster::sensor::config_flags

Flags for set_config()

Values:

enumerator CONFIG_UDP_DEST_AUTO

Set udp_dest automatically.

enumerator CONFIG_PERSIST

Make configuration persistent.

enumerator CONFIG_FORCE_REINIT

Forces the sensor to re-init during set_config even when config params have not changed

Network Operations

int ouster::sensor::get_lidar_port(client &cli)

Return the port used to listen for lidar UDP data.

Parameters

cli[in] client returned by init_client associated with the connection.

Returns

the port number.

int ouster::sensor::get_imu_port(client &cli)

Return the port used to listen for imu UDP data.

Parameters

cli[in] client returned by init_client associated with the connection.

Returns

the port number.

enum ouster::sensor::client_state

Returned by poll_client.

Values:

enumerator TIMEOUT

Client has timed out.

enumerator CLIENT_ERROR

Client has reported an error.

enumerator LIDAR_DATA

New lidar data available.

enumerator IMU_DATA

New IMU data available.

enumerator EXIT

Client has exited.