{
  "schema_version": "1",
  "interpretation": "data_only",
  "hub_commit": "ede75c00118e9808e5099da43c26f4619cc3bc37",
  "skill_id": "pythonrobotics-ekf-velocity-update",
  "name": "Velocity-corrected extended Kalman localization update",
  "example_input": {
    "state": [
      0,
      0,
      0,
      1,
      1.0
    ],
    "covariance": [
      [
        0.1,
        0.0,
        0.0,
        0.0,
        0.0
      ],
      [
        0.0,
        0.1,
        0.0,
        0.0,
        0.0
      ],
      [
        0.0,
        0.0,
        0.1,
        0.0,
        0.0
      ],
      [
        0.0,
        0.0,
        0.0,
        0.1,
        0.0
      ],
      [
        0.0,
        0.0,
        0.0,
        0.0,
        0.1
      ]
    ],
    "measurement_xy": [
      0.15,
      0.02
    ],
    "control_v_yawrate": [
      1,
      0.1
    ]
  },
  "environment": [
    {
      "runtime": "pythonrobotics",
      "runtime_version": "cdd0cc888802",
      "robot": "mathematical-model",
      "controller": "json-contract-v1",
      "observation": "explicit-json-input",
      "os": "windows",
      "architecture": "x86_64",
      "python": "3.10",
      "status": "hub_verified"
    },
    {
      "runtime": "pythonrobotics",
      "runtime_version": "cdd0cc888802",
      "robot": "mathematical-model",
      "controller": "json-contract-v1",
      "observation": "explicit-json-input",
      "os": "linux",
      "architecture": "x86_64",
      "python": "3.10",
      "status": "hub_verified"
    }
  ],
  "interface": {
    "version": "1",
    "kind": "algorithm",
    "abstraction_level": 0,
    "execution_domain": "computation",
    "language": "python",
    "input_transport": "json_file_or_inline",
    "output_transport": "json_stdout",
    "conventions": {
      "linear_unit": "m",
      "angular_unit": "rad",
      "time_unit": "s",
      "coordinate_frame": "planar_map_xy",
      "joint_order": "not_used",
      "quaternion_order": "not_used"
    },
    "input_schema": {
      "type": "object",
      "required": [
        "state",
        "covariance",
        "measurement_xy",
        "control_v_yawrate"
      ],
      "additionalProperties": false,
      "properties": {
        "state": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": {
            "type": "number",
            "minimum": -100,
            "maximum": 100
          },
          "x-unit": "mixed",
          "x-frame": "planar_map_xy",
          "x-order": [
            "x_m",
            "y_m",
            "yaw_rad",
            "speed_m_s",
            "velocity_scale"
          ],
          "description": "Five-state velocity-scale model; component order=x_m,y_m,yaw_rad,speed_m_s,velocity_scale"
        },
        "covariance": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": {
            "type": "array",
            "minItems": 5,
            "maxItems": 5,
            "items": {
              "type": "number",
              "minimum": -100,
              "maximum": 100
            }
          },
          "x-unit": "state_units_outer_product",
          "x-frame": "planar_map_xy",
          "x-order": [
            "x_m",
            "y_m",
            "yaw_rad",
            "speed_m_s",
            "velocity_scale"
          ],
          "description": "Five-state velocity-scale model; component order=x_m,y_m,yaw_rad,speed_m_s,velocity_scale"
        },
        "measurement_xy": {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "type": "number",
            "minimum": -100.0,
            "maximum": 100.0
          },
          "x-unit": "m",
          "x-frame": "planar_map_xy",
          "x-order": [
            "x",
            "y"
          ],
          "description": "measurement_xy; units=m; frame=planar_map_xy; component order=x,y"
        },
        "control_v_yawrate": {
          "type": "array",
          "minItems": 2,
          "maxItems": 2,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "mixed",
          "x-frame": "planar_map_xy",
          "x-order": [
            "speed_m_s",
            "yaw_rate_rad_s"
          ],
          "description": "control_v_yawrate; units=mixed; frame=planar_map_xy; component order=speed_m_s,yaw_rate_rad_s"
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "state_xy_yaw_v_scale",
        "covariance"
      ],
      "additionalProperties": false,
      "properties": {
        "covariance": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": {
            "type": "array",
            "minItems": 5,
            "maxItems": 5,
            "items": {
              "type": "number",
              "minimum": -10000,
              "maximum": 10000
            }
          },
          "x-unit": "state_units_outer_product",
          "x-frame": "planar_map_xy",
          "x-order": [
            "x_m",
            "y_m",
            "yaw_rad",
            "speed_m_s",
            "velocity_scale"
          ],
          "description": "Five-state velocity-scale model; component order=x_m,y_m,yaw_rad,speed_m_s,velocity_scale"
        },
        "state_xy_yaw_v_scale": {
          "type": "array",
          "minItems": 5,
          "maxItems": 5,
          "items": {
            "type": "number",
            "minimum": -10000,
            "maximum": 10000
          },
          "x-unit": "mixed",
          "x-frame": "planar_map_xy",
          "x-order": [
            "x_m",
            "y_m",
            "yaw_rad",
            "speed_m_s",
            "velocity_scale"
          ],
          "description": "Five-state velocity-scale model; component order=x_m,y_m,yaw_rad,speed_m_s,velocity_scale"
        }
      }
    },
    "preconditions": [
      "Five-state model [x_m,y_m,yaw_rad,speed_m_s,velocity_scale]; dt=0.1 s and pinned upstream process/noise model.",
      "Input covariance must be symmetric positive definite.",
      "Output covariance consistency does not establish estimation accuracy on real sensor data."
    ],
    "postconditions": [
      "All declared checks must pass and all outputs must be finite.",
      "Success applies only to this operation and model, not higher-level task completion."
    ],
    "failure_codes": [
      "invalid_input_or_environment",
      "execution_failed",
      "task_failed"
    ],
    "composition": {
      "depends_on": [],
      "automatic_frame_conversion": false,
      "automatic_hardware_execution": false
    },
    "output_selector": "outputs",
    "origin_reference_ids": [],
    "origin_relationship": "adapted_from; inspect declared model and inputs, not original robot compatibility"
  },
  "source_commit": "cdd0cc888802b584c2d654ca85e3c5460973487d",
  "record_version": "1.0.0",
  "evidence": {
    "level": "task_complete",
    "verified_by": "Hub maintainer runtime harness",
    "date": "2026-10-19",
    "environment": {
      "scope": "computation",
      "platforms": [
        "linux",
        "windows"
      ],
      "physical_robot": false
    },
    "commands": [
      "python tools/verify_executable_recipes.py --source-cache SOURCE_CACHE --output OUTPUT --backend pythonrobotics"
    ],
    "result": "Three frozen positive cases passed against this exact adapter; see per-case receipts. This does not estimate general accuracy.",
    "artifacts": [
      "https://raw.githubusercontent.com/Superfast-Robotics/robot-skill-hub/ede75c00118e9808e5099da43c26f4619cc3bc37/evidence/runtime/executable-conversions-v1/pythonrobotics-ekf-velocity-update.json"
    ],
    "runtime_verification": "task_complete",
    "contributor_reported": null,
    "hub_verification": {
      "runtime": "task_complete",
      "scope": "computation",
      "case_count": 3,
      "source_unchanged": true
    }
  },
  "record_url": "https://hub.superfastrobotics.com/skills/pythonrobotics-ekf-velocity-update/skill.json",
  "inspect_url": "https://api.superfastrobotics.com/v1/skills/pythonrobotics-ekf-velocity-update?hub_commit=ede75c00118e9808e5099da43c26f4619cc3bc37&record_version=1.0.0&include=experience",
  "execution_performed": false
}
