遇见数据集

PhysCanvas

收藏
魔搭社区2026-11-01 更新2026-11-01 收录
官方服务:

资源简介:

# PhysCanvas PhysCanvas contains 1,000 unique dual-arm tactile manipulation episodes selected from the Tactile World Model training manifest. All observations were reconstructed from original acquisition videos, timestamps, robot states and Xense tactile point clouds, not from training-cache observations. **Upload status:** the complete release is described by `checksums.json` (1,000 archives, 927,171,761,517 bytes). The initial upload is complete; see `UPLOAD_COMPLETE.json` for the verified inventory. The conversion is complete, but OXT organizer review and submission materials are not yet complete. ## Tasks | Directory | Episodes | Aligned time points | |---|---:|---:| | bottle_cap_rollout | 250 | 58,894 | | jimu_rollout | 250 | 56,097 | | mofang_v2_rollout | 250 | 96,510 | | shiguan_saizi_rollout | 250 | 61,394 | | Total | 1,000 | 272,895 | This release selects exactly 250 episodes per task from the 3,651-episode original-source export, with fixed seed `PhysCanvas-1000-20261028-v1`. Selection is without replacement and does not preferentially select short, successful or warning-free episodes. See `selection_manifest.json` for the reproducible SHA256 ranking and selected indices. The original training manifest has 3,681 entries: 29 references resolve to duplicate raw episodes, and one missing raw episode was explicitly excluded. Archive numbers retain the original manifest index; gaps are intentional. ## Format Each task directory contains `episode_XXXXXX.zip`. Each ZIP contains `episode_XXXXXX.zarr`, a Zarr v2 group with Blosc-zstd compressed chunks. ZIP itself uses ZIP_STORED. These files follow the OXT/FTP-1 array conventions. Refer to the [Open-X-Tactile website](https://open-x-tactile.github.io/) and [OXT contribution and quality-check tools](https://github.com/nolann030628/OXT-QC) for the data format and contribution process. ``` PhysCanvas/ bottle_cap_rollout/*.zip shiguan_saizi_rollout/*.zip jimu_rollout/*.zip mofang_v2_rollout/*.zip previews/*.mp4 checksums.json validation_summary.json README.md ``` Within each episode, T is the number of aligned reference time points: | Group / field | Shape | Meaning | |---|---|---| | data/timestamps | T | Episode-relative seconds; Unix origin in attributes | | data/camera_main_rgb | T,480,640,3 | RGB main camera | | data/left_wrist_camera_rgb, right_wrist_camera_rgb | T,480,640,3 | RGB wrist cameras | | data/{left,right}_arm_joints | T,6 | Measured arm joints, radians | | data/{left,right}_hand_joints | T,1 | Measured gripper opening, meters | | data/{left,right}_hand_joints_idx | T,1 | Gripper convention index 28 | | data/{left,right}_tactile_data_gripper | T,2,400,700,3 | Two G1-WS Difference image streams per side | | data/{left,right}_tactile_data_displacement | T,2,700,3 | Recorded dx,dy,dz; unchanged native SDK units | | data/sub_task_instruction | T | Repeated high-level acquisition task description | | meta/episode_ends | 1 | Exclusive end index T | | alignment/ | varies | Original indices, Unix-ms timestamps, signed errors, drop statistics | | source_streams/ | varies | Original timestamps, robot numerical streams and point clouds at native rates | | extensions/ | varies | Aligned full point clouds, robot velocity/effort and native-frame end-effector poses | Tactile groups include matching area, sensor and type fields. Sensor name is `G1-WS`; Difference is image data and displacement is numerical state. Full point clouds contain x,y,z,dx,dy,dz. No action commands were synthesized from observed states. ## Timestamp alignment Use the common time overlap of all required streams and actual `left_wrist_0` tactile acquisition times as the master timeline. Other streams use nearest recorded observations. A reference row is dropped if any RGB error exceeds 50 ms, tactile error exceeds 75 ms, or robot-state error exceeds 20 ms. This is approximate temporal matching, not a claim of hardware synchronization. No observations are interpolated. Repeated nearest-neighbor selections and original timestamp duplicates are recorded. All source indices and signed time differences are retained. Read timestamps rather than assuming exact 10 Hz. There are 3,154 dropped alignment reference rows in this 1,000-episode release; common-overlap boundary trimming is recorded separately. Difference images and tactile point clouds share the acquisition bundle indices. Source videos were decoded at native resolution, without training-cache resize/crop. Displacements were not clipped, rescaled or baseline-subtracted. ## Validation and limits All 1,000 episodes passed the official metadata/structure precheck. Export verification included decoded-video/timestamp count equality, numeric-array and image readback checks, ZIP CRC, and destination SHA256. See `validation_summary.json`. There are 92 official precheck warnings; a pass does not imply absence of timestamp gaps or complete semantic validation. - Recorded tactile images are SDK Difference images, not raw Rectify images. - Displacement units remain the native SDK units; do not assume meters or millimeters. - Tactile area IDs 0/1 currently follow pad 0/1 order; physical thumb/index mapping requires confirmation before claiming finalized OXT annotation. - End-effector poses use each arm's own base frame and are placed in extensions; they are not standardized world-frame wrist poses. - Four multimodal previews are samples, not a full-dataset visual acceptance test. VLM review and the remaining OXT submission materials are pending. ## Previews Each `previews/<task>.mp4` is a full-length sample. Top row: three RGB cameras. Middle row: four tactile Difference images. Bottom row: numerical tactile displacement rendered as XY arrows with signed dz colors. Panel dt labels show original observation time minus reference time in milliseconds. Playback uses the actual relative timestamps with zero-order hold at 30 fps. `hold` shows the age of a held observation. Flow display scales are fixed within each video and documented in the adjacent JSON. ## Read an episode Use Zarr 2.x: ```python import zarr with zarr.ZipStore("episode_002819.zip", mode="r") as store: episode = zarr.open_group(store, path="episode_002819.zarr", mode="r") t = episode["data/timestamps"][:] rgb = episode["data/camera_main_rgb"][0] tactile = episode["data/left_tactile_data_gripper"][0] displacement = episode["data/left_tactile_data_displacement"][0] ``` Alternatively, unzip the archive and open the extracted `.zarr` directory. The repository license setting is preserved from the dataset owner's existing repository configuration.

提供机构:
maas
创建时间:
2026-10-28
二维码
社区交流群
二维码
科研交流群
商业服务