thanhndv212/soarm-ws/soarm-lerobot

Claude Code and agent skill by thanhndv212/soarm-ws

Trust tier 3
  • community
  • ext:[{"type":"plugin","description":"Custom plugin integration"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Work in soarm_lerobot — dataset recording and imitation learning for the SO-ARM/SO-101. Use for TeleopRecorder, saving or loading a LeRobotDataset, action chunking, joint normalisation, dataloaders, or ACT / Diffusion Policy training. Read this before promising training works: the soarm-train CLI is a stub — the data pipeline is real, the training loops are not.

Install

npx vskill@latest install thanhndv212/soarm-ws/soarm-lerobot

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

soarm_lerobot — Dataset Recording & Imitation Learning

Path: soarm_lerobot/ · v0.1.0 · setuptools, flat layout · Python ≥3.10 · deps numpy, torch>=2.0, lerobot>=0.4, datasets · extras [train] (diffusers, accelerate, wandb), [dev] (pytest, ruff)

State of the package — check this first

The recording and data pipeline is implemented; the training loops are not.

PieceState
recorder.TeleopRecorder (216 lines)real — buffers teleop frames, saves episodes as a LeRobotDataset
dataset.py (221 lines) — load_dataset, compute_joint_stats, JointNormalizer, ChunkedActionDataset, create_dataloaderreal
config.pyreal (63 lines)
soarm-train act / soarm-train diffusionstubs. Both print their hyperparameters and then "... training not yet implemented." — a TODO(build) in each
soarm-recordthin wrapper: prints a banner and re-launches teleop.py --record

The root AGENTS.md/ARCHITECTURE.md describe data "flowing into ACT or Diffusion Policy training" — that describes the intended path, not working code. Do not report a trained policy from this package; RL training that does run end to end lives in soarm_mjlab (see soarm-mjlab). Wiring up a real ACT loop is the obvious open task.

__init__.py exports only TeleopRecorder.

Recording

Recording happens inside teleop — this package supplies the recorder, not the loop:

bash
cd m5teleop && python teleop.py --servo-port /dev/cu.usbserial-XXXX --record
# or, equivalently, the wrapper:
soarm-record --repo-id thanhndv212/soarm100-teleop-v1 --task "pick the cube"

soarm-record flags: --repo-id (default thanhndv212/soarm100-teleop-v1), --root (default ~/soarm_datasets/<repo-name>), --task, --fps (default 50), --imu-port, --servo-port, --dry-run, --no-sim, --no-rerun. It forwards them to teleop.py rather than duplicating the main loop — keep that delegation; do not grow a second control loop here.

Episodes are delimited by BTN_A on the M5StickC (the same button that toggles teleop). Recording runs at 50 Hz to match the control loop.

The import of TeleopRecorder in teleop.py is wrapped in try/except ImportError — recording is an optional add-on to teleop, not a hard dependency. Preserve that: teleop must keep running for someone who never installed this package.

The data pipeline

dataset.py is what a training loop would consume:

  • load_dataset(...) — open a LeRobotDataset by repo-id/root.
  • compute_joint_stats(ds) → per-joint mean/std arrays.
  • JointNormalizer — normalise/denormalise joint vectors from those stats.
  • ChunkedActionDataset — a torch.utils.data.Dataset yielding action chunks

(the ACT window; --chunk-size default 100).

  • create_dataloader(...) — batching on top.

Training CLI shape, once implemented: soarm-train {act,diffusion} --repo-id … [--root --epochs 500 --batch-size 64 --lr 1e-4 --chunk-size 100].

Testing

No tests — tests/ contains only __init__.py, and there is no CI. The data pipeline is pure-torch/numpy and hardware-free, so it is straightforwardly testable; adding coverage for JointNormalizer and ChunkedActionDataset is the cheapest quality win here. Lint with ruff check (see the caveat in soarm-workspace).

Traps

  • Joint values recorded here come through teleop's ArmInterface, i.e. **lerobot's

frame**, not the URDF frame. Anything that later feeds a planner or a sim policy needs soarm_sdk.calibration.frame — see the joint-frame rule in soarm-start.

  • lerobot>=0.4 is a hard dependency here (unlike in soarm_sdk, where it is an

optional extra with a deferred import).

  • Changelog: soarm_lerobot/CHANGELOG.md.

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
1
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Extension points

  • pluginCustom plugin integration

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/thanhndv212/soarm-ws/soarm-lerobot/badge)](https://verified-skill.com/skills/thanhndv212/soarm-ws/soarm-lerobot)

Something wrong with this skill or its page? Tell us.