{
  "title": "foxglove.LocationFix",
  "description": "A navigation satellite fix for any Global Navigation Satellite System",
  "$comment": "Generated by https://github.com/foxglove/foxglove-sdk",
  "type": "object",
  "properties": {
    "timestamp": {
      "type": "object",
      "title": "time",
      "properties": {
        "sec": {
          "type": "integer",
          "minimum": 0
        },
        "nsec": {
          "type": "integer",
          "minimum": 0,
          "maximum": 999999999
        }
      },
      "description": "Timestamp of the message"
    },
    "frame_id": {
      "type": "string",
      "description": "Frame for the sensor. Latitude and longitude readings are at the origin of the frame."
    },
    "latitude": {
      "type": "number",
      "description": "Latitude in degrees"
    },
    "longitude": {
      "type": "number",
      "description": "Longitude in degrees"
    },
    "altitude": {
      "type": "number",
      "description": "Altitude in meters"
    },
    "position_covariance": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "minItems": 9,
      "maxItems": 9,
      "description": "Position covariance (m^2) defined relative to a tangential plane through the reported position. The components are East, North, and Up (ENU), in row-major order."
    },
    "position_covariance_type": {
      "title": "foxglove.PositionCovarianceType",
      "description": "If `position_covariance` is available, `position_covariance_type` must be set to indicate the type of covariance.",
      "oneOf": [
        {
          "title": "UNKNOWN",
          "const": 0,
          "description": "Unknown position covariance type"
        },
        {
          "title": "APPROXIMATED",
          "const": 1,
          "description": "Position covariance is approximated"
        },
        {
          "title": "DIAGONAL_KNOWN",
          "const": 2,
          "description": "Position covariance is per-axis, so put it along the diagonal"
        },
        {
          "title": "KNOWN",
          "const": 3,
          "description": "Position covariance of the fix is known"
        }
      ]
    },
    "heading": {
      "type": "number",
      "description": "Heading (yaw angle), in radians, measured clockwise from north"
    },
    "velocity": {
      "title": "foxglove.Vector3",
      "description": "Velocity in local East-North-Up (ENU) frame in m/s",
      "type": "object",
      "properties": {
        "x": {
          "type": "number",
          "description": "x component"
        },
        "y": {
          "type": "number",
          "description": "y component"
        },
        "z": {
          "type": "number",
          "description": "z component"
        }
      },
      "required": [
        "x",
        "y",
        "z"
      ]
    },
    "color": {
      "title": "foxglove.Color",
      "description": "Color used to visualize the location",
      "type": "object",
      "properties": {
        "r": {
          "type": "number",
          "description": "Red value between 0 and 1"
        },
        "g": {
          "type": "number",
          "description": "Green value between 0 and 1"
        },
        "b": {
          "type": "number",
          "description": "Blue value between 0 and 1"
        },
        "a": {
          "type": "number",
          "description": "Alpha value between 0 and 1"
        }
      },
      "required": [
        "r",
        "g",
        "b",
        "a"
      ]
    },
    "metadata": {
      "type": "array",
      "items": {
        "title": "foxglove.KeyValuePair",
        "description": "A key with its associated value",
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Key"
          },
          "value": {
            "type": "string",
            "description": "Value"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "description": "Additional user-provided metadata associated with the location fix. Keys must be unique."
    }
  },
  "required": [
    "timestamp",
    "frame_id",
    "latitude",
    "longitude",
    "altitude",
    "position_covariance",
    "position_covariance_type"
  ]
}
