Couplers#

Couplers handle multi-physics interactions between different solvers in Genesis. They enable simulating scenarios where different material types interact (e.g., a robot grasping a soft object).

Available Couplers#

Coupler

Description

Use Case

LegacyCoupler

Impulse-based coupling

Simple interactions

SAPCoupler

Spatial acceleration

Efficient broad-phase

IPCCoupler

Incremental Potential Contact

Robust contact

Configuration#

Couplers are configured through coupler options:

import genesis as gs

gs.init()
scene = gs.Scene(
    coupler_options=gs.options.CouplerOptions(
        # Coupler-specific options
    ),
)

Multi-Physics Examples#

Robot + Soft Object#

# Rigid robot
robot = scene.add_entity(gs.morphs.URDF(file="gripper.urdf"))

# Soft MPM object
soft = scene.add_entity(
    gs.morphs.Box(pos=(0.5, 0, 0.5), size=(0.1, 0.1, 0.1)),
    material=gs.materials.MPM.Elastic(),
)

scene.build()

# Coupling happens automatically
for i in range(1000):
    scene.step()

Tool + Fluid#

# Kinematic tool
tool = scene.add_entity(
    gs.morphs.Mesh(file="paddle.obj"),
    material=gs.materials.Tool(),
)

# SPH fluid
fluid = scene.add_entity(
    gs.morphs.Box(pos=(0, 0, 0.5)),
    material=gs.materials.SPH.Liquid(),
)

Coupler Types#

See Also#