Robot Skill Hub by Superfast Robotics

DM Control pendulum swingup feedback policy

DM Control pendulum swingup feedback policy. Bounded native-control simulation with privileged state; not a trained policy or hardware deployment.

dmcontrol-pendulum-swingup | Record version: 1.0.0

Record JSON | Markdown recipe | Complete search index

Fetch and prepare

curl -fsSL https://hub.superfastrobotics.com/skills/dmcontrol-pendulum-swingup/skill.json
curl -fsSL https://hub.superfastrobotics.com/skills/dmcontrol-pendulum-swingup/README.md
python /PATH_TO_SKILL/scripts/rsh.py inspect dmcontrol-pendulum-swingup --json
python /PATH_TO_SKILL/scripts/rsh.py prepare dmcontrol-pendulum-swingup --project ./experiment --expected-source-commit 3831fa523c160fe653d83a829d0a0c59715f5725 --expected-record-version 1.0.0 --plan --json

Inspect the requirements, then remove --plan to prepare a project. Preparation verifies the archive SHA256 and preserves exact source pins. --install-deps explicitly installs dependencies. Run the returned simulation command separately.

Environment

Runtime
dm-control 1.0.34
Robot
pendulum
Controller
privileged_state_bounded_feedback
Observation
simulator_state_and_native_reward
OS / architecture
linux / x86_64
Python
>=3.10,<3.11

Compatibility status: hub_verified

Privileged simulator state and declared goals; no perception or real sensor validation.

Requirements

Headless. EGL libraries are required for MuJoCo imports; PushT uses SDL dummy video. No interactive display.

Packages: dm-control==1.0.34, mujoco==3.3.7, numpy==1.26.4

Direct runtime versions are pinned and measured. The receipt retains the complete environment freeze; prepare records the installed environment. System drivers are separate host requirements.

External API keys: none.

Invocation

Executable interface

{
  "version": "1",
  "kind": "task",
  "abstraction_level": 2,
  "execution_domain": "simulation",
  "language": "python",
  "input_transport": "json_file_or_inline",
  "output_transport": "json_stdout",
  "output_selector": "outputs",
  "conventions": {
    "linear_unit": "m",
    "angular_unit": "rad",
    "time_unit": "s",
    "coordinate_frame": "Native pinned DM Control model world frame; no external frame conversion",
    "joint_order": "not_used",
    "quaternion_order": "not_used"
  },
  "input_schema": {
    "type": "object",
    "required": [
      "seed"
    ],
    "properties": {
      "seed": {
        "type": "integer",
        "minimum": 0,
        "maximum": 10000
      }
    },
    "additionalProperties": false
  },
  "output_schema": {
    "type": "object",
    "required": [
      "final_window_mean_reward",
      "final_reward",
      "minimum_window_reward",
      "reward_window",
      "steps",
      "control_effort"
    ],
    "properties": {
      "final_window_mean_reward": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "final_reward": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "minimum_window_reward": {
        "type": "number",
        "minimum": 0,
        "maximum": 1
      },
      "reward_window": {
        "type": "array",
        "minItems": 100,
        "maxItems": 100,
        "items": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      },
      "steps": {
        "type": "integer",
        "minimum": 100,
        "maximum": 1000
      },
      "control_effort": {
        "type": "number",
        "minimum": 0,
        "maximum": 100000
      }
    },
    "additionalProperties": false
  },
  "preconditions": [
    "Use the exact recorded source, Linux Python 3.10 environment and pinned direct packages.",
    "No physical robot, network actuation or external robot credentials."
  ],
  "postconditions": [
    "All reported checks must be true and all output numbers finite.",
    "Success covers the declared goal and frozen cases, not arbitrary tasks or physical hardware."
  ],
  "failure_codes": [
    "invalid_input_or_environment",
    "execution_failed",
    "task_failed"
  ],
  "composition": {
    "depends_on": [],
    "automatic_frame_conversion": false,
    "automatic_hardware_execution": false
  }
}

Entrypoint: python run.py

{
  "argv": [
    "{python}",
    "{recipe_dir}/run.py",
    "--source-dir",
    "{source_dir}",
    "--example"
  ],
  "inputs": {
    "seed": 0
  },
  "outputs": {
    "format": "single JSON object",
    "payload_selector": "outputs",
    "schema": {
      "type": "object",
      "required": [
        "final_window_mean_reward",
        "final_reward",
        "minimum_window_reward",
        "reward_window",
        "steps",
        "control_effort"
      ],
      "properties": {
        "final_window_mean_reward": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "final_reward": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "minimum_window_reward": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "reward_window": {
          "type": "array",
          "minItems": 100,
          "maxItems": 100,
          "items": {
            "type": "number",
            "minimum": 0,
            "maximum": 1
          }
        },
        "steps": {
          "type": "integer",
          "minimum": 100,
          "maximum": 1000
        },
        "control_effort": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000
        }
      },
      "additionalProperties": false
    }
  }
}

Success: All declared goal and finite-state checks pass; exit 0 with task_complete. Mean native task reward over the final 100 control steps >= 0.9 with finite state and nonzero control. Episode rewards are not task-agnostic accuracy.

Timeout: 180 seconds. Terminate the adapter at the recorded timeout. No physical hardware is opened.

Failure modes

Source and license

Repository
https://github.com/google-deepmind/dm_control
Authors
Original dm-control contributors (preserve pinned LICENSE)
Commit
3831fa523c160fe653d83a829d0a0c59715f5725
Archive SHA256
26a454bca7290df5df3376e36b31bb7ef56364fc3a45fc074f83cb3d30e50b5a
License
Apache-2.0
Hub commit
ede75c00118e9808e5099da43c26f4619cc3bc37

Evidence

Runtime: task_complete / task_complete

All 3 frozen cases completed against this exact adapter and source.

Reviewer: Hub finite-case Lambda execution harness | 2026-10-20

Submitter reports and hub verification remain separate. Source review does not establish task success.