# ManiSkill Panda PickCube Python recipe

Grasp a cube and move it to a target with the official Panda motion planner.

Record version: `contrib-a5dd78ad4e1d4e3d` · Hub commit: `01b4b20f7ea55d9e9395915aed4e82c890c4c1c4`

## Exact environment

| Runtime | Robot | Controller | Observation | OS | Python | Evidence |
| --- | --- | --- | --- | --- | --- | --- |
| maniskill 3.0.0b22 | panda | pd_joint_pos | state | linux x86_64 | >=3.10,<3.11 | not_run |

Reads ground-truth object poses, collision geometry and robot state directly from the simulator. Not an RGB-only policy.

Compatibility status: **contributor_reported**. An environment match does not establish task completion. Runtime verification: **not_run**.

## Source and license

- Repository: https://github.com/haosulab/ManiSkill
- Source commit: `33967b9e3ead1f841eec57cc9f31d0d8b8cf0907` (v3.0.0b22)
- Original authors: ManiSkill contributors
- License: [Apache-2.0](https://github.com/haosulab/ManiSkill/blob/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907/LICENSE)
- Source archive SHA256: `d194e39e4f86063f7ea49f25c918ca7474d088ad8d5abdc37573daf4672f86d4`
- Upstream files: `mani_skill/examples/motionplanning/panda/run.py`, `mani_skill/examples/motionplanning/panda/solutions/pick_cube.py`, `LICENSE`
- Upstream contribution rules: https://github.com/haosulab/ManiSkill/tree/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907

## Find, inspect, prepare

```sh
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json find "grasping" --runtime maniskill --runtime-version 3.0.0b22 --robot panda --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json inspect maniskill-panda-pick-cube --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json prepare maniskill-panda-pick-cube --project ./experiment --plan --json
```

Remove `--plan` to download the checksum-verified pinned source and create an isolated project environment. Preparation returns the remaining configuration. Dependency installation is an explicit `--install-deps` step; it can execute package build hooks. Robot simulation is a separate command returned by prepare, never run by find/inspect.

Direct package pins: `torch==2.5.1`, `numpy==1.26.4`, `sapien==3.0.0`, `mplib==0.1.1`, `fast_kinematics==0.2.2`.

Direct dependencies pinned; transitive dependencies resolved by pip and captured in the prepared project. No bit-for-bit environment guarantee.

Hardware: Linux x86_64 CPU; SAPIEN wheel needs glibc >=2.28.

Rendering: disabled explicitly: render_backend=none, render_mode=None, state observations and CPU simulation; graphics paths require separate Vulkan setup.

External API keys: none.

## Invocation contract

Entrypoint: `mani_skill.examples.motionplanning.panda.solutions.pick_cube:solve`.

```json
{
  "argv": [
    "{python}",
    "{recipe_dir}/run.py",
    "--seed",
    "0"
  ],
  "inputs": {
    "task": "PickCube-v1",
    "seed": 0,
    "robot": "panda",
    "controller": "pd_joint_pos",
    "obs_mode": "state",
    "sim_backend": "cpu",
    "render_backend": "none"
  },
  "outputs": {
    "format": "last stdout line JSON",
    "fields": [
      "status",
      "success",
      "elapsed_steps",
      "task",
      "seed",
      "runtime",
      "robot",
      "controller",
      "observation",
      "sim_backend",
      "render_backend"
    ],
    "error_fields": [
      "status",
      "reason_code",
      "error_type",
      "message"
    ]
  }
}
```

Success: PickCube-v1 env info.success is true after upstream solver finishes; adapter exit 0 only when success is true.

Timeout: 180 seconds. Stop after one seed; no retries to conceal failures. Use an external 180-second process timeout.

Failures: Dependency installation unavailable or incompatible; Required Linux mplib wheels unavailable on host OS; Motion planning reports failure or env info.success is false; Runtime exception or asset download failure.

## Actual evidence

Intake structure checks only. Changed recipe runtime, dependency installation, imports and robot tasks were not run by the hub.

Reviewer: Robot Skill Hub API structural intake · 2026-10-17.

Commands/checks actually performed:

- API schema, exact base/source pin, allowlist and strict unified diff checks

Submitted evidence and hub verification remain separate. A schema check, PR creation or merge does not establish task success or publication.

## Reusable fixes

Only actual reusable fixes. Public submission permission and a scoped pilot token are separate requirements. Submission opens a public internal draft PR; it is not publication.

## Recipe notes

The hub wrapper in `recipes/maniskill-panda-pick-cube/run.py` imports the original
ManiSkill `pick_cube.solve` implementation without copying or modifying it. The
original solver reads simulator object poses and uses MPlib motion planning.

The initial target is Linux x86_64 and Python 3.10. State observations and an
explicit CPU simulation backend and `render_backend="none"` are used. Setting
`render_mode=None` alone would leave the upstream GPU rendering backend enabled.
No camera observations, video recorder
or GUI are requested by the hub wrapper. The upstream demo runner has different
rendering defaults; do not substitute its invocation and assume the same hardware
requirements.

The source archive includes upstream LICENSE and any upstream attribution files;
retain them in prepared projects. Follow the original repository's contribution
rules for changes to upstream code. The hub API accepts only its own wrapper,
dependency metadata and documentation paths.

The canonical JSON keeps source inspection and simulator execution evidence in
separate fields. Consult those fields for the exact recorded environment.

## Prepare the source from Windows

Search and source preparation work on Windows even though the simulator target
is Linux. To preserve the pinned source and adapter without attempting an
unsupported simulation environment, use the installed skill directory:

```sh
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json prepare maniskill-panda-pick-cube --project ./pick-cube-source --download-only --json
```

The expected result is `needs_configuration` with
`reason_code: source_ready_runtime_not_prepared` and `next_command: null`.
It verifies the archive SHA-256 and writes a source/recipe lock, but creates no
venv, installs no dependencies and runs no robot task. Use a separate matching
Linux environment for execution; keep the existing research project's lock.

