Schemas / I/O

rig.sensor.lidar

v1.0.0 · stable maturity: draft 11 fields 0 required

Fields

FieldTypeMeaning
pattern enumspin · solid-state · flash optional Optional. spin, solid-state, flash. Absent = spin
channels integer1 – * optional Optional. Vertical samples. Absent = host default
columns integer1 – * optional Optional. Horizontal samples per revolution (spin) or per frame. Absent = host default
fovXDegrees number0 – 360 optional Optional. Horizontal field, 0-360, centered on forward. Absent = 360 when pattern is spin, otherwise the host default
fovYDegrees number0 – 180 optional Optional. Vertical field, 0-180. Absent = host default
fovYCenterDegrees float optional Optional. Vertical center, degrees above the local horizontal. Absent = 0
rangeMin number0 – * optional Optional. Nearest return, scene units. Absent = 0
rangeMax number> 0 optional Optional. Farthest return, scene units. Absent = host default
rateHz number> 0 optional Optional. Revolutions per second when spin, frames per second otherwise. Absent = host default
returns integer1 – * optional Optional. Echoes kept per ray. Absent = 1
device entity optional Optional board / network entity; absent = local

Lidar scan pattern. Format when present. Pose is rig.spatial.transform.

Yaw is about local +Y. Forward is local −Z, the same axis as a camera. rangeMax is greater than rangeMin when both are set. A host that sees otherwise skips the sensor.

The point cloud, per-channel elevation table, and the echo samples stay in the host. returns is how many to keep, not the samples. A ROS 2 node entity is a valid device - docs/ros.md.

JSON Schema

Resolves at https://rig.works/schemas/rig.sensor.lidar.schema.json — raw file.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://rig.works/schemas/rig.sensor.lidar.schema.json",
  "title": "rig.sensor.lidar",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "pattern": {
      "type": "string",
      "enum": [
        "spin",
        "solid-state",
        "flash"
      ]
    },
    "channels": {
      "type": "integer",
      "minimum": 1
    },
    "columns": {
      "type": "integer",
      "minimum": 1
    },
    "fovXDegrees": {
      "type": "number",
      "minimum": 0,
      "maximum": 360
    },
    "fovYDegrees": {
      "type": "number",
      "minimum": 0,
      "maximum": 180
    },
    "fovYCenterDegrees": {
      "$ref": "./_defs.schema.json#/$defs/float"
    },
    "rangeMin": {
      "type": "number",
      "minimum": 0
    },
    "rangeMax": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "rateHz": {
      "type": "number",
      "exclusiveMinimum": 0
    },
    "returns": {
      "type": "integer",
      "minimum": 1
    },
    "device": {
      "$ref": "./_defs.schema.json#/$defs/entity"
    }
  },
  "x-rig-maturity": "draft"
}

Seen in

robot-lesson.json