Couplers#
A coupler transfers forces and state between the physics solvers so that different material types interact in a shared scene, for example a rigid gripper grasping a soft object. The simulator holds exactly one coupler, selected by the coupler options you pass to the scene.
Available couplers#
Coupler |
What it is |
Best for |
|---|---|---|
LegacyCoupler |
The default coupler that handles all cross-solver pairs (rigid, MPM, SPH, PBD, FEM), slated for deprecation |
General multi-physics scenes |
SAPCoupler |
A Semi-Analytic Primal (SAP) contact solver, as used in Drake |
Accurate rigid-deformable contact with implicit FEM |
IPCCoupler |
Incremental Potential Contact, a barrier-based, intersection-free contact model |
Cloth and large-deformation soft bodies |
See Couplers for guidance on choosing between them.
Configuration#
The coupler is chosen by the type of coupler_options passed to the scene. Omitting it selects the legacy coupler.
import genesis as gs
gs.init()
scene = gs.Scene(
coupler_options=gs.options.SAPCouplerOptions(),
)
Once the coupler is set, coupling between entities happens automatically as the scene steps; there is no per-step coupling call.
Coupler types#
See also#
Couplers: choosing and configuring a coupler
Solvers: the physics solvers being coupled
gs.options.BaseCouplerOptions: coupler options reference