# ManiSkill panda_wristcam PlugCharger-v1 motion planner

Grasp a charger, align its pins, and plug it into a receptacle.

Record version: `1.0.0` · Hub commit: `01b4b20f7ea55d9e9395915aed4e82c890c4c1c4`

## Exact environment

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

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

Compatibility status: **source_reviewed**. 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/plug_charger.py`, `mani_skill/envs/tasks/tabletop/plug_charger.py`, `setup.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 "insertion" --runtime maniskill --runtime-version 3.0.0b22 --robot panda_wristcam --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json inspect maniskill-panda-plug-charger --json
python /PATH_TO_SKILL/scripts/rsh.py --catalog https://hub.superfastrobotics.com/catalog/v1/index.json prepare maniskill-panda-plug-charger --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.plug_charger:solve`.

```json
{
  "argv": [
    "{python}",
    "{recipe_dir}/run.py",
    "--seed",
    "0"
  ],
  "inputs": {
    "task": "PlugCharger-v1",
    "seed": 0,
    "robot": "panda_wristcam",
    "controller": "pd_joint_pos",
    "obs_mode": "state",
    "sim_backend": "cpu",
    "render_backend": "none",
    "reward_mode": "sparse"
  },
  "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: PlugCharger-v1 env info.success is true after the upstream solver finishes; exit 0 requires success.

Timeout: 300 seconds. Stop after one seed; no automatic retries. Use an external 300-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

Inspected the pinned solver signature, task registration, source license and wrapper contract. No simulator invocation evidence is attached.

Reviewer: Robot Skill Hub source review · 2026-10-17.

Commands/checks actually performed:

- python tools/import_official_samples.py --archive .local/upstream/maniskill-33967b9.tar.gz --check
- python -m unittest discover -s tests/python -p test_bulk_catalog.py

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.

# ManiSkill panda_wristcam PlugCharger-v1 motion planner

Grasp a charger, align its pins, and plug it into a receptacle.

## Source

- Repository: https://github.com/haosulab/ManiSkill
- Release: v3.0.0b22; commit `33967b9e3ead1f841eec57cc9f31d0d8b8cf0907`
- Solver: [mani_skill.examples.motionplanning.panda.solutions.plug_charger:solve](https://github.com/haosulab/ManiSkill/blob/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907/mani_skill/examples/motionplanning/panda/solutions/plug_charger.py)
- License: [Apache-2.0](https://github.com/haosulab/ManiSkill/blob/33967b9e3ead1f841eec57cc9f31d0d8b8cf0907/LICENSE); robot/mesh assets retain upstream notices.
- Recipe ID: `maniskill-panda-plug-charger`
- Canonical JSON: https://hub.superfastrobotics.com/skills/maniskill-panda-plug-charger/skill.json

## Agent preparation

```sh
python skills/find-robot-skills/scripts/rsh.py inspect maniskill-panda-plug-charger --json
python skills/find-robot-skills/scripts/rsh.py prepare maniskill-panda-plug-charger --project ./experiment --plan --json
python skills/find-robot-skills/scripts/rsh.py prepare maniskill-panda-plug-charger --project ./experiment --download-only --json
```

Run preparation on Linux x86_64 with Python 3.10 for the simulator environment.
Add `--install-deps` explicitly to install dependencies. The returned task command
is a separate execution step. Input is one seed (`--seed 0` by default); output is
a final JSON line with task status and success. Use a 300-second process timeout.

## Environment contract

`maniskill==3.0.0b22`, robot `panda_wristcam`, `pd_joint_pos`, `state` observations,
`cpu` simulation, `render_backend=none`, no video/display, sparse rewards.
The planner reads privileged simulator poses and collision geometry. It is a
simulation example, not a perception policy or a physical robot controller.

The source archive and direct dependency versions are pinned. Transitive Python
dependencies resolve during installation and are captured by the project lock.
The exact source and wrapper contracts were inspected; runtime status is recorded
in the JSON evidence fields. A nonzero exit and JSON error preserve failures.

