Files
salmanoff/docs/livox-gen1-lidar-dap-spec.md
T

7.7 KiB

LivoxGen1Lidar Device Attachment Protocol (DAP) Specification

Overview

The LivoxGen1Lidar DAP specification defines how to attach to Livox Gen1 LiDAR devices and access their various data streams using a unified API with mode-based parameter selection.

API Structure

The LivoxGen1Lidar DAP uses a unified API name livoxGen1 with mode-based parameters to specify which data interface to present.

Device Attachment Specifications

1. Point Cloud Intensity Data Device (Interoceptor)

Purpose: Provides light intensity/reflectivity data from the LiDAR point cloud.

Syntax:

+idev | avia0 | structural-implexor | livoxGen1(mode=pointCloudIntensity) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39

Alternative Syntax (all equivalent):

+idev | avia0 | structural-implexor | livoxGen1(stim=pcloudIntensity) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39
+idev | avia0 | structural-implexor | livoxGen1(affordance=pCloudI) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39

Mode Parameter Values (synonymous):

  • pointCloudIntensity
  • pcloudIntensity
  • pCloudIntensity
  • pCloudI
  • pcloudI

2. Point Cloud Coordinate Data Device (Extrospector)

Purpose: Provides spatial coordinate data from the LiDAR point cloud.

Syntax:

+edev | avia0 | structural-implexor | livoxGen1(mode=pcloud,format=xyz) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39

Mode Parameter Values (synonymous):

  • pcloud
  • pCloud
  • pointCloud

Format Parameter (for point cloud modes):

  • xyz: Standard Cartesian coordinates (X, Y, Z)
  • spherical: Raw spherical coordinates
  • spherical-cartesian: Spherical coordinates converted to Cartesian
  • dual-cartesian: Dual Cartesian coordinate system
  • dual-spherical: Dual spherical coordinate system

Alternative Format Parameter Names (synonymous):

  • format or fmt

3. IMU Gyroscope Data Device (Interoceptor)

Purpose: Provides gyroscope data from the LiDAR's internal IMU.

Syntax:

+idev | avia0 | gyro-implexor | livoxGen1(mode=gyro) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39

Mode Parameter Values:

  • gyro

4. IMU Accelerometer Data Device (Interoceptor)

Purpose: Provides accelerometer data from the LiDAR's internal IMU.

Syntax:

+idev | avia0 | accel-implexor | livoxGen1(mode=accel) | livoxProto1(handshake-timeout-ms=1000,retry-delay-ms=3000,smo-ip=192.168.1.50,smo-subnet-nbits=24) | 3JEDK380010Z39

Mode Parameter Values:

  • accel

Provider Parameters

livoxProto1 Provider

The livoxProto1 provider accepts the following parameters:

handshake-timeout-ms (optional):

  • Specifies the timeout for handshake operations when connecting to devices
  • Value: Integer number of milliseconds
  • Example: handshake-timeout-ms=1000 (1 second timeout)
  • Default: 1000ms if not specified

retry-delay-ms (optional):

  • Specifies how long to wait for broadcast messages to arrive after attempting an initial direct connection
  • Value: Integer number of milliseconds
  • Example: retry-delay-ms=3000 (wait 3 seconds)
  • Default: 3000ms if not specified

subnet (optional):

  • Specifies the IP subnet for device IP address calculation
  • Value: IP address in the form X.X.0.0 where non-subnet bits must be 0
  • Example: subnet=10.42.0.0 (use 10.42.x.x subnet)
  • Default: 0.0.0.0 (use default 192.168.1.x subnet)

data-port (optional):

  • Specifies the UDP port for receiving point cloud data from the device
  • Value: Integer port number
  • Example: data-port=56000
  • Default: 56000 if not specified

cmd-port (optional):

  • Specifies the UDP port for receiving command responses from the device
  • Value: Integer port number
  • Example: cmd-port=56001
  • Default: 56001 if not specified

imu-port (optional):

  • Specifies the UDP port for receiving IMU data from the device
  • Value: Integer port number
  • Example: imu-port=56002
  • Default: 56002 if not specified

Parameter Summary

Mode/Stim/Affordance Parameter Values

Data Type Mode Values Description
Point Cloud Intensity pointCloudIntensity, pcloudIntensity, pCloudIntensity, pCloudI, pcloudI Light intensity/reflectivity data
Point Cloud Coordinates pcloud, pCloud, pointCloud Spatial coordinate data
Gyroscope gyro Angular velocity measurements
Accelerometer accel Linear acceleration measurements

Format Parameter Values (for point cloud modes)

Format Description
xyz Standard Cartesian coordinates (X, Y, Z)
spherical Raw spherical coordinates (range, azimuth, elevation)
spherical-cartesian Spherical coordinates converted to Cartesian
dual-cartesian Dual Cartesian coordinate system
dual-spherical Dual spherical coordinate system

Device Discovery and Connection

The specification uses a retry-based connection strategy with two different approaches:

Connection Methods

1. Broadcast-Based Connection (connectToKnownDeviceReq)

  • Uses device IP addresses discovered from broadcast advertisements
  • smo-ip parameter: Optional - if omitted, driver auto-detects the appropriate interface
  • smo-subnet-nbits parameter: Optional - used for validation if smo-ip is provided
  • When to use: When devices are actively broadcasting their presence

2. Heuristic Connection (connectByDeviceIdentifierReq)

  • Generates device IP addresses from serial numbers using network prefix
  • smo-ip parameter: Required - needed to determine network prefix for IP generation
  • smo-subnet-nbits parameter: Required - needed to calculate valid device IP addresses
  • When to use: When devices are not broadcasting or for initial setup

Connection Strategy

  1. Initial Check: Check if device is already known from broadcasts
  2. Direct Connect: Attempt direct connection based on calculated IP address
  3. Retry Wait: If direct connect fails, wait for retry-delay-ms for broadcast messages
  4. Final Check: Check known devices again after retry delay
  5. Report Result: Success or failure based on final check

Data Formats

Point Cloud Coordinate Formats

  1. XYZ Format: Standard 3D Cartesian coordinates

    • X, Y, Z in meters
    • Standard coordinate system orientation
  2. Spherical Format: Raw spherical coordinates

    • Range (distance) in meters
    • Azimuth angle in degrees/radians
    • Elevation angle in degrees/radians
  3. Spherical-Cartesian Format: Spherical coordinates converted to Cartesian

    • Range, azimuth, elevation converted to X, Y, Z
    • Maintains spherical measurement precision
  4. Dual Formats: Support for dual-coordinate systems

    • Useful for devices with multiple measurement modes
    • Provides redundancy and validation capabilities

Intensity Data

  • Reflectivity values typically in the range 0-255
  • Normalized intensity measurements
  • Calibrated for material reflectivity analysis

IMU Data

  • Gyroscope: Angular velocity measurements (rad/s)
  • Accelerometer: Linear acceleration measurements (m/s²)
  • Timestamped data synchronized with point cloud measurements

Error Handling

The specification includes comprehensive error handling for:

  • Network connectivity issues
  • Device communication timeouts
  • Invalid coordinate format requests
  • IMU data stream interruptions
  • Device discovery failures
  • Connection retry timeouts