Update to 2026-09-17 pipeline snapshot; add weights, L20 assets and recording via Git LFS

Source: RGB-D -> Dyn-HaMR -> L20 retargeting -> FoundationPose -> reference repair -> SPIDER,
documented in docs/PIPELINE_LATEST.md and docs/SETUP_AND_WEIGHTS.md. Adds FoundationPose and
nvdiffrast upstream snapshots, requirements/pipeline_venv.txt and the FoundationPose weight
manifest/downloader.

Assets (Git LFS): weights/ (WiLoR detector, HandFlow denoiser, UniDepth-L), FoundationPose
checkpoints, HaMeR checkpoint, Dyn-HaMR HMP model and BMC constraints, L20 URDF/meshes, the
20260915_171525 D405 recording and the two box CADs. MANO models are not redistributed
(third_party/hamer/_DATA/data/mano/README.txt). Environments, caches and run outputs excluded.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
liyang
2026-09-17 11:27:46 +08:00
parent 7e4ef6f98b
commit ae28d55f81
761 changed files with 55598 additions and 59 deletions
+5 -4
View File
@@ -79,17 +79,18 @@ class CalibratedAdaptor(MimicJointKinematicAdaptor):
self.multipliers[i]=slope
return pin_qpos
def build_assets(out):
def build_assets(out, side='right'):
out.mkdir(parents=True,exist_ok=True)
fixed=source.build_model('right',out)
asset=source.REPO_ROOT/'L20'/side.upper()
fixed=source.build_model(side,out)
mj=ET.parse(fixed)
# Preserve both the original URDF and JSON. Adapt only generated files.
eq=mj.getroot().find('equality')
if eq is not None: mj.getroot().remove(eq)
mj.write(fixed)
tree=ET.parse(ASSET/'linkerhand_g20_right.urdf')
tree=ET.parse(asset/f'linkerhand_g20_{side}.urdf')
root=tree.getroot()
for mesh in root.iter('mesh'): mesh.set('filename',str(ASSET/mesh.get('filename')))
for mesh in root.iter('mesh'): mesh.set('filename',str(asset/mesh.get('filename')))
for j in root.findall('joint'):
mimic=j.find('mimic')
if mimic is not None:j.remove(mimic)