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.LegacyCouplerOptions(
# 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), size=(1.0, 1.0, 1.0)),
material=gs.materials.SPH.Liquid(),
)
Coupler Types#
See Also#
Solvers - Physics solvers
gs.options.CouplerOptions - Coupler options