{
  "id": "jerk-limited-trajectory",
  "title": "Generate a jerk-limited joint trajectory",
  "query": "offline jerk limited trajectory",
  "runtime": "ruckig",
  "skill_id": "ruckig-offline-trajectory",
  "start_url": "https://api.superfastrobotics.com/v1/start?q=offline+jerk+limited+trajectory&runtime=ruckig&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20",
  "exact_start_url": "https://api.superfastrobotics.com/v1/start?q=ruckig-offline-trajectory&query_mode=all_terms&hub_commit=f97266a5cdd2c600cd376397a54892f08290df20",
  "hub_commit": "f97266a5cdd2c600cd376397a54892f08290df20",
  "record_version": "1.0.0",
  "source_commit": "a8db97a4e9c55e5160a3855f739fa3b270df8e4c",
  "environment": [
    {
      "runtime": "ruckig",
      "runtime_version": "0.19.4",
      "robot": "independent-axes",
      "controller": "json-contract-v1",
      "observation": "explicit-json-input",
      "os": "windows",
      "architecture": "x86_64",
      "python": "3.10",
      "status": "hub_verified"
    },
    {
      "runtime": "ruckig",
      "runtime_version": "0.19.4",
      "robot": "independent-axes",
      "controller": "json-contract-v1",
      "observation": "explicit-json-input",
      "os": "linux",
      "architecture": "x86_64",
      "python": "3.10",
      "status": "hub_verified"
    }
  ],
  "requirements": {
    "python": ">=3.10,<3.11",
    "packages": [
      "ruckig==0.19.4"
    ],
    "hardware": [
      "x86_64 CPU; no GPU or robot required"
    ],
    "rendering": "No display. Matplotlib Agg for numerical imports; PyBullet DIRECT for simulation.",
    "api_keys": [],
    "network": [
      "Pinned source archive once during preparation",
      "PyPI for declared dependency installation"
    ],
    "dependency_lock": "Runtime dependency versions are pinned for the supported Python 3.10 x86_64 CPU environments and checked against execution receipts. Platform-specific wheel hashes are not represented as a universal artifact lock; prepare captures pip freeze."
  },
  "example_input": {
    "current_position": [
      0,
      0,
      0.5
    ],
    "current_velocity": [
      0,
      0,
      0
    ],
    "current_acceleration": [
      0,
      0,
      0
    ],
    "target_position": [
      1,
      -0.5,
      0.25
    ],
    "target_velocity": [
      0,
      0,
      0
    ],
    "target_acceleration": [
      0,
      0,
      0
    ],
    "max_velocity": [
      1,
      1,
      1
    ],
    "max_acceleration": [
      2,
      2,
      2
    ],
    "max_jerk": [
      4,
      4,
      4
    ],
    "dt": 0.01,
    "coordinate_type": "revolute_rad"
  },
  "interface": {
    "version": "1",
    "kind": "trajectory_generator",
    "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": "independent_axes_in_input_array_order",
      "joint_order": "input_array_order",
      "quaternion_order": "not_used"
    },
    "input_schema": {
      "type": "object",
      "required": [
        "current_position",
        "current_velocity",
        "current_acceleration",
        "target_position",
        "target_velocity",
        "target_acceleration",
        "max_velocity",
        "max_acceleration",
        "max_jerk",
        "dt",
        "coordinate_type"
      ],
      "additionalProperties": false,
      "properties": {
        "current_position": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m_or_rad",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "current_position; units=coordinate_type:m_or_rad; frame=independent_axes_in_input_array_order"
        },
        "current_velocity": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s_or_rad/s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "current_velocity; units=coordinate_type:m/s_or_rad/s; frame=independent_axes_in_input_array_order"
        },
        "current_acceleration": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s^2_or_rad/s^2",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "current_acceleration; units=coordinate_type:m/s^2_or_rad/s^2; frame=independent_axes_in_input_array_order"
        },
        "target_position": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m_or_rad",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "target_position; units=coordinate_type:m_or_rad; frame=independent_axes_in_input_array_order"
        },
        "target_velocity": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s_or_rad/s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "target_velocity; units=coordinate_type:m/s_or_rad/s; frame=independent_axes_in_input_array_order"
        },
        "target_acceleration": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s^2_or_rad/s^2",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "target_acceleration; units=coordinate_type:m/s^2_or_rad/s^2; frame=independent_axes_in_input_array_order"
        },
        "max_velocity": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s_or_rad/s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "max_velocity; units=coordinate_type:m/s_or_rad/s; frame=independent_axes_in_input_array_order"
        },
        "max_acceleration": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s^2_or_rad/s^2",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "max_acceleration; units=coordinate_type:m/s^2_or_rad/s^2; frame=independent_axes_in_input_array_order"
        },
        "max_jerk": {
          "type": "array",
          "minItems": 1,
          "maxItems": 8,
          "items": {
            "type": "number",
            "minimum": -10,
            "maximum": 10
          },
          "x-unit": "coordinate_type:m/s^3_or_rad/s^3",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "max_jerk; units=coordinate_type:m/s^3_or_rad/s^3; frame=independent_axes_in_input_array_order"
        },
        "dt": {
          "type": "number",
          "minimum": 0.01,
          "maximum": 0.05,
          "x-unit": "s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "dt; units=s; frame=independent_axes_in_input_array_order"
        },
        "coordinate_type": {
          "type": "string",
          "enum": [
            "revolute_rad",
            "linear_m"
          ],
          "x-unit": "dimensionless",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "coordinate_type; units=dimensionless; frame=independent_axes_in_input_array_order"
        }
      }
    },
    "output_schema": {
      "type": "object",
      "required": [
        "time_s",
        "position",
        "velocity",
        "acceleration",
        "coordinate_type",
        "duration_s"
      ],
      "additionalProperties": false,
      "properties": {
        "time_s": {
          "type": "array",
          "minItems": 2,
          "maxItems": 3000,
          "items": {
            "type": "number",
            "minimum": 0,
            "maximum": 150
          },
          "x-unit": "s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "time_s; units=s; frame=independent_axes_in_input_array_order"
        },
        "position": {
          "type": "array",
          "minItems": 2,
          "maxItems": 3000,
          "items": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "number",
              "minimum": -10000,
              "maximum": 10000
            }
          },
          "x-unit": "coordinate_type:m_or_rad",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "position; units=coordinate_type:m_or_rad; frame=independent_axes_in_input_array_order"
        },
        "velocity": {
          "type": "array",
          "minItems": 2,
          "maxItems": 3000,
          "items": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "number",
              "minimum": -1000,
              "maximum": 1000
            }
          },
          "x-unit": "coordinate_type:m/s_or_rad/s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "velocity; units=coordinate_type:m/s_or_rad/s; frame=independent_axes_in_input_array_order"
        },
        "acceleration": {
          "type": "array",
          "minItems": 2,
          "maxItems": 3000,
          "items": {
            "type": "array",
            "minItems": 1,
            "maxItems": 8,
            "items": {
              "type": "number",
              "minimum": -1000,
              "maximum": 1000
            }
          },
          "x-unit": "coordinate_type:m/s^2_or_rad/s^2",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "acceleration; units=coordinate_type:m/s^2_or_rad/s^2; frame=independent_axes_in_input_array_order"
        },
        "coordinate_type": {
          "type": "string",
          "enum": [
            "revolute_rad",
            "linear_m"
          ],
          "x-unit": "dimensionless",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "coordinate_type; units=dimensionless; frame=independent_axes_in_input_array_order"
        },
        "duration_s": {
          "type": "number",
          "minimum": 0,
          "maximum": 150,
          "x-unit": "s",
          "x-frame": "independent_axes_in_input_array_order",
          "description": "duration_s; units=s; frame=independent_axes_in_input_array_order"
        }
      }
    },
    "preconditions": [
      "Ruckig Community 0.19.4; no cloud client, IK, collision or physical control.",
      "All axes share coordinate_type; m or rad and corresponding derivatives per second.",
      "Velocity/stop modes do not guarantee target position. Maximum 3000 online cycles or 30 s offline trajectory."
    ],
    "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": [
      "ruckig-examples-02-position-offline-py"
    ],
    "origin_relationship": "adapted_from; inspect declared model and inputs, not original robot compatibility"
  },
  "completion": {
    "success_condition": "Exit 0, status=task_complete, success=true, finite outputs satisfying interface.output_schema and all declared numerical/model checks. This is not a physical robot or general task-success claim.",
    "timeout_seconds": 30,
    "failure_modes": [
      "Invalid or oversized JSON",
      "Source checksum mismatch",
      "Unavailable pinned dependency",
      "No valid path or postcondition failure",
      "Execution exceeding the declared bounded algorithm budget"
    ],
    "stop_condition": "Caller must terminate the separate adapter process after 30 seconds; adapters bound iterations/scene steps and close simulation clients."
  },
  "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 ruckig"
    ],
    "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/f97266a5cdd2c600cd376397a54892f08290df20/evidence/runtime/executable-conversions-v1/ruckig-offline-trajectory.json"
    ],
    "runtime_verification": "task_complete",
    "contributor_reported": null,
    "hub_verification": {
      "runtime": "task_complete",
      "scope": "computation",
      "case_count": 3,
      "source_unchanged": true
    }
  },
  "current_execution_state": "completed",
  "sample_url": "https://hub.superfastrobotics.com/samples/ruckig-offline-trajectory/",
  "execution_performed": false,
  "sharing_performed": false
}
