What feature or enhancement are you proposing?
Two related friction-handling enhancements to improve MuJoCo/Newton parity:
- Per-geom friction priority field for resolving friction coefficients between contacting geoms.
- 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
What feature or enhancement are you proposing?
Two related friction-handling enhancements to improve MuJoCo/Newton parity:
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: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.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
condimwill be very useful. This matters for: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.priorityfield (per-geom integer).priority_a != priority_b, take friction of the higher-priority geom; else currentmax(...)behavior.Additional information
No response