diff --git a/docs/source/_static/robots/dexforcew1_render.json b/docs/source/_static/robots/dexforcew1_render.json index 830035fbe..80c51c868 100644 --- a/docs/source/_static/robots/dexforcew1_render.json +++ b/docs/source/_static/robots/dexforcew1_render.json @@ -167,17 +167,50 @@ "RIGHT_J7": 0.0 }, "rendered_from_catalog": true, - "image_sha256": "58d18c9a35ad390576a3928a4ff755c633fb88351935c41d7582953ca7ed4f7e", + "image_sha256": "4532f067e0717390cbdf020b7d0fbcf1c56affdff7176552259b9dd4a809dfc8", "asset": { "dataset_id": "DexforceW1V030", "cache_prefix": "DexforceW1V030", "repo_id": "DexForceAI/embodichain_data", "repo_type": "dataset", - "revision": "3544bad4b6f8c7bc4b3263473b4a04e18db20fff", + "revision": "cbaab0e32fdee1c9ecc6e69a1561f9a7b8851e29", "path": "dexforce_w1/v030/w1.zip", - "md5": "74ff7e835160f7309d32ade116172c52", - "sha256": "2cd4b2dbdfa5cbd3238d16e23d927f03a8e7c06f42a29846c633f60a636fc0e5" - } + "md5": "c3fa8994563f729a0e8387e2129a28c1", + "sha256": "5ee5109781efde2c1b57e9d5a544f4eec4dcfd2f591832bd4cb4edf873a51286", + "material_alignment": { + "source_asset": { + "repo_id": "DexForceAI/embodichain_data", + "repo_type": "dataset", + "revision": "3544bad4b6f8c7bc4b3263473b4a04e18db20fff", + "path": "dexforce_w1/v030/w1.zip", + "md5": "74ff7e835160f7309d32ade116172c52", + "sha256": "2cd4b2dbdfa5cbd3238d16e23d927f03a8e7c06f42a29846c633f60a636fc0e5" + }, + "reference_variant": "v021/BrainCo", + "yellow_srgb": [ + 248, + 195, + 73 + ], + "black_srgb": [ + 46, + 46, + 46 + ], + "roughness": 0.408248290463863, + "metallic": 0.0, + "baked_shell_normals": false, + "baked_grille_normals": false, + "geometry_modified": false + } + }, + "capture_date": "2026-10-24", + "runtime": { + "dexsim": "0.5.1+18e1c7f5902ecf20c103ab6d5153528d43395dbd", + "torch": "2.7.1+cu128", + "gpu": "NVIDIA GeForce RTX 5090" + }, + "source_commit": "54870f2549ff4a0363dbb18c5d1fa57fd8e744c3" } }, "source_worktree_modified": true, diff --git a/docs/source/_static/robots/dexforcew1_v030.jpg b/docs/source/_static/robots/dexforcew1_v030.jpg index 905df855e..e3661d7e2 100644 Binary files a/docs/source/_static/robots/dexforcew1_v030.jpg and b/docs/source/_static/robots/dexforcew1_v030.jpg differ diff --git a/docs/source/resources/robot/dexforce_w1.md b/docs/source/resources/robot/dexforce_w1.md index 1c01b2908..39a3d6d5d 100644 --- a/docs/source/resources/robot/dexforce_w1.md +++ b/docs/source/resources/robot/dexforce_w1.md @@ -19,6 +19,9 @@ Both images are captured from the registered robot presets using the same camera, bent-elbow display pose and current `RenderCfg(renderer="rt")` defaults (OfflineRT), with default scene lighting. The display pose is for illustration; it does not change the preset home pose. +V030 uses the V021 yellow (`#F8C349`) and dark +(`#2E2E2E`) plastic palette with matching roughness, retaining V030 geometry +and markings. :::{dropdown} Image rendering settings 960 × 1200; 1 sample per pixel; DLSS offscreen reconstruction (quality 2); @@ -26,6 +29,8 @@ tone mapping off; exposure 1.0; path depths 4–8. The scene uses the default ground and environment emission, with no added direct lights. Camera settings, joint positions and the V030 asset revision are recorded in the [render manifest](../../_static/robots/dexforcew1_render.json). +The manifest also records the V021 material parameters and the published +archive checksums. ::: ## Supported Body Revisions diff --git a/embodichain/data/assets/w1_assets.py b/embodichain/data/assets/w1_assets.py index 7618ab23d..3aa814ba8 100644 --- a/embodichain/data/assets/w1_assets.py +++ b/embodichain/data/assets/w1_assets.py @@ -158,8 +158,9 @@ class DexforceW1V030(EmbodiChainDataset): The archive is published at ``dexforce_w1/v030/w1.zip`` with ``w1/robot.urdf`` and the five component URDFs. Component visuals and - inertials match the corrected full body. Wrist camera and gripper assets - belong to independently assembled attachments. + inertials match the corrected full body. Its yellow and dark plastic + materials match V021. Wrist camera and gripper assets belong to independently + assembled attachments. Args: data_root: Download and extraction cache root. Defaults to the configured @@ -169,7 +170,7 @@ class DexforceW1V030(EmbodiChainDataset): def __init__(self, data_root: str | None = None) -> None: descriptor = o3d.data.DataDescriptor( os.path.join(EMBODICHAIN_DOWNLOAD_PREFIX, w1_assets, "v030", "w1.zip"), - "74ff7e835160f7309d32ade116172c52", + "c3fa8994563f729a0e8387e2129a28c1", ) path = EMBODICHAIN_DEFAULT_DATA_ROOT if data_root is None else data_root super().__init__(type(self).__name__, descriptor, path)