Title: [bug] Newton USD import drops mjc:frictionloss.
Describe the bug
On the Newton backend, joint Coulomb friction authored on a USD as mjc:frictionloss never reaches the solver — Model.joint_friction / dof_frictionloss stay 0 even though mjc:damping works. Loading a mjcf directly loads everything properly.
Steps to reproduce
Newton core handles it correctly with the mjc resolver, which pinpoints the gap. Minimal (pure Newton):
revolute joint authored with mjc:frictionloss=0.11 on a USD stage
b = newton.ModelBuilder()
solvers.SolverMuJoCo.register_custom_attributes(b)
b.add_usd(stage, schema_resolvers=[SchemaResolverNewton(), SchemaResolverPhysx()]) # Isaac Lab's list
print(b.finalize().joint_friction) # -> [... 0.0] (dropped)
b2 = newton.ModelBuilder(); solvers.SolverMuJoCo.register_custom_attributes(b2)
b2.add_usd(stage, schema_resolvers=[SchemaResolverNewton(), SchemaResolverPhysx(), SchemaResolverMjc()])
print(b2.finalize().joint_friction) # -> [... 0.11] (correct)
End-to-end: any Newton USD robot with mjc:frictionloss authored → dof_frictionloss == 0 in sim.
System Info
- Commit: f703bea7e
- Isaac Sim Version: 6.0.0-rc.22 (release.33481) · Newton 1.0.0
- OS: Ubuntu 22.04
- GPU: RTX 3090
- CUDA: 13.2 (Warp toolkit 12.9)
- GPU Driver: 595.84
Checklist
Acceptance Criteria
Title: [bug] Newton USD import drops mjc:frictionloss.
Describe the bug
On the Newton backend, joint Coulomb friction authored on a USD as mjc:frictionloss never reaches the solver — Model.joint_friction / dof_frictionloss stay 0 even though mjc:damping works. Loading a mjcf directly loads everything properly.
Steps to reproduce
Newton core handles it correctly with the mjc resolver, which pinpoints the gap. Minimal (pure Newton):
revolute joint authored with mjc:frictionloss=0.11 on a USD stage
b = newton.ModelBuilder()
solvers.SolverMuJoCo.register_custom_attributes(b)
b.add_usd(stage, schema_resolvers=[SchemaResolverNewton(), SchemaResolverPhysx()]) # Isaac Lab's list
print(b.finalize().joint_friction) # -> [... 0.0] (dropped)
b2 = newton.ModelBuilder(); solvers.SolverMuJoCo.register_custom_attributes(b2)
b2.add_usd(stage, schema_resolvers=[SchemaResolverNewton(), SchemaResolverPhysx(), SchemaResolverMjc()])
print(b2.finalize().joint_friction) # -> [... 0.11] (correct)
End-to-end: any Newton USD robot with mjc:frictionloss authored → dof_frictionloss == 0 in sim.
System Info
Checklist
Acceptance Criteria