| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: refactor transform pipeline, align architecture docs, add data module design doc - Refactor TransformStep base class and TransformRegistry to support from_config with TransformContext injection; move pipeline helpers into registry and separate images/resize transforms into own modules - Update loader.py to resolve transform inputs from model profile, build TransformContext from recipe + schema + norm_stats - Refactor ACT adapter to use lerobot ACTConfig directly with dynamically built input_features from DataSchema cameras - Remove "Training Artifacts Are Deployable" section from architecture docs; renumber §2.5 to "Dependencies Are Installed On Demand"; move SVG diagrams to docs/graph/, move architecture-text.md to docs/graph/ - Add docs/modules/data-module.md and data-module.cn.md covering data module design: layer responsibilities, Canonical IR, format reader protocol, LeRobot V3 reader, transform pipeline, sampling, batch contract, Observation container, deployment metadata reuse, extension guide, design constraints | 15 天前 | |
feat: refactor transform pipeline, align architecture docs, add data module design doc - Refactor TransformStep base class and TransformRegistry to support from_config with TransformContext injection; move pipeline helpers into registry and separate images/resize transforms into own modules - Update loader.py to resolve transform inputs from model profile, build TransformContext from recipe + schema + norm_stats - Refactor ACT adapter to use lerobot ACTConfig directly with dynamically built input_features from DataSchema cameras - Remove "Training Artifacts Are Deployable" section from architecture docs; renumber §2.5 to "Dependencies Are Installed On Demand"; move SVG diagrams to docs/graph/, move architecture-text.md to docs/graph/ - Add docs/modules/data-module.md and data-module.cn.md covering data module design: layer responsibilities, Canonical IR, format reader protocol, LeRobot V3 reader, transform pipeline, sampling, batch contract, Observation container, deployment metadata reuse, extension guide, design constraints | 15 天前 | |
feat: refactor transform pipeline, align architecture docs, add data module design doc - Refactor TransformStep base class and TransformRegistry to support from_config with TransformContext injection; move pipeline helpers into registry and separate images/resize transforms into own modules - Update loader.py to resolve transform inputs from model profile, build TransformContext from recipe + schema + norm_stats - Refactor ACT adapter to use lerobot ACTConfig directly with dynamically built input_features from DataSchema cameras - Remove "Training Artifacts Are Deployable" section from architecture docs; renumber §2.5 to "Dependencies Are Installed On Demand"; move SVG diagrams to docs/graph/, move architecture-text.md to docs/graph/ - Add docs/modules/data-module.md and data-module.cn.md covering data module design: layer responsibilities, Canonical IR, format reader protocol, LeRobot V3 reader, transform pipeline, sampling, batch contract, Observation container, deployment metadata reuse, extension guide, design constraints | 15 天前 | |
feat: integrate RoboTwin 2.0 — native hdf5 reader, serve platform, docs Data layer - formats/robotwin.py: read RoboTwin native episode hdf5 directly (no conversion step). Concatenates /joint_action as the fixed qpos order [left_arm, left_gripper, right_arm, right_gripper] so it matches take_action(action_type='qpos') at deploy time; state[t]=qpos[t], action[t]=qpos[t+1] per RoboTwin/ACT convention. RoboTwin ships no precomputed stats, so get_norm_stats scans the joint trajectories and emits mean/std/min/max plus q01/q99 (the quantile pair pi05 normalisation needs). - codec/hdf5_jpeg.py: decode the per-frame JPEG byte streams embedded in the hdf5. VideoRef gains a stream selector so one container can hold several camera streams (MP4 datasets keep stream=None, RoboTwin carries the camera name and the codec reads /observation/{stream}/rgb). - dataset.py: skip non-tensor metadata when collating. ACT on RoboTwin keeps a raw task string with no tokenizer transform to consume it; it is not a model input and must not reach torch.stack. Deploy layer - deploy/robotwin_server.py: RoboTwin-compatible raw-TCP model server, so the SAPIEN simulator and the model keep separate environments. - deploy/robotwin_adapter.py: native RoboTwin observation → ObsDict. Cameras are selected by the checkpoint schema's camera_keys rather than a hand-edited list, and a missing camera or state-dim mismatch fails loudly instead of silently degrading. - deploy/robotwin_connector.py: the module RoboTwin imports as its policy. Deliberately import-free so it runs inside the SAPIEN environment with no VLA Factory dependencies installed; loaded via PYTHONPATH, so nothing is copied into the RoboTwin checkout. - deploy/configs/robotwin.yml: the minimal bootstrap config RoboTwin's eval_policy_client.py requires. It lives beside the connector rather than under examples/ — it is not a user-facing sample but a runtime artifact of the deploy layer, and it only names the connector: the model and checkpoint stay server-side. - cli.py: serve --platform robotwin plus --host/--port. RoboTwin executes a full chunk per get_action, so the platform forces the synchronous strategy. Training - train.py: pass save_safetensors only when the installed transformers still accepts it. The flag is gone in transformers >=5, and pi0 (4.x) and ACT (5.x via lerobot) live in different environments — both must construct TrainingArguments cleanly. Recipes, docs, packaging - examples/act_robotwin.yaml: ACT-on-RoboTwin training recipe, with a repo-relative data path (no machine-specific absolute path). - README.md / README.cn.md: a RoboTwin Platform section covering the two-environment setup, starting the model server, and driving RoboTwin's eval client. Documented in the READMEs rather than a per-example file so the platform flow is discoverable next to the other supported platforms. - docs/architecture/robotwin-integration-options.cn.md: the integration-option comparison behind the external-connector decision. - pyproject: [robotwin] extra (h5py only — the simulator is not a framework dependency). - .gitignore: virtualenvs, the vendored third-party skills checkout (a separate repo, not a submodule), and Claude Code per-user state. Tests - test_robotwin_reader.py, test_robotwin_server.py. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> | 1 天前 |