HTTP API Reference Guide
This reference guide documents the interface for HTTP API and is accessible via /api/v1
on the sensor hosted HTTP server.
The sensor can be queried and configured using an HTTP GET requests. This can be done using several different tools such as HTTPie, cURL, Advanced REST Client, etc.
Here is an example using curl command:
$ curl --request GET --url http://169.254.26.118/api/v1/sensor/metadata/lidar_intrinsics
{
"lidar_to_sensor_transform": [-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1]
}
Sensor Metadata
GET /api/v1/sensor/metadata/sensor_info
-
GET
169.254.26.118/api/v1/sensor/cmd/get_sensor_info
Get the sensor information
http
GET /api/v1/sensor/metadata/sensor_info HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 285
Content-Type: application/json
{
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390072,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/sensor_info --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 285
Content-Type: application/json
{
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390072,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 285
Content-Type: application/json
{
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390072,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}' | http http://169.254.26.118/api/v1/sensor/metadata/sensor_info
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/sensor_info', data='HTTP/1.1 200 OK\r\n\n Connection: keep-alive\r\n\n Content-Length: 285\r\n\n Content-Type: application/json\r\n\n\r\n\n {\r\n\n "build_date": "2023-1-15T15:56:07Z",\r\n\n "build_rev": "v3.0.0",\r\n\n "image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",\r\n\n "initialization_id": 390072,\r\n\n "prod_line": "OS-1-128",\r\n\n "prod_pn": "860-105010-07",\r\n\n "prod_sn": "992244000006",\r\n\n "status": "RUNNING"\r\n\n }')
statuscode: 200 No error
Description: Returns JSON-formatted response that includes serial number, product number, FW image revision and sensor status along with other parameters as shown is provided.
GET /api/v1/sensor/metadata/lidar_data_format
-
GET
169.254.26.118/api/v1/sensor/metadata/lidar_data_format
Get the sensor lidar data format
http
GET /api/v1/sensor/metadata/lidar_data_format HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 724
Content-Type: application/json
Date: Thu, 28 Apr 2022 19:00:38 GMT
Server: nginx
{
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/lidar_data_format --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 724
Content-Type: application/json
Date: Thu, 28 Apr 2022 19:00:38 GMT
Server: nginx
{
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 724
Content-Type: application/json
Date: Thu, 28 Apr 2022 19:00:38 GMT
Server: nginx
{
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
}' | http http://169.254.26.118/api/v1/sensor/metadata/lidar_data_format
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/lidar_data_format', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 724\r\n\nContent-Type: application/json\r\n\nDate: Thu, 28 Apr 2022 19:00:38 GMT\r\n\nServer: nginx\r\n\n\r\n\n{\r\n\n "column_window": [0, 1023],\r\n\n "columns_per_frame": 1024,\r\n\n "columns_per_packet": 16,\r\n\n "pixel_shift_by_row": [\r\n\n 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4,\r\n\n -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12,\r\n\n 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4,\r\n\n -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12,\r\n\n 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4,\r\n\n -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12,\r\n\n 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4,\r\n\n 4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12,\r\n\n 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4,\r\n\n -4, -12],\r\n\n "pixels_per_column": 128,\r\n\n "udp_profile_imu": "LEGACY",\r\n\n "udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"\r\n\n}')
statuscode: 200 No error
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.
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 single return profile (RNG19_RFL8_SIG16_NIR16
).
udp_profile_imu
: IMU data profile format. Default LEGACY.NOTE: This command only works when the sensor is in RUNNING status.
GET /api/v1/sensor/metadata/beam_intrinsics
-
GET
169.254.26.118/api/v1/sensor/metadata/beam_intrinsics
Get the sensor beam intrinsics
http
GET /api/v1/sensor/metadata/beam_intrinsics HTTP/1.1
Host: 169.254.26.118
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/beam_intrinsics
httpie
http http://169.254.26.118/api/v1/sensor/metadata/beam_intrinsics
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/beam_intrinsics')
response
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1895
Content-Type: application/json
{
"beam_altitude_angles": [
20.38, 20.12, 19.79, 19.45, 19.14, 18.85, 18.55, 18.2, 17.86, 17.58, 17.27, 16.93,
16.58, 16.29, 15.98, 15.61, 15.27, 14.97, 14.66, 14.3, 13.96, 13.65, 13.33, 12.97,
12.62, 12.31, 11.98, 11.63, 11.27, 10.96, 10.63, 10.26, 9.91, 9.59, 9.26, 8.89,
8.54, 8.21, 7.87, 7.52, 7.15, 6.82, 6.47, 6.11, 5.76, 5.42, 5.08, 4.73, 4.36, 4.03,
3.66, 3.31, 2.96, 2.62, 2.27, 1.91, 1.55, 1.22, 0.85, 0.51, 0.16, -0.2, -0.55, -0.91,
-1.26, -1.62, -1.96, -2.3, -2.66, -3.02, -3.36, -3.72, -4.07, -4.42, -4.77, -5.11,
-5.46, -5.82, -6.16, -6.49, -6.85, -7.21, -7.55, -7.88, -8.23, -8.59, -8.93, -9.25,
-9.6, -9.96, -10.31, -10.63, -10.96, -11.32, -11.67, -11.97, -12.31, -12.68, -13,
-13.32, -13.64, -14, -14.33, -14.63, -14.96, -15.31, -15.64, -15.94, -16.26,
-16.62, -16.93, -17.22, -17.54, -17.9, -18.22, -18.49, -18.8, -19.16, -19.47,
-19.73, -20.04, -20.39, -20.7, -20.94, -21.25, -21.6, -21.9, -22.14
],
"beam_azimuth_angles": [
4.24, 1.41, -1.42, -4.23, 4.23, 1.41, -1.41, -4.23, 4.23, 1.41, -1.41, -4.21, 4.23,
1.42, -1.4, -4.23, 4.24, 1.41, -1.4, -4.23, 4.24, 1.42, -1.4, -4.22, 4.23, 1.41,
-1.41, -4.22, 4.23, 1.42, -1.4, -4.22, 4.24, 1.41, -1.4, -4.23, 4.23, 1.41, -1.41,
-4.22, 4.23, 1.41, -1.41, -4.23, 4.23, 1.4, -1.42, -4.23, 4.23, 1.41, -1.42, -4.23,
4.23, 1.4, -1.42, -4.24, 4.22, 1.41, -1.43, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22,
1.4, -1.42, -4.23, 4.22, 1.4, -1.4, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.41,
-1.41, -4.22, 4.22, 1.39, -1.42, -4.23, 4.22, 1.41, -1.41, -4.22, 4.23, 1.41,
-1.41, -4.23, 4.23, 1.41, -1.41, -4.22, 4.23, 1.41, -1.41, -4.22, 4.22, 1.41,
-1.41, -4.22, 4.23, 1.41, -1.4, -4.23, 4.22, 1.41, -1.41, -4.23, 4.22, 1.4, -1.41,
-4.23, 4.22, 1.4, -1.41, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.4, -1.42, -4.23
],
"beam_to_lidar_transform": [ 1, 0, 0, 15.805999755859375, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
"lidar_origin_to_beam_origin_mm": 15.8059998
}
status code: 200 No error
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.
GET /api/v1/sensor/metadata/imu_intrinsics
-
GET
169.254.26.118/api/v1/sensor/metadata/imu_intrinsics
Get the sensor imu intrinsics
http
GET /api/v1/sensor/metadata/imu_intrinsics HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
{
"imu_to_sensor_transform": [1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1]
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/imu_intrinsics --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
{
"imu_to_sensor_transform": [1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1]
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 91
Content-Type: application/json
{
"imu_to_sensor_transform": [1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1]
}' | http http://169.254.26.118/api/v1/sensor/metadata/imu_intrinsics
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/imu_intrinsics', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 91\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "imu_to_sensor_transform": [1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1]\r\n\n }')
status code: 200 No error
Description: Returns JSON-formatted IMU transformation matrix needed to transform to the Sensor Coordinate Frame.
GET /api/v1/sensor/metadata/lidar_intrinsics
-
GET
169.254.26.118/api/v1/sensor/metadata/lidar_intrinsics
Get the sensor lidar intrinsics
http
GET /api/v1/sensor/metadata/lidar_intrinsics HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 86
Content-Type: application/json
{
"lidar_to_sensor_transform": [-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1]
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/lidar_intrinsics --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 86
Content-Type: application/json
{
"lidar_to_sensor_transform": [-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1]
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 86
Content-Type: application/json
{
"lidar_to_sensor_transform": [-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1]
}' | http http://169.254.26.118/api/v1/sensor/metadata/lidar_intrinsics
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/lidar_intrinsics', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 86\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "lidar_to_sensor_transform": [-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1]\r\n\n }')
status code: 200 No error
Description: Returns JSON-formatted lidar transformation matrix needed to transform to the Sensor Coordinate Frame.
GET /api/v1/sensor/metadata/calibration_status
-
GET
169.254.26.118/api/v1/sensor/metadata/calibration_status
Get the sensor calibration status
http
GET /api/v1/sensor/metadata/calibration_status HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 69
Content-Type: application/json
{
"reflectivity":
{
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata/calibration_status --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 69
Content-Type: application/json
{
"reflectivity":
{
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 69
Content-Type: application/json
{
"reflectivity":
{
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
}' | http http://169.254.26.118/api/v1/sensor/metadata/calibration_status
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata/calibration_status', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 69\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "reflectivity":\r\n\n {\r\n\n "timestamp": "2022-11-18T20:31:06",\r\n\n "valid": true\r\n\n }\r\n\n }')
status code: 200 No error
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.
GET /api/v1/sensor/config
-
GET
169.254.26.118/api/v1/sensor/config
Get sensor configuration parameter
http
GET /api/v1/sensor/config HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 715
Content-Type: application/json
{
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
}
curl
curl -i http://169.254.26.118/api/v1/sensor/config --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 715
Content-Type: application/json
{
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 715
Content-Type: application/json
{
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
}' | http http://169.254.26.118/api/v1/sensor/config
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/config', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 715\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "azimuth_window": [\r\n\n 0,\r\n\n 360000\r\n\n ],\r\n\n "columns_per_packet": 16,\r\n\n "lidar_mode": "1024x10",\r\n\n "multipurpose_io_mode": "OFF",\r\n\n "nmea_baud_rate": "BAUD_9600",\r\n\n "nmea_ignore_valid_char": 0,\r\n\n "nmea_in_polarity": "ACTIVE_HIGH",\r\n\n "nmea_leap_seconds": 0,\r\n\n "operating_mode": "NORMAL",\r\n\n "phase_lock_enable": false,\r\n\n "phase_lock_offset": 0,\r\n\n "signal_multiplier": 1,\r\n\n "sync_pulse_in_polarity": "ACTIVE_HIGH",\r\n\n "sync_pulse_out_angle": 360,\r\n\n "sync_pulse_out_frequency": 1,\r\n\n "sync_pulse_out_polarity": "ACTIVE_HIGH",\r\n\n "sync_pulse_out_pulse_width": 10,\r\n\n "timestamp_mode": "TIME_FROM_INTERNAL_OSC",\r\n\n "udp_dest": "169.254.225.4",\r\n\n "udp_port_imu": 7503,\r\n\n "udp_port_lidar": 7502,\r\n\n "udp_profile_imu": "LEGACY",\r\n\n "udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"\r\n\n }')
status code: 200 No error
Description: Please refer to Description- Configurable Parameters section for detailed description on sensor configurable parameters.
POST /api/v1/sensor/config
Description
Currently the lidar_mode=1024x10, to change the lidar mode to “512X10”, use the command:
http POST 169.254.26.118/api/v1/sensor/config "parameter"="value"
.Note: To identify all parameters that can be changed using this command please refer to get_config_param.
Example 1: Valid
sensor configuration to change lidar_mode shown below:
-
POST
169.254.26.118/api/v1/sensor/config "lidar_mode"="512x10"
http
POST /api/v1/sensor/config HTTP/1.1
Host: 169.254.26.118
{ "lidar_mode": "512x10" }
curl
curl -i -X POST http://169.254.26.118/api/v1/sensor/config --data-raw '{ "lidar_mode": "512x10" }'
httpie
echo '{ "lidar_mode": "512x10" }' | http POST http://169.254.26.118/api/v1/sensor/config
python-requests
requests.post('http://169.254.26.118/api/v1/sensor/config', data='{ "lidar_mode": "512x10" }')
Run GET /api/v1/sensor/config after POST
command:
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 712
Content-Type: application/json
{
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "512x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
}
status code: 204 server has successfully fulfilled the request.
Example 2: Invalid
sensor configuration to change lidar_mode shown below:
Currently the lidar_mode=1024x10, to change the lidar mode to “512X10”, use the command:
http POST 169.254.198.184/api/v1/sensor/config "parameter"="value"
.Note: An incorrect value for a valid key i.e.., “lidar_mode” is given to show the error message that would be prompted. In this case Lidar_mode is set to 511x10.
-
POST
169.254.26.118/api/v1/sensor/config "lidar_mode"="511x10"
http
POST /api/v1/sensor/config HTTP/1.1
Host: 169.254.26.118
{"lidar_mode": "511x10"}
curl
curl -i -X POST http://nohost/api/v1/sensor/config --data-raw 'Host: 169.254.26.118
{"lidar_mode": "511x10"}'
httpie
echo 'Host: 169.254.26.118
{"lidar_mode": "511x10"}' | http POST http://nohost/api/v1/sensor/config
python-requests
requests.post('http://nohost/api/v1/sensor/config', data='Host: 169.254.26.118\r\n\n\r\n\n{"lidar_mode": "511x10"}')
Run GET /api/v1/sensor/config after POST
command:
HTTP/1.1 400 Bad Request
content-length: 102
content-type: application/json
{
"error": {
"title": "While processing key 'lidar_mode' encountered error: '511x10' is not supported"
}
}
status code: 400 Server cannot or will not process the request due to something that is perceived to be a client error.
GET /api/v1/sensor/metadata
-
GET
169.254.26.118/api/v1/sensor/metadata
Get the sensor metadata information
http
GET /api/v1/sensor/metadata HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 4009
Content-Type: application/json
{
"beam_intrinsics": {
"beam_altitude_angles": [
20.38, 20.12, 19.79, 19.45, 19.14, 18.85, 18.55, 18.2, 17.86, 17.58, 17.27, 16.93,
16.58, 16.29, 15.98, 15.61, 15.27, 14.97, 14.66, 14.3, 13.96, 13.65, 13.33, 12.97,
12.62, 12.31, 11.98, 11.63, 11.27, 10.96, 10.63, 10.26, 9.91, 9.59, 9.26, 8.89,
8.54, 8.21, 7.87, 7.52, 7.15, 6.82, 6.47, 6.11, 5.76, 5.42, 5.08, 4.73, 4.36, 4.03,
3.66, 3.31, 2.96, 2.62, 2.27, 1.91, 1.55, 1.22, 0.85, 0.51, 0.16, -0.2, -0.55, -0.91,
-1.26, -1.62, -1.96, -2.3, -2.66, -3.02, -3.36, -3.72, -4.07, -4.42, -4.77, -5.11,
-5.46, -5.82, -6.16, -6.49, -6.85, -7.21, -7.55, -7.88, -8.23, -8.59, -8.93, -9.25,
-9.6, -9.96, -10.31, -10.63, -10.96, -11.32, -11.67, -11.97, -12.31, -12.68, -13,
-13.32, -13.64, -14, -14.33, -14.63, -14.96, -15.31, -15.64, -15.94, -16.26,
-16.62, -16.93, -17.22, -17.54, -17.9, -18.22, -18.49, -18.8, -19.16, -19.47,
-19.73, -20.04, -20.39, -20.7, -20.94, -21.25, -21.6, -21.9, -22.14
],
"beam_azimuth_angles": [
4.24, 1.41, -1.42, -4.23, 4.23, 1.41, -1.41, -4.23, 4.23, 1.41, -1.41, -4.21, 4.23,
1.42, -1.4, -4.23, 4.24, 1.41, -1.4, -4.23, 4.24, 1.42, -1.4, -4.22, 4.23, 1.41,
-1.41, -4.22, 4.23, 1.42, -1.4, -4.22, 4.24, 1.41, -1.4, -4.23, 4.23, 1.41, -1.41,
-4.22, 4.23, 1.41, -1.41, -4.23, 4.23, 1.4, -1.42, -4.23, 4.23, 1.41, -1.42, -4.23,
4.23, 1.4, -1.42, -4.24, 4.22, 1.41, -1.43, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22,
1.4, -1.42, -4.23, 4.22, 1.4, -1.4, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.41,
-1.41, -4.22, 4.22, 1.39, -1.42, -4.23, 4.22, 1.41, -1.41, -4.22, 4.23, 1.41,
-1.41, -4.23, 4.23, 1.41, -1.41, -4.22, 4.23, 1.41, -1.41, -4.22, 4.22, 1.41,
-1.41, -4.22, 4.23, 1.41, -1.4, -4.23, 4.22, 1.41, -1.41, -4.23, 4.22, 1.4, -1.41,
-4.23, 4.22, 1.4, -1.41, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.4, -1.42, -4.23
],
"beam_to_lidar_transform": [ 1, 0, 0, 15.805999755859375, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
"lidar_origin_to_beam_origin_mm": 15.8059998
}
"calibration_status": {
"reflectivity": {
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
},
"config_params": {
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"imu_intrinsics": {
"imu_to_sensor_transform": [
1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1
]
},
"lidar_data_format": {
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"lidar_intrinsics": {
"lidar_to_sensor_transform": [
-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1
]
},
"sensor_info": {
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390079,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}
}
curl
curl -i http://169.254.26.118/api/v1/sensor/metadata --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 4009
Content-Type: application/json
{
"beam_intrinsics": {
"beam_altitude_angles": [
20.38, 20.12, 19.79, 19.45, 19.14, 18.85, 18.55, 18.2, 17.86, 17.58, 17.27, 16.93,
16.58, 16.29, 15.98, 15.61, 15.27, 14.97, 14.66, 14.3, 13.96, 13.65, 13.33, 12.97,
12.62, 12.31, 11.98, 11.63, 11.27, 10.96, 10.63, 10.26, 9.91, 9.59, 9.26, 8.89,
8.54, 8.21, 7.87, 7.52, 7.15, 6.82, 6.47, 6.11, 5.76, 5.42, 5.08, 4.73, 4.36, 4.03,
3.66, 3.31, 2.96, 2.62, 2.27, 1.91, 1.55, 1.22, 0.85, 0.51, 0.16, -0.2, -0.55, -0.91,
-1.26, -1.62, -1.96, -2.3, -2.66, -3.02, -3.36, -3.72, -4.07, -4.42, -4.77, -5.11,
-5.46, -5.82, -6.16, -6.49, -6.85, -7.21, -7.55, -7.88, -8.23, -8.59, -8.93, -9.25,
-9.6, -9.96, -10.31, -10.63, -10.96, -11.32, -11.67, -11.97, -12.31, -12.68, -13,
-13.32, -13.64, -14, -14.33, -14.63, -14.96, -15.31, -15.64, -15.94, -16.26,
-16.62, -16.93, -17.22, -17.54, -17.9, -18.22, -18.49, -18.8, -19.16, -19.47,
-19.73, -20.04, -20.39, -20.7, -20.94, -21.25, -21.6, -21.9, -22.14
],
"beam_azimuth_angles": [
4.24, 1.41, -1.42, -4.23, 4.23, 1.41, -1.41, -4.23, 4.23, 1.41, -1.41, -4.21, 4.23,
1.42, -1.4, -4.23, 4.24, 1.41, -1.4, -4.23, 4.24, 1.42, -1.4, -4.22, 4.23, 1.41,
-1.41, -4.22, 4.23, 1.42, -1.4, -4.22, 4.24, 1.41, -1.4, -4.23, 4.23, 1.41, -1.41,
-4.22, 4.23, 1.41, -1.41, -4.23, 4.23, 1.4, -1.42, -4.23, 4.23, 1.41, -1.42, -4.23,
4.23, 1.4, -1.42, -4.24, 4.22, 1.41, -1.43, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22,
1.4, -1.42, -4.23, 4.22, 1.4, -1.4, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.41,
-1.41, -4.22, 4.22, 1.39, -1.42, -4.23, 4.22, 1.41, -1.41, -4.22, 4.23, 1.41,
-1.41, -4.23, 4.23, 1.41, -1.41, -4.22, 4.23, 1.41, -1.41, -4.22, 4.22, 1.41,
-1.41, -4.22, 4.23, 1.41, -1.4, -4.23, 4.22, 1.41, -1.41, -4.23, 4.22, 1.4, -1.41,
-4.23, 4.22, 1.4, -1.41, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.4, -1.42, -4.23
],
"beam_to_lidar_transform": [ 1, 0, 0, 15.805999755859375, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
"lidar_origin_to_beam_origin_mm": 15.8059998
}
"calibration_status": {
"reflectivity": {
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
},
"config_params": {
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"imu_intrinsics": {
"imu_to_sensor_transform": [
1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1
]
},
"lidar_data_format": {
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"lidar_intrinsics": {
"lidar_to_sensor_transform": [
-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1
]
},
"sensor_info": {
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390079,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 4009
Content-Type: application/json
{
"beam_intrinsics": {
"beam_altitude_angles": [
20.38, 20.12, 19.79, 19.45, 19.14, 18.85, 18.55, 18.2, 17.86, 17.58, 17.27, 16.93,
16.58, 16.29, 15.98, 15.61, 15.27, 14.97, 14.66, 14.3, 13.96, 13.65, 13.33, 12.97,
12.62, 12.31, 11.98, 11.63, 11.27, 10.96, 10.63, 10.26, 9.91, 9.59, 9.26, 8.89,
8.54, 8.21, 7.87, 7.52, 7.15, 6.82, 6.47, 6.11, 5.76, 5.42, 5.08, 4.73, 4.36, 4.03,
3.66, 3.31, 2.96, 2.62, 2.27, 1.91, 1.55, 1.22, 0.85, 0.51, 0.16, -0.2, -0.55, -0.91,
-1.26, -1.62, -1.96, -2.3, -2.66, -3.02, -3.36, -3.72, -4.07, -4.42, -4.77, -5.11,
-5.46, -5.82, -6.16, -6.49, -6.85, -7.21, -7.55, -7.88, -8.23, -8.59, -8.93, -9.25,
-9.6, -9.96, -10.31, -10.63, -10.96, -11.32, -11.67, -11.97, -12.31, -12.68, -13,
-13.32, -13.64, -14, -14.33, -14.63, -14.96, -15.31, -15.64, -15.94, -16.26,
-16.62, -16.93, -17.22, -17.54, -17.9, -18.22, -18.49, -18.8, -19.16, -19.47,
-19.73, -20.04, -20.39, -20.7, -20.94, -21.25, -21.6, -21.9, -22.14
],
"beam_azimuth_angles": [
4.24, 1.41, -1.42, -4.23, 4.23, 1.41, -1.41, -4.23, 4.23, 1.41, -1.41, -4.21, 4.23,
1.42, -1.4, -4.23, 4.24, 1.41, -1.4, -4.23, 4.24, 1.42, -1.4, -4.22, 4.23, 1.41,
-1.41, -4.22, 4.23, 1.42, -1.4, -4.22, 4.24, 1.41, -1.4, -4.23, 4.23, 1.41, -1.41,
-4.22, 4.23, 1.41, -1.41, -4.23, 4.23, 1.4, -1.42, -4.23, 4.23, 1.41, -1.42, -4.23,
4.23, 1.4, -1.42, -4.24, 4.22, 1.41, -1.43, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22,
1.4, -1.42, -4.23, 4.22, 1.4, -1.4, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.41,
-1.41, -4.22, 4.22, 1.39, -1.42, -4.23, 4.22, 1.41, -1.41, -4.22, 4.23, 1.41,
-1.41, -4.23, 4.23, 1.41, -1.41, -4.22, 4.23, 1.41, -1.41, -4.22, 4.22, 1.41,
-1.41, -4.22, 4.23, 1.41, -1.4, -4.23, 4.22, 1.41, -1.41, -4.23, 4.22, 1.4, -1.41,
-4.23, 4.22, 1.4, -1.41, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.4, -1.42, -4.23
],
"beam_to_lidar_transform": [ 1, 0, 0, 15.805999755859375, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],
"lidar_origin_to_beam_origin_mm": 15.8059998
}
"calibration_status": {
"reflectivity": {
"timestamp": "2022-11-18T20:31:06",
"valid": true
}
},
"config_params": {
"azimuth_window": [
0,
360000
],
"columns_per_packet": 16,
"lidar_mode": "1024x10",
"multipurpose_io_mode": "OFF",
"nmea_baud_rate": "BAUD_9600",
"nmea_ignore_valid_char": 0,
"nmea_in_polarity": "ACTIVE_HIGH",
"nmea_leap_seconds": 0,
"operating_mode": "NORMAL",
"phase_lock_enable": false,
"phase_lock_offset": 0,
"signal_multiplier": 1,
"sync_pulse_in_polarity": "ACTIVE_HIGH",
"sync_pulse_out_angle": 360,
"sync_pulse_out_frequency": 1,
"sync_pulse_out_polarity": "ACTIVE_HIGH",
"sync_pulse_out_pulse_width": 10,
"timestamp_mode": "TIME_FROM_INTERNAL_OSC",
"udp_dest": "169.254.225.4",
"udp_port_imu": 7503,
"udp_port_lidar": 7502,
"udp_profile_imu": "LEGACY",
"udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"imu_intrinsics": {
"imu_to_sensor_transform": [
1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1
]
},
"lidar_data_format": {
"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": "RNG19_RFL8_SIG16_NIR16_DUAL"
},
"lidar_intrinsics": {
"lidar_to_sensor_transform": [
-1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1
]
},
"sensor_info": {
"build_date": "2023-1-15T15:56:07Z",
"build_rev": "v3.0.0",
"image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",
"initialization_id": 390079,
"prod_line": "OS-1-128",
"prod_pn": "860-105010-07",
"prod_sn": "992244000006",
"status": "RUNNING"
}
}' | http http://169.254.26.118/api/v1/sensor/metadata
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/metadata', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 4009\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "beam_intrinsics": {\r\n\n "beam_altitude_angles": [\r\n\n 20.38, 20.12, 19.79, 19.45, 19.14, 18.85, 18.55, 18.2, 17.86, 17.58, 17.27, 16.93,\r\n\n 16.58, 16.29, 15.98, 15.61, 15.27, 14.97, 14.66, 14.3, 13.96, 13.65, 13.33, 12.97,\r\n\n 12.62, 12.31, 11.98, 11.63, 11.27, 10.96, 10.63, 10.26, 9.91, 9.59, 9.26, 8.89,\r\n\n 8.54, 8.21, 7.87, 7.52, 7.15, 6.82, 6.47, 6.11, 5.76, 5.42, 5.08, 4.73, 4.36, 4.03,\r\n\n 3.66, 3.31, 2.96, 2.62, 2.27, 1.91, 1.55, 1.22, 0.85, 0.51, 0.16, -0.2, -0.55, -0.91,\r\n\n -1.26, -1.62, -1.96, -2.3, -2.66, -3.02, -3.36, -3.72, -4.07, -4.42, -4.77, -5.11,\r\n\n -5.46, -5.82, -6.16, -6.49, -6.85, -7.21, -7.55, -7.88, -8.23, -8.59, -8.93, -9.25,\r\n\n -9.6, -9.96, -10.31, -10.63, -10.96, -11.32, -11.67, -11.97, -12.31, -12.68, -13,\r\n\n -13.32, -13.64, -14, -14.33, -14.63, -14.96, -15.31, -15.64, -15.94, -16.26,\r\n\n -16.62, -16.93, -17.22, -17.54, -17.9, -18.22, -18.49, -18.8, -19.16, -19.47,\r\n\n -19.73, -20.04, -20.39, -20.7, -20.94, -21.25, -21.6, -21.9, -22.14\r\n\n ],\r\n\n "beam_azimuth_angles": [\r\n\n 4.24, 1.41, -1.42, -4.23, 4.23, 1.41, -1.41, -4.23, 4.23, 1.41, -1.41, -4.21, 4.23,\r\n\n 1.42, -1.4, -4.23, 4.24, 1.41, -1.4, -4.23, 4.24, 1.42, -1.4, -4.22, 4.23, 1.41,\r\n\n -1.41, -4.22, 4.23, 1.42, -1.4, -4.22, 4.24, 1.41, -1.4, -4.23, 4.23, 1.41, -1.41,\r\n\n -4.22, 4.23, 1.41, -1.41, -4.23, 4.23, 1.4, -1.42, -4.23, 4.23, 1.41, -1.42, -4.23,\r\n\n 4.23, 1.4, -1.42, -4.24, 4.22, 1.41, -1.43, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22,\r\n\n 1.4, -1.42, -4.23, 4.22, 1.4, -1.4, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.41,\r\n\n -1.41, -4.22, 4.22, 1.39, -1.42, -4.23, 4.22, 1.41, -1.41, -4.22, 4.23, 1.41,\r\n\n -1.41, -4.23, 4.23, 1.41, -1.41, -4.22, 4.23, 1.41, -1.41, -4.22, 4.22, 1.41,\r\n\n -1.41, -4.22, 4.23, 1.41, -1.4, -4.23, 4.22, 1.41, -1.41, -4.23, 4.22, 1.4, -1.41,\r\n\n -4.23, 4.22, 1.4, -1.41, -4.24, 4.22, 1.4, -1.42, -4.24, 4.22, 1.4, -1.42, -4.23\r\n\n ],\r\n\n "beam_to_lidar_transform": [ 1, 0, 0, 15.805999755859375, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 ],\r\n\n "lidar_origin_to_beam_origin_mm": 15.8059998\r\n\n }\r\n\n "calibration_status": {\r\n\n "reflectivity": {\r\n\n "timestamp": "2022-11-18T20:31:06",\r\n\n "valid": true\r\n\n }\r\n\n },\r\n\n "config_params": {\r\n\n "azimuth_window": [\r\n\n 0,\r\n\n 360000\r\n\n ],\r\n\n "columns_per_packet": 16,\r\n\n "lidar_mode": "1024x10",\r\n\n "multipurpose_io_mode": "OFF",\r\n\n "nmea_baud_rate": "BAUD_9600",\r\n\n "nmea_ignore_valid_char": 0,\r\n\n "nmea_in_polarity": "ACTIVE_HIGH",\r\n\n "nmea_leap_seconds": 0,\r\n\n "operating_mode": "NORMAL",\r\n\n "phase_lock_enable": false,\r\n\n "phase_lock_offset": 0,\r\n\n "signal_multiplier": 1,\r\n\n "sync_pulse_in_polarity": "ACTIVE_HIGH",\r\n\n "sync_pulse_out_angle": 360,\r\n\n "sync_pulse_out_frequency": 1,\r\n\n "sync_pulse_out_polarity": "ACTIVE_HIGH",\r\n\n "sync_pulse_out_pulse_width": 10,\r\n\n "timestamp_mode": "TIME_FROM_INTERNAL_OSC",\r\n\n "udp_dest": "169.254.225.4",\r\n\n "udp_port_imu": 7503,\r\n\n "udp_port_lidar": 7502,\r\n\n "udp_profile_imu": "LEGACY",\r\n\n "udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"\r\n\n },\r\n\n "imu_intrinsics": {\r\n\n "imu_to_sensor_transform": [\r\n\n 1, 0, 0, 6.253, 0, 1, 0, -11.775, 0, 0, 1, 7.645, 0, 0, 0, 1\r\n\n ]\r\n\n },\r\n\n "lidar_data_format": {\r\n\n "column_window": [\r\n\n 0,\r\n\n 1023\r\n\n ],\r\n\n "columns_per_frame": 1024,\r\n\n "columns_per_packet": 16,\r\n\n "pixel_shift_by_row": [12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12, 12, 4, -4, -12, 12, 4, -4,\r\n\n -12, 12, 4, -4, -12, 12, 4, -4, -12, 12,\r\n\n 4, -4, -12\r\n\n ],\r\n\n "pixels_per_column": 128,\r\n\n "udp_profile_imu": "LEGACY",\r\n\n "udp_profile_lidar": "RNG19_RFL8_SIG16_NIR16_DUAL"\r\n\n },\r\n\n\r\n\n "lidar_intrinsics": {\r\n\n "lidar_to_sensor_transform": [\r\n\n -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1, 38.195, 0, 0, 0, 1\r\n\n ]\r\n\n },\r\n\n "sensor_info": {\r\n\n "build_date": "2023-1-15T15:56:07Z",\r\n\n "build_rev": "v3.0.0",\r\n\n "image_rev": "ousteros-image-prod-bootes-v3.0.0+0123456789",\r\n\n "initialization_id": 390079,\r\n\n "prod_line": "OS-1-128",\r\n\n "prod_pn": "860-105010-07",\r\n\n "prod_sn": "992244000006",\r\n\n "status": "RUNNING"\r\n\n }\r\n\n }')
status code: 200 No error
System
GET /api/v1/system/firmware
-
GET
169.254.26.118/api/v1/system/firmware
Get the firmware version of the sensor
http
GET /api/v1/system/firmware HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 104
Content-Type: application/json
{
"commit_pending": false,
"fw": "ousteros-image-prod-bootes-v3.0.0+0123456789"
}
curl
curl -i http://169.254.26.118/api/v1/system/firmware --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 104
Content-Type: application/json
{
"commit_pending": false,
"fw": "ousteros-image-prod-bootes-v3.0.0+0123456789"
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 104
Content-Type: application/json
{
"commit_pending": false,
"fw": "ousteros-image-prod-bootes-v3.0.0+0123456789"
}' | http http://169.254.26.118/api/v1/system/firmware
python-requests
requests.get('http://169.254.26.118/api/v1/system/firmware', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 104\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "commit_pending": false,\r\n\n "fw": "ousteros-image-prod-bootes-v3.0.0+0123456789"\r\n\n }')
>json string fw Running firmware image name and version.
statuscode: 200 No error
GET /api/v1/system/network
-
GET
169.254.26.118/api/v1/system/network
Get the system network configuration.
http
GET /api/v1/system/network HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 256
Content-Type: application/json
{
"carrier": true,
"duplex": "full",
"ethaddr": "bc:0f:a7:00:84:17",
"hostname": "os-992244000006",
"ipv4": {
"link_local": "169.254.26.118/16",
"override": null
},
"ipv6": {
"link_local": "fe80::be0f:a7ff:fe00:8417/64"
},
"speed": 1000,
"speed_override": null
}
curl
curl -i http://169.254.26.118/api/v1/system/network --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 256
Content-Type: application/json
{
"carrier": true,
"duplex": "full",
"ethaddr": "bc:0f:a7:00:84:17",
"hostname": "os-992244000006",
"ipv4": {
"link_local": "169.254.26.118/16",
"override": null
},
"ipv6": {
"link_local": "fe80::be0f:a7ff:fe00:8417/64"
},
"speed": 1000,
"speed_override": null
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 256
Content-Type: application/json
{
"carrier": true,
"duplex": "full",
"ethaddr": "bc:0f:a7:00:84:17",
"hostname": "os-992244000006",
"ipv4": {
"link_local": "169.254.26.118/16",
"override": null
},
"ipv6": {
"link_local": "fe80::be0f:a7ff:fe00:8417/64"
},
"speed": 1000,
"speed_override": null
}' | http http://169.254.26.118/api/v1/system/network
python-requests
requests.get('http://169.254.26.118/api/v1/system/network', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 256\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "carrier": true,\r\n\n "duplex": "full",\r\n\n "ethaddr": "bc:0f:a7:00:84:17",\r\n\n "hostname": "os-992244000006",\r\n\n "ipv4": {\r\n\n "link_local": "169.254.26.118/16",\r\n\n "override": null\r\n\n },\r\n\n "ipv6": {\r\n\n "link_local": "fe80::be0f:a7ff:fe00:8417/64"\r\n\n },\r\n\n "speed": 1000,\r\n\n "speed_override": null\r\n\n }')
>json boolean carrier: State of Ethernet link, true
when physical layer is connected.
>json string duplex: Duplex mode of Ethernet link, half
or full
.
>json string ethaddr: Ethernet hardware (MAC) address.
>json string hostname: Hostname of the sensor, also used when requesting DHCP address and registering mDNS hostname.
>json object ipv4: See ipv4 object
>json string ipv6.link_local: Link-local IPv6 address.
>json integer speed: Ethernet physical layer speed in Mbps, should be 1000 Mbps.
statuscode: 200 No error
GET /api/v1/system/network/ipv4
-
GET
169.254.26.118/api/v1/system/network/ipv4
Get the IPv4 network configuration.
http
GET /api/v1/system/network/ipv4 HTTP/1.1
Host: 169.254.26.118
curl
curl -i http://169.254.26.118/api/v1/system/network/ipv4
httpie
http http://169.254.26.118/api/v1/system/network/ipv4
python-requests
requests.get('http://169.254.26.118/api/v1/system/network/ipv4')
response
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 53
Content-Type: application/json
{
"link_local": "169.254.26.118/16",
"override": null
}
>json string addr: Current global or private IPv4 address.
>json string link_local: Link-local IPv4 address.
>json string override: Static IP override value, this should match addr
. This value will be null
when unset and operating in DHCP or link-local modes.
statuscode: 200 No error
GET /api/v1/system/network/ipv4/override
-
GET
169.254.26.118/api/v1/system/network/ipv4/override
Get the current IPv4 static IP address override.
http
GET /api/v1/system/network/ipv4/override HTTP/1.1
Host: 169.254.26.118
curl
curl -i http://169.254.26.118/api/v1/system/network/ipv4/override
httpie
http http://169.254.26.118/api/v1/system/network/ipv4/override
python-requests
requests.get('http://169.254.26.118/api/v1/system/network/ipv4/override')
response
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 4
Content-Type: application/json
null
>json string Static IP override value, this should match addr
. This value will be null
when unset and operating in DHCP mode.
statuscode: 200 No error
PUT /api/v1/system/network/ipv4/override
-
PUT
192.0.2.123/api/v1/system/network/ipv4/override
Override the default dynamic behavior and set a static IP address.
Note
The sensor will reset the network configuration after a short sub second delay (to allow for the HTTP response to be sent). After this delay the sensor will only be reachable on the newly set IPv4 address.
The sensor needs to be reachable either by link-local or dynamic DHCP configuration or by an existing static IP override from the host reconfiguring the sensor.
Warning
If an unreachable network address is set, the sensor will become unreachable. Tools such as avahi-browse, dns-sd, or mDNS browser can help with finding a sensor on a network.
Static IP override should only be used in special use cases. The link-local configuration is recommended where possible.
http
PUT /api/v1/system/network/ipv4/override HTTP/1.1
Content-Type: application/json
Host: 192.0.2.123
"192.0.2.100/24"
curl
curl -i -X PUT http://192.0.2.123/api/v1/system/network/ipv4/override -H 'Content-Type: application/json' --data-raw '"192.0.2.100/24"'
httpie
echo '"192.0.2.100/24"' | http PUT http://192.0.2.123/api/v1/system/network/ipv4/override Content-Type:application/json
python-requests
requests.put('http://192.0.2.123/api/v1/system/network/ipv4/override', headers={'Content-Type': 'application/json'}, json='192.0.2.100/24')
<json string: Static IP override value with subnet mask
>json string: Static IP override value that system will set after a short delay.
statuscode: 200 No error
DELETE /api/v1/system/network/ipv4/override
-
DELETE
192.0.2.123/api/v1/system/network/ipv4/override
Delete the static IP override value and return to dynamic configuration.
Note
The sensor will reset the network configuration after a short sub second delay (to allow for the HTTP response to be sent). After this delay the sensor will only be reachable on the newly set IPv4 address.
The sensor may be unreachable for several seconds while a link-local lease is obtained from the network or client machine.
http
DELETE /api/v1/system/network/ipv4/override HTTP/1.1
Host: 192.0.2.123
curl
curl -i -X DELETE http://192.0.2.123/api/v1/system/network/ipv4/override
httpie
http DELETE http://192.0.2.123/api/v1/system/network/ipv4/override
python-requests
requests.delete('http://192.0.2.123/api/v1/system/network/ipv4/override')
statuscode: 204 No error, no content
GET /api/v1/system/network/speed_override
Two options null
(default) and 100
.
Note
Only valid for sensors with automotive ethernet (T1).
Example-1
-
GET
10.34.24.208/api/v1/system/network/speed_override
http
GET /api/v1/system/network/speed_override HTTP/1.1
Content-Type: application/json
Host: 10.34.24.208
"null"
curl
curl -i http://10.34.24.208/api/v1/system/network/speed_override -H 'Content-Type: application/json' --data-raw '"null"'
httpie
echo '"null"' | http http://10.34.24.208/api/v1/system/network/speed_override Content-Type:application/json
python-requests
requests.get('http://10.34.24.208/api/v1/system/network/speed_override', headers={'Content-Type': 'application/json'}, json='null')
Example-2
-
GET
10.34.24.208/api/v1/system/network/speed_override
http
GET /api/v1/system/network/speed_override HTTP/1.1
Content-Type: application/json
Host: 10.34.24.208
"100"
curl
curl -i http://10.34.24.208/api/v1/system/network/speed_override -H 'Content-Type: application/json' --data-raw '"100"'
httpie
echo '"100"' | http http://10.34.24.208/api/v1/system/network/speed_override Content-Type:application/json
python-requests
requests.get('http://10.34.24.208/api/v1/system/network/speed_override', headers={'Content-Type': 'application/json'}, json='100')
PUT /api/v1/system/network/speed_override
Note
Only valid for sensors with automotive ethernet (T1).
Warning
Only run this command if you have the ability to configure your networking hardware between 1000BASE-T1 and 100BASE-T1. If you do not have the configuration option available, you will no longer be able to communicate to the sensor. Please refer to an Example 100Base-T1 Connector.
Two options 1000 (default
) and 100. However, user can only use PUT
command to set speed-override to 100.
In order to revert back to 1000 (default
), please run the DELETE /api/v1/system/network/speed_override.
Example
-
PUT
10.34.24.208/api/v1/system/network/speed_override --data-raw '100'
http
PUT /api/v1/system/network/speed_override HTTP/1.1
Content-Type: application/json
Host: 10.34.24.208
"100"
curl
curl -i -X PUT http://10.34.24.208/api/v1/system/network/speed_override -H 'Content-Type: application/json' --data-raw '"100"'
httpie
echo '"100"' | http PUT http://10.34.24.208/api/v1/system/network/speed_override Content-Type:application/json
python-requests
requests.put('http://10.34.24.208/api/v1/system/network/speed_override', headers={'Content-Type': 'application/json'}, json='100')
DELETE /api/v1/system/network/speed_override
Note
Only valid for sensors with automotive ethernet (T1).
To reset it back to default
i.e.., 1000
-
DELETE
10.34.24.208/api/v1/system/network/speed_override
http
DELETE 10.34.24.208/api/v1/system/network/speed_override HTTP/1.1
Content-Type: application/json
Host: 10.34.24.208
""
curl
curl -i -X DELETE http://10.34.24.20810.34.24.208/api/v1/system/network/speed_override -H 'Content-Type: application/json'
httpie
http DELETE http://10.34.24.20810.34.24.208/api/v1/system/network/speed_override Content-Type:application/json
python-requests
requests.delete('http://10.34.24.20810.34.24.208/api/v1/system/network/speed_override', headers={'Content-Type': 'application/json'})
Time
GET /api/v1/time
-
GET
169.254.26.118/api/v1/time
Get the system time configuration for all timing components of the sensor.
http
GET /api/v1/time HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2484
Content-Type: application/json
{
"ptp": {
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
},
"sensor": {
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 297.397987312,
"time_options": {
"internal_osc": 297,
"ptp_1588": 1651197874,
"sync_pulse_in": 1
}
}
},
"system": {
"monotonic": 30131.822811617,
"realtime": 1651197874.3271277,
"tracking": {
"frequency": -9.558,
"last_offset": 0.0,
"leap_status": "not synchronised",
"ref_time_utc": 0.0,
"reference_id": "00000000",
"remote_host": "",
"residual_frequency": 0.0,
"rms_offset": 0.0,
"root_delay": 1.0,
"root_dispersion": 1.0,
"skew": 0.0,
"stratum": 0,
"system_time_offset": 1e-09,
"update_interval": 0.0
}
}
}
curl
curl -i http://169.254.26.118/api/v1/time --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2484
Content-Type: application/json
{
"ptp": {
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
},
"sensor": {
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 297.397987312,
"time_options": {
"internal_osc": 297,
"ptp_1588": 1651197874,
"sync_pulse_in": 1
}
}
},
"system": {
"monotonic": 30131.822811617,
"realtime": 1651197874.3271277,
"tracking": {
"frequency": -9.558,
"last_offset": 0.0,
"leap_status": "not synchronised",
"ref_time_utc": 0.0,
"reference_id": "00000000",
"remote_host": "",
"residual_frequency": 0.0,
"rms_offset": 0.0,
"root_delay": 1.0,
"root_dispersion": 1.0,
"skew": 0.0,
"stratum": 0,
"system_time_offset": 1e-09,
"update_interval": 0.0
}
}
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 2484
Content-Type: application/json
{
"ptp": {
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'"'"'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
},
"sensor": {
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 297.397987312,
"time_options": {
"internal_osc": 297,
"ptp_1588": 1651197874,
"sync_pulse_in": 1
}
}
},
"system": {
"monotonic": 30131.822811617,
"realtime": 1651197874.3271277,
"tracking": {
"frequency": -9.558,
"last_offset": 0.0,
"leap_status": "not synchronised",
"ref_time_utc": 0.0,
"reference_id": "00000000",
"remote_host": "",
"residual_frequency": 0.0,
"rms_offset": 0.0,
"root_delay": 1.0,
"root_dispersion": 1.0,
"skew": 0.0,
"stratum": 0,
"system_time_offset": 1e-09,
"update_interval": 0.0
}
}
}' | http http://169.254.26.118/api/v1/time
python-requests
requests.get('http://169.254.26.118/api/v1/time', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 2484\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "ptp": {\r\n\n "current_data_set": {\r\n\n "mean_path_delay": 0.0,\r\n\n "offset_from_master": 0.0,\r\n\n "steps_removed": 0\r\n\n },\r\n\n "parent_data_set": {\r\n\n "gm_clock_accuracy": 254,\r\n\n "gm_clock_class": 255,\r\n\n "gm_offset_scaled_log_variance": 65535,\r\n\n "grandmaster_identity": "bc0fa7.fffe.008417",\r\n\n "grandmaster_priority1": 128,\r\n\n "grandmaster_priority2": 128,\r\n\n "observed_parent_clock_phase_change_rate": 2147483647,\r\n\n "observed_parent_offset_scaled_log_variance": 65535,\r\n\n "parent_port_identity": "bc0fa7.fffe.008417-0",\r\n\n "parent_stats": 0\r\n\n },\r\n\n "port_data_set": {\r\n\n "announce_receipt_timeout": 3,\r\n\n "delay_mechanism": 1,\r\n\n "log_announce_interval": 1,\r\n\n "log_min_delay_req_interval": 0,\r\n\n "log_min_pdelay_req_interval": 0,\r\n\n "log_sync_interval": 0,\r\n\n "peer_mean_path_delay": 0,\r\n\n "port_identity": "bc0fa7.fffe.008417-1",\r\n\n "port_state": "LISTENING",\r\n\n "version_number": 2\r\n\n },\r\n\n "profile": "default",\r\n\n "time_properties_data_set": {\r\n\n "current_utc_offset": 37,\r\n\n "current_utc_offset_valid": 0,\r\n\n "frequency_traceable": 0,\r\n\n "leap59": 0,\r\n\n "leap61": 0,\r\n\n "ptp_timescale": 1,\r\n\n "time_source": 160,\r\n\n "time_traceable": 0\r\n\n },\r\n\n "time_status_np": {\r\n\n "cumulative_scaled_rate_offset": 0.0,\r\n\n "gm_identity": "bc0fa7.fffe.008417",\r\n\n "gm_present": false,\r\n\n "gm_time_base_indicator": 0,\r\n\n "ingress_time": 0,\r\n\n "last_gm_phase_change": "0x0000\'0000000000000000.0000",\r\n\n "master_offset": 0,\r\n\n "scaled_last_gm_phase_change": 0\r\n\n }\r\n\n },\r\n\n "sensor": {\r\n\n "multipurpose_io": {\r\n\n "mode": "OFF",\r\n\n "nmea": {\r\n\n "baud_rate": "BAUD_9600",\r\n\n "diagnostics": {\r\n\n "decoding": {\r\n\n "date_decoded_count": 0,\r\n\n "last_read_message": "",\r\n\n "not_valid_count": 0,\r\n\n "utc_decoded_count": 0\r\n\n },\r\n\n "io_checks": {\r\n\n "bit_count": 1,\r\n\n "bit_count_unfiltered": 0,\r\n\n "char_count": 0,\r\n\n "start_char_count": 0\r\n\n }\r\n\n },\r\n\n "ignore_valid_char": 0,\r\n\n "leap_seconds": 0,\r\n\n "locked": 0,\r\n\n "polarity": "ACTIVE_HIGH"\r\n\n },\r\n\n "sync_pulse_out": {\r\n\n "angle_deg": 360,\r\n\n "frequency_hz": 1,\r\n\n "polarity": "ACTIVE_HIGH",\r\n\n "pulse_width_ms": 10\r\n\n }\r\n\n },\r\n\n "sync_pulse_in": {\r\n\n "diagnostics": {\r\n\n "count": 1,\r\n\n "count_unfiltered": 0,\r\n\n "last_period_nsec": 0\r\n\n },\r\n\n "locked": 0,\r\n\n "polarity": "ACTIVE_HIGH"\r\n\n },\r\n\n "timestamp": {\r\n\n "mode": "TIME_FROM_INTERNAL_OSC",\r\n\n "time": 297.397987312,\r\n\n "time_options": {\r\n\n "internal_osc": 297,\r\n\n "ptp_1588": 1651197874,\r\n\n "sync_pulse_in": 1\r\n\n }\r\n\n }\r\n\n },\r\n\n "system": {\r\n\n "monotonic": 30131.822811617,\r\n\n "realtime": 1651197874.3271277,\r\n\n "tracking": {\r\n\n "frequency": -9.558,\r\n\n "last_offset": 0.0,\r\n\n "leap_status": "not synchronised",\r\n\n "ref_time_utc": 0.0,\r\n\n "reference_id": "00000000",\r\n\n "remote_host": "",\r\n\n "residual_frequency": 0.0,\r\n\n "rms_offset": 0.0,\r\n\n "root_delay": 1.0,\r\n\n "root_dispersion": 1.0,\r\n\n "skew": 0.0,\r\n\n "stratum": 0,\r\n\n "system_time_offset": 1e-09,\r\n\n "update_interval": 0.0\r\n\n }\r\n\n }\r\n\n }')
>json string: See sub objects for details.
statuscode: 200 No error
GET /api/v1/time/sensor
-
GET
169.254.26.118/api/v1/time/sensor
Get the sensor time information
http
GET /api/v1/time/sensor HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 775
Content-Type: application/json
{
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 376.510445056,
"time_options": {
"internal_osc": 376,
"ptp_1588": 1651197953,
"sync_pulse_in": 1
}
}
}
curl
curl -i http://169.254.26.118/api/v1/time/sensor --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 775
Content-Type: application/json
{
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 376.510445056,
"time_options": {
"internal_osc": 376,
"ptp_1588": 1651197953,
"sync_pulse_in": 1
}
}
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 775
Content-Type: application/json
{
"multipurpose_io": {
"mode": "OFF",
"nmea": {
"baud_rate": "BAUD_9600",
"diagnostics": {
"decoding": {
"date_decoded_count": 0,
"last_read_message": "",
"not_valid_count": 0,
"utc_decoded_count": 0
},
"io_checks": {
"bit_count": 1,
"bit_count_unfiltered": 0,
"char_count": 0,
"start_char_count": 0
}
},
"ignore_valid_char": 0,
"leap_seconds": 0,
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"sync_pulse_out": {
"angle_deg": 360,
"frequency_hz": 1,
"polarity": "ACTIVE_HIGH",
"pulse_width_ms": 10
}
},
"sync_pulse_in": {
"diagnostics": {
"count": 1,
"count_unfiltered": 0,
"last_period_nsec": 0
},
"locked": 0,
"polarity": "ACTIVE_HIGH"
},
"timestamp": {
"mode": "TIME_FROM_INTERNAL_OSC",
"time": 376.510445056,
"time_options": {
"internal_osc": 376,
"ptp_1588": 1651197953,
"sync_pulse_in": 1
}
}
}' | http http://169.254.26.118/api/v1/time/sensor
python-requests
requests.get('http://169.254.26.118/api/v1/time/sensor', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 775\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "multipurpose_io": {\r\n\n "mode": "OFF",\r\n\n "nmea": {\r\n\n "baud_rate": "BAUD_9600",\r\n\n "diagnostics": {\r\n\n "decoding": {\r\n\n "date_decoded_count": 0,\r\n\n "last_read_message": "",\r\n\n "not_valid_count": 0,\r\n\n "utc_decoded_count": 0\r\n\n },\r\n\n "io_checks": {\r\n\n "bit_count": 1,\r\n\n "bit_count_unfiltered": 0,\r\n\n "char_count": 0,\r\n\n "start_char_count": 0\r\n\n }\r\n\n },\r\n\n "ignore_valid_char": 0,\r\n\n "leap_seconds": 0,\r\n\n "locked": 0,\r\n\n "polarity": "ACTIVE_HIGH"\r\n\n },\r\n\n "sync_pulse_out": {\r\n\n "angle_deg": 360,\r\n\n "frequency_hz": 1,\r\n\n "polarity": "ACTIVE_HIGH",\r\n\n "pulse_width_ms": 10\r\n\n }\r\n\n },\r\n\n "sync_pulse_in": {\r\n\n "diagnostics": {\r\n\n "count": 1,\r\n\n "count_unfiltered": 0,\r\n\n "last_period_nsec": 0\r\n\n },\r\n\n "locked": 0,\r\n\n "polarity": "ACTIVE_HIGH"\r\n\n },\r\n\n "timestamp": {\r\n\n "mode": "TIME_FROM_INTERNAL_OSC",\r\n\n "time": 376.510445056,\r\n\n "time_options": {\r\n\n "internal_osc": 376,\r\n\n "ptp_1588": 1651197953,\r\n\n "sync_pulse_in": 1\r\n\n }\r\n\n }\r\n\n }')
status code: 200 No error
Description: Returns JSON-formatted sensor timing configuration and status of udp timestamp
, sync_pulse_in
, and multipurpose_io
. For more information on these parameters refer to the get_time_info
TCP command.
GET /api/v1/time/system
-
GET
169.254.26.118/api/v1/time/system
Get the operating system time status. These values relate to the sensor operating system clocks, and not clocks related to hardware timestamp data from the lidar sensor.
http
GET /api/v1/time/system HTTP/1.1
Host: 169.254.26.118
curl
curl -i http://169.254.26.118/api/v1/time/system
httpie
http http://169.254.26.118/api/v1/time/system
python-requests
requests.get('http://169.254.26.118/api/v1/time/system')
response
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 389
Content-Type: application/json
{
"monotonic": 30348.898799855,
"realtime": 1651198091.4031146,
"tracking": {
"frequency": -9.558,
"last_offset": 0.0,
"leap_status": "not synchronised",
"ref_time_utc": 0.0,
"reference_id": "00000000",
"remote_host": "",
"residual_frequency": 0.0,
"rms_offset": 0.0,
"root_delay": 1.0,
"root_dispersion": 1.0,
"skew": 0.0,
"stratum": 0,
"system_time_offset": 3e-09,
"update_interval": 0.0
}
}
>json float monotonic: Monotonic time of operating system. This timestamp never counts backwards and is the time since boot in seconds.
>json float realtime: Time in seconds since the Unix epoch, should match wall time if synchronized with external time source.
>json object tracking: Operating system time synchronization tracking status. See chronyc tracking documentation for more information.
statuscode: 200 No error
System ``tracking`` fields of interest:
rms_offset: Long-term average of the offset value.
system_time_offset: Time delta (in seconds) between the estimate of the operating system time and the current true time.
last_offset: Estimated local offset on the last clock update.
ref_time_utc: UTC Time at which the last measurement from the reference source was processed.
remote_host: This is either
ptp
if the system is synchronizing to a PTP time source or the address of a remote NTP server the system has selected if the sensor is connected to the Internet.
GET /api/v1/time/ptp
-
GET
169.254.26.118/api/v1/time/ptp
Get the status of the PTP time synchronization daemon.
Note
See the IEEE 1588-2008 standard for more details on the standard management messages.
http
GET /api/v1/time/ptp HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1287
Content-Type: application/json
{
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
}
curl
curl -i http://169.254.26.118/api/v1/time/ptp --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1287
Content-Type: application/json
{
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1287
Content-Type: application/json
{
"current_data_set": {
"mean_path_delay": 0.0,
"offset_from_master": 0.0,
"steps_removed": 0
},
"parent_data_set": {
"gm_clock_accuracy": 254,
"gm_clock_class": 255,
"gm_offset_scaled_log_variance": 65535,
"grandmaster_identity": "bc0fa7.fffe.008417",
"grandmaster_priority1": 128,
"grandmaster_priority2": 128,
"observed_parent_clock_phase_change_rate": 2147483647,
"observed_parent_offset_scaled_log_variance": 65535,
"parent_port_identity": "bc0fa7.fffe.008417-0",
"parent_stats": 0
},
"port_data_set": {
"announce_receipt_timeout": 3,
"delay_mechanism": 1,
"log_announce_interval": 1,
"log_min_delay_req_interval": 0,
"log_min_pdelay_req_interval": 0,
"log_sync_interval": 0,
"peer_mean_path_delay": 0,
"port_identity": "bc0fa7.fffe.008417-1",
"port_state": "LISTENING",
"version_number": 2
},
"profile": "default",
"time_properties_data_set": {
"current_utc_offset": 37,
"current_utc_offset_valid": 0,
"frequency_traceable": 0,
"leap59": 0,
"leap61": 0,
"ptp_timescale": 1,
"time_source": 160,
"time_traceable": 0
},
"time_status_np": {
"cumulative_scaled_rate_offset": 0.0,
"gm_identity": "bc0fa7.fffe.008417",
"gm_present": false,
"gm_time_base_indicator": 0,
"ingress_time": 0,
"last_gm_phase_change": "0x0000'"'"'0000000000000000.0000",
"master_offset": 0,
"scaled_last_gm_phase_change": 0
}
}' | http http://169.254.26.118/api/v1/time/ptp
python-requests
requests.get('http://169.254.26.118/api/v1/time/ptp', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 1287\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "current_data_set": {\r\n\n "mean_path_delay": 0.0,\r\n\n "offset_from_master": 0.0,\r\n\n "steps_removed": 0\r\n\n },\r\n\n "parent_data_set": {\r\n\n "gm_clock_accuracy": 254,\r\n\n "gm_clock_class": 255,\r\n\n "gm_offset_scaled_log_variance": 65535,\r\n\n "grandmaster_identity": "bc0fa7.fffe.008417",\r\n\n "grandmaster_priority1": 128,\r\n\n "grandmaster_priority2": 128,\r\n\n "observed_parent_clock_phase_change_rate": 2147483647,\r\n\n "observed_parent_offset_scaled_log_variance": 65535,\r\n\n "parent_port_identity": "bc0fa7.fffe.008417-0",\r\n\n "parent_stats": 0\r\n\n },\r\n\n "port_data_set": {\r\n\n "announce_receipt_timeout": 3,\r\n\n "delay_mechanism": 1,\r\n\n "log_announce_interval": 1,\r\n\n "log_min_delay_req_interval": 0,\r\n\n "log_min_pdelay_req_interval": 0,\r\n\n "log_sync_interval": 0,\r\n\n "peer_mean_path_delay": 0,\r\n\n "port_identity": "bc0fa7.fffe.008417-1",\r\n\n "port_state": "LISTENING",\r\n\n "version_number": 2\r\n\n },\r\n\n "profile": "default",\r\n\n "time_properties_data_set": {\r\n\n "current_utc_offset": 37,\r\n\n "current_utc_offset_valid": 0,\r\n\n "frequency_traceable": 0,\r\n\n "leap59": 0,\r\n\n "leap61": 0,\r\n\n "ptp_timescale": 1,\r\n\n "time_source": 160,\r\n\n "time_traceable": 0\r\n\n },\r\n\n "time_status_np": {\r\n\n "cumulative_scaled_rate_offset": 0.0,\r\n\n "gm_identity": "bc0fa7.fffe.008417",\r\n\n "gm_present": false,\r\n\n "gm_time_base_indicator": 0,\r\n\n "ingress_time": 0,\r\n\n "last_gm_phase_change": "0x0000\'0000000000000000.0000",\r\n\n "master_offset": 0,\r\n\n "scaled_last_gm_phase_change": 0\r\n\n }\r\n\n }')
- >json object current_data_set
Result of the PMC
GET CURRENT_DATA_SET
command.- >json object parent_data_set
Result of the PMC
GET PARENT_DATA_SET
command.- >json object port_data_set
Result of the PMC
GET PORT_DATA_SET
command.- >json object time_properties_data_set
Result of the PMC
GET TIME_PROPERTIES_DATA_SET
command.- >json object time_status_np
Result of the PMC
GET TIME_STATUS_NP
command. This is a linuxptp non-portable command.
statuscode: 200 No error
Fields of interest:
- current_data_set.offset_from_master
Offset from master time source in nanoseconds as calculated during the last update from master.
- parent_data_set.grandmaster_identity
This should match the local grandmaster clock. If this displays the sensor’s clock identity (derived from Ethernet hardware address) then this indicates the sensor is not properly synchronized to a grandmaster.
- parent_data_set
Various information about the selected master clock.
- port_data_set.port_state
This value will be
SLAVE
when a remote master clock is selected. Seeparent_data_set
for selected master clock.- port_data_set
Local sensor PTP configuration values. Grandmaster clock needs to match these for proper time synchronization.
- time_properties_data_set
PTP properties as given by master clock.
- time_status_np.gm_identity
Selected grandmaster clock identity.
- time_status_np.gm_present
True when grandmaster has been detected. This may stay true even if grandmaster goes off-line. Use
port_data_set.port_state
to determine up-to-date synchronization status. When this is false then the local clock is selected.- time_status_np.ingress_time
Indicates when the last PTP message was received. Units are in nanoseconds.
- time_status_np
Linux PTP specific diagnostic values. The Red Hat manual provides some more information on these fields
GET /api/v1/time/ptp/profile
-
GET
169.254.26.118/api/v1/time/ptp/profile
Get the active PTP profile of the Ouster sensor
http
GET /api/v1/time/ptp/profile HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 9
Content-Type: application/json
"default"
curl
curl -i http://nohost/api/v1/time/ptp/profile --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 9
Content-Type: application/json
"default"'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 9
Content-Type: application/json
"default"' | http http://nohost/api/v1/time/ptp/profile
python-requests
requests.get('http://nohost/api/v1/time/ptp/profile', data='HTTP/1.1 200 OK\r\n\n Connection: keep-alive\r\n\n Content-Length: 9\r\n\n Content-Type: application/json\r\n\n\r\n\n "default"')
response
HTTP/1.1 200 OK
content-length: 9
content-type: application/json; charset=UTF-8
"gptp"
>json string: Active PTP profile.
statuscode: 200 No error
PUT /api/v1/time/ptp/profile
-
PUT
169.254.26.118/api/v1/time/ptp/profile
Change the PTP profile of the Ouster sensor
http
PUT /api/v1/time/ptp/profile HTTP/1.1
Content-Type: application/json
Host: 169.254.26.118
"gptp"
curl
curl -i -X PUT http://nohost/api/v1/time/ptp/profile --data-raw '"gptp"'
httpie
echo '"gptp"' | http PUT http://nohost/api/v1/time/ptp/profile
python-requests
requests.put('http://nohost/api/v1/time/ptp/profile', data='"gptp"')
response
HTTP/1.1 200 OK
content-length: 9
content-type: application/json; charset=UTF-8
"gptp"
<json string: PTP profile to be activated, valid options are "default"
, "gptp"
, and "automotive-slave"
>json string: Active PTP profile.
statuscode: 200 No error
Alerts, Diagnostics and Telemetry
GET /api/v1/sensor/alerts
Example 1: Using HTTPie command GET /api/v1/sensor/alerts
-
GET
169.254.26.118/api/v1/sensor/alerts
Get the sensor lidar intrinsics
http
GET /api/v1/sensor/alerts HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1983
Content-Type: application/json
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
},
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
}
],
"log": [
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
},
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
}
],
"next_cursor": 2
}
curl
curl -i http://169.254.26.118/api/v1/sensor/alerts --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1983
Content-Type: application/json
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
},
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
}
],
"log": [
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
},
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
}
],
"next_cursor": 2
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 1983
Content-Type: application/json
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
},
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
}
],
"log": [
{
"active": true,
"category": "UDP_TRANSMISSION",
"cursor": 0,
"id": "0x01000018",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",
"realtime": "1651197615284695040"
},
{
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",
"realtime": "1651197616274601728"
}
],
"next_cursor": 2
}' | http http://169.254.26.118/api/v1/sensor/alerts
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/alerts', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 1983\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "active": [\r\n\n {\r\n\n "active": true,\r\n\n "category": "UDP_TRANSMISSION",\r\n\n "cursor": 1,\r\n\n "id": "0x01000015",\r\n\n "level": "WARNING",\r\n\n "msg": "Client machine announced it is not reachable on the provided lidar data port;\r\n\n check that udp_dest and udp_port_lidar configured on the sensor matches\r\n\n client IP and port. This Alert may occur on sensor startup if the\r\n\n client is not listening at that time.",\r\n\n "msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",\r\n\n "realtime": "1651197616274601728"\r\n\n },\r\n\n {\r\n\n "active": true,\r\n\n "category": "UDP_TRANSMISSION",\r\n\n "cursor": 0,\r\n\n "id": "0x01000018",\r\n\n "level": "WARNING",\r\n\n "msg": "Client machine announced it is not reachable on the provided IMU data port;\r\n\n check that udp_dest and udp_port_imu configured on the sensor matches\r\n\n client IP and port. This Alert may occur on sensor startup if the\r\n\n client is not listening at that time.",\r\n\n "msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",\r\n\n "realtime": "1651197615284695040"\r\n\n }\r\n\n ],\r\n\n "log": [\r\n\n {\r\n\n "active": true,\r\n\n "category": "UDP_TRANSMISSION",\r\n\n "cursor": 0,\r\n\n "id": "0x01000018",\r\n\n "level": "WARNING",\r\n\n "msg": "Client machine announced it is not reachable on the provided IMU data port;\r\n\n check that udp_dest and udp_port_imu configured on the sensor matches\r\n\n client IP and port. This Alert may occur on sensor startup if the\r\n\n client is not listening at that time.",\r\n\n "msg_verbose": "Failed to send imu UDP data to destination host 169.254.225.4:7503",\r\n\n "realtime": "1651197615284695040"\r\n\n },\r\n\n {\r\n\n "active": true,\r\n\n "category": "UDP_TRANSMISSION",\r\n\n "cursor": 1,\r\n\n "id": "0x01000015",\r\n\n "level": "WARNING",\r\n\n "msg": "Client machine announced it is not reachable on the provided lidar data port;\r\n\n check that udp_dest and udp_port_lidar configured on the sensor matches\r\n\n client IP and port. This Alert may occur on sensor startup if the\r\n\n client is not listening at that time.",\r\n\n "msg_verbose": "Failed to send lidar UDP data to destination host 169.254.225.4:7502",\r\n\n "realtime": "1651197616274601728"\r\n\n }\r\n\n ],\r\n\n "next_cursor": 2\r\n\n }')
status code: 200 No error
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 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.
Example2: Using cURL command GET /api/v1/sensor/alerts
$ curl --request GET --url http://169.254.26.118/api/v1/sensor/alerts
{
"next_cursor": 10,
"log":
[
{
"active": true,
"msg_verbose": "Failed to send imu UDP data to destination
host 169.254.225.4:7503",
"cursor": 0,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the
provided IMU data port; check that udp_dest and
udp_port_imu configured on the sensor matches client IP and port.
This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "36290112071"
},
{
"active": true,
"msg_verbose": "Failed to send lidar UDP data to destination
host 169.254.225.4:7502",
"cursor": 1,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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.
This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "37280855516"
},
{
"active": false,
"msg_verbose": "Cleared by reinitialization.",
"cursor": 2,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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.
This Alert may occur on sensor startup if the client is not listening
at that time.",
"realtime": "1324837582611"
},
{
"active": false,
"msg_verbose": "Cleared by reinitialization.",
"cursor": 3,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided
IMU data port; check that udp_dest and udp_port_imu configured
on the sensor matches client IP and port.
This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "1324837951308"
},
{
"active": true,
"msg_verbose": "Failed to send imu UDP data to destination
host 169.254.225.4:7503",
"cursor": 4,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches client
IP and port. This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "1337796738411"
},
{
"active": true,
"msg_verbose": "Failed to send lidar UDP data to destination
host 169.254.225.4:7502",
"cursor": 5,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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. This Alert may occur on sensor startup if the client
is not listening at that time.",
"realtime": "1342789095053"
},
{
"active": false,
"msg_verbose": "Cleared by reinitialization.",
"cursor": 6,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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. This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "2376756278143"
},
{
"active": false,
"msg_verbose": "Cleared by reinitialization.",
"cursor": 7,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the client
is not listening at that time.",
"realtime": "2376756665275"
},
{
"active": true,
"msg_verbose": "Failed to send imu UDP data to destination
host 169.254.225.4:7503",
"cursor": 8,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches
client IP and port. This Alert may occur on sensor startup if the client
is not listening at that time.",
"realtime": "2389805137860"
},
{
"active": true,
"msg_verbose": "Failed to send lidar UDP data to destination
host 169.254.225.4:7502",
"cursor": 9,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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. This Alert may occur on sensor startup if the
client is not listening at that time.",
"realtime": "2390795752261"
}
],
"active":
[
{
"active": true,
"msg_verbose": "Failed to send lidar UDP data to destination
host 169.254.225.4:7502",
"cursor": 9,
"id": "0x01000015",
"category": "UDP_TRANSMISSION",
"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. This Alert may occur on sensor startup if the client is
not listening at that time.",
"realtime": "2390795752261"
},
{
"active": true,
"msg_verbose": "Failed to send imu UDP data to destination
host 169.254.225.4:7503",
"cursor": 8,
"id": "0x01000018",
"category": "UDP_TRANSMISSION",
"level": "WARNING",
"msg": "Client machine announced it is not reachable on the provided IMU data port;
check that udp_dest and udp_port_imu configured on the sensor matches client
IP and port. This Alert may occur on sensor startup if the client is not
listening at that time.",
"realtime": "2389805137860"
}
]
}
GET /api/v1/diagnostics/dump
-
GET
169.254.26.118/api/v1/diagnostics/dump
Get the diagnostics files of the sensor
http
GET /api/v1/diagnostics/dump HTTP/1.1
Host: 169.254.26.118
curl
curl -i http://169.254.26.118/api/v1/diagnostics/dump
httpie
http http://169.254.26.118/api/v1/diagnostics/dump
python-requests
requests.get('http://169.254.26.118/api/v1/diagnostics/dump')
response
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: application/octet-stream
Transfer-Encoding: chunked
content-disposition: attachment; filename="os-992244000006_diagnostics-dump_b7d348c2
-c763-11ec-accf-bc0fa7008417.bin"
+-----------------------------------------+
| NOTE: binary data not shown in terminal |
+-----------------------------------------+
statuscode: 200 No error
GET /api/v1/sensor/telemetry
-
GET
169.254.26.118/api/v1/sensor/telemetry
Get the sensor telemetry information
http
GET /api/v1/sensor/telemetry HTTP/1.1
Host: 169.254.26.118
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 150
Content-Type: application/json
{
"input_current_ma": 644,
"input_voltage_mv": 23624,
"internal_temperature_deg_c": 48,
"phase_lock_status": "DISABLED",
"timestamp_ns": 2093396806056
}
curl
curl -i http://169.254.26.118/api/v1/sensor/telemetry --data-raw 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 150
Content-Type: application/json
{
"input_current_ma": 644,
"input_voltage_mv": 23624,
"internal_temperature_deg_c": 48,
"phase_lock_status": "DISABLED",
"timestamp_ns": 2093396806056
}'
httpie
echo 'HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 150
Content-Type: application/json
{
"input_current_ma": 644,
"input_voltage_mv": 23624,
"internal_temperature_deg_c": 48,
"phase_lock_status": "DISABLED",
"timestamp_ns": 2093396806056
}' | http http://169.254.26.118/api/v1/sensor/telemetry
python-requests
requests.get('http://169.254.26.118/api/v1/sensor/telemetry', data='HTTP/1.1 200 OK\r\n\nConnection: keep-alive\r\n\nContent-Length: 150\r\n\nContent-Type: application/json\r\n\n\r\n\n {\r\n\n "input_current_ma": 644,\r\n\n "input_voltage_mv": 23624,\r\n\n "internal_temperature_deg_c": 48,\r\n\n "phase_lock_status": "DISABLED",\r\n\n "timestamp_ns": 2093396806056\r\n\n }')
status code: 200 No error
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
Internal temperature can only be measured with Rev 06 and above sensors.
Phase lock output will not indicate loss of lock if the PTP source is lost.