"""Check for gaps/height-mismatches at every belt-to-belt handoff seam, and compare plow_cell.usd's own reference grip-material setup against what we're using.""" import omni.usd from pxr import Usd, UsdGeom, UsdShade, UsdPhysics stage = omni.usd.get_context().get_stage() bbc = UsdGeom.BBoxCache(Usd.TimeCode.Default(), [UsdGeom.Tokens.default_, UsdGeom.Tokens.render]) def report(path): prim = stage.GetPrimAtPath(path) if not prim.IsValid(): print(f" {path} MISSING"); return None r = bbc.ComputeWorldBound(prim).ComputeAlignedRange() mn, mx = r.GetMin(), r.GetMax() api = UsdShade.MaterialBindingAPI(prim) mat, _ = api.ComputeBoundMaterial(materialPurpose="physics") fric = None if mat: m = UsdPhysics.MaterialAPI(mat.GetPrim()) fric = (round(m.GetStaticFrictionAttr().Get(),2), round(m.GetDynamicFrictionAttr().Get(),2)) print(f" {path}") print(f" x[{mn[0]:+.3f}..{mx[0]:+.3f}] y[{mn[1]:+.3f}..{mx[1]:+.3f}] z[{mn[2]:+.3f}..{mx[2]:+.3f}] friction={fric} mat={mat.GetPath() if mat else None}") return mn, mx print("=== pusher handoff: ConveyorTrack_03/Belt -> Belt_01 ===") b1 = report("/World/ConveyorTrack_03/Belt") b2 = report("/World/ConveyorTrack_03/Belt_01") if b1 and b2: print(f" Y GAP (belt max_y to branch min_y): {b2[0][1]-b1[1][1]:+.3f} m Z step: {b2[0][2]-b1[1][2]:+.3f} m") print("\n=== plow handoff: ConveyorTrack_04 -> decks -> ConveyorTrack_06 / _01 ===") for path in ["/World/ConveyorTrack_04/Belt", "/World/PlowTransition_B", "/World/PlowCornerDeck_B", "/World/ConveyorTrack_01/Belt", "/World/PlowTransition_C", "/World/PlowCornerDeck_C", "/World/ConveyorTrack_06/Belt"]: report(path) print("\n=== reference: plow_cell.py's own GRIP_MATERIAL values ===") import sys sys.path.insert(0, "/home/dasha/robozon-sorter") from robozon_sorter.sim import plow_cell as _pc grip = stage.GetPrimAtPath(_pc.GRIP_MATERIAL) print(" GRIP_MATERIAL path:", _pc.GRIP_MATERIAL, " valid:", grip.IsValid()) if grip.IsValid(): m = UsdPhysics.MaterialAPI(grip) print(" static/dynamic:", m.GetStaticFrictionAttr().Get(), m.GetDynamicFrictionAttr().Get())