Skip to content

[Feature]: Friction priority field and 3-axis friction (torsional/rolling) support #2718

@jsw7460

Description

@jsw7460

What feature or enhancement are you proposing?

Two related friction-handling enhancements to improve MuJoCo/Newton parity:

  1. Per-geom friction priority field for resolving friction coefficients between contacting geoms.
  2. Torsional and rolling friction support (MuJoCo's condim=4 and condim=6).

Motivation

(1) Priority field

Currently resolves contact friction as max(friction_a, friction_b) unconditionally (genesis/engine/solvers/rigid/collider/contact.py). This creates asymmetric behavior for domain randomization:

  • When randomizing robot geom friction (via friction_ratio), the effective contact friction is dominated by whichever side has the larger value. If the ground's base friction is high, DR on the robot side is partially or entirely masked.
  • A workaround is to randomize both ground and robot geom friction simultaneously, but this becomes messy when there are multiple entities in the scene.

Mujoco solved this with geom_priority: higher priority wins; equal priority falls back to element-wise max.

(2) Torsional / rolling friction

Genesis currently models only slide friction (single scalar per geom). 3-axis Coulomb friction (slide, torsional, rolling) gated by condim will be very useful. This matters for:

  • Manipulation tasks (finger pivoting, in-hand rotation)
  • Wheeled/rolling robots
  • Realistic contact patch behavior (spinning objects, foot pivoting)

Without these, certain tasks cannot be faithfully simulated.

Potential Benefit

Reliable domain randomization for robot learning

What is the expected outcome of the implementation work?

  • geoms_info.priority field (per-geom integer).
  • Update contact friction resolution: if priority_a != priority_b, take friction of the higher-priority geom; else current max(...) behavior.

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions