{
  "title": "foxglove.Odometry",
  "description": "An estimate of position, orientation, and velocity for an object or reference frame in 3D space",
  "$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": "Reference coordinate frame (e.g. `map` or `odom`)"
    },
    "body_frame_id": {
      "type": "string",
      "description": "Coordinate frame of the body whose motion is being estimated (e.g. `base_link`)"
    },
    "pose": {
      "title": "foxglove.Pose",
      "description": "Position and orientation of body_frame_id in frame_id",
      "type": "object",
      "properties": {
        "position": {
          "title": "foxglove.Vector3",
          "description": "Point denoting position in 3D space",
          "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"
          ]
        },
        "orientation": {
          "title": "foxglove.Quaternion",
          "description": "Quaternion denoting orientation in 3D space",
          "type": "object",
          "properties": {
            "x": {
              "type": "number",
              "description": "x value"
            },
            "y": {
              "type": "number",
              "description": "y value"
            },
            "z": {
              "type": "number",
              "description": "z value"
            },
            "w": {
              "type": "number",
              "description": "w value"
            }
          },
          "required": [
            "x",
            "y",
            "z",
            "w"
          ]
        }
      },
      "required": [
        "position",
        "orientation"
      ]
    },
    "linear_velocity": {
      "title": "foxglove.Vector3",
      "description": "Linear velocity in m/s in body_frame_id",
      "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"
      ]
    },
    "angular_velocity": {
      "title": "foxglove.Vector3",
      "description": "Angular velocity in rad/s in body_frame_id",
      "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"
      ]
    },
    "pose_covariance": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "minItems": 36,
      "maxItems": 36,
      "description": "Row-major 6x6 covariance matrix (x, y, z, rotation about x, rotation about y, rotation about z). Set to zero if unknown."
    },
    "velocity_covariance": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "minItems": 36,
      "maxItems": 36,
      "description": "Row-major 6x6 covariance matrix (vx, vy, vz, angular rate about x, angular rate about y, angular rate about z). Set to zero if unknown."
    },
    "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 odometry message. Keys must be unique."
    }
  },
  "required": [
    "timestamp",
    "frame_id",
    "body_frame_id",
    "pose"
  ]
}
