Genesis
Genesis copied to clipboard
[Bug]: FEM and Rigid Entity Collision Bug
Bug Description
Hello everyone, I tried to model collision in between FEM and Rigid Entity. But, there seems to be a bug, which I couldnt solve. Do you guys have any idea about problem?
Steps to Reproduce
import argparse
import numpy as np
import os
import torch
from dask.order import order
from mpmath import euler
from pygel3d.hmesh import minimize_dihedral_angle
from os import path
os.environ['PYOPENGL_PLATFORM'] = 'glx'
import genesis as gs
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-v", "--vis", action="store_true", default=False)
args = parser.parse_args()
########################## init ##########################
gs.init(seed=0, precision="32", logging_level="debug")
########################## create a scene ##########################
scene = gs.Scene(
sim_options=gs.options.SimOptions(
dt=4e-3,
substeps=10,
),
coupler_options=gs.options.CouplerOptions(
rigid_fem=True,
),
rigid_options=gs.options.RigidOptions(
dt=0.01,
gravity=(0,0,-9.8),
enable_collision=True,
constraint_solver=gs.constraint_solver.Newton,
iterations=200,
tolerance=1e-7,
integrator=gs.integrator.implicitfast,
use_contact_island=True,
),
fem_options=gs.options.FEMOptions(
damping=0.1,
),
viewer_options=gs.options.ViewerOptions(
camera_pos=(9.6, 4.8, 14.0),
camera_lookat=(0.0, 0.0, 0.0),
camera_fov=35,
max_FPS=30,
),
show_viewer=args.vis,
vis_options=gs.options.VisOptions(
#visualize_mpm_boundary=True,
),
)
cam = scene.add_camera(
res=(1280, 800),
pos=(5.5, 6.5, 3.2),
lookat=(0.5, 1.5, 1.5),
fov=30,
GUI=True,
)
plane = scene.add_entity(
material=gs.materials.Rigid(),
morph=gs.morphs.URDF(file="urdf/plane/plane.urdf", fixed=True),
)
E, nu = 1.e7,0.3
rho = 100.0
obj1 = scene.add_entity(
material=gs.materials.Rigid(
rho=rho,
friction=1.0,
),
morph=gs.morphs.Sphere(
pos=(0.0, 2.0, 0.5),
radius=0.2,
),
surface=gs.surfaces.Iron(),
)
obj2 = scene.add_entity(
material=gs.materials.FEM.Elastic(
E=E,
nu=nu,
rho=rho,
model="linear",
),
morph=gs.morphs.Box(
pos=(0.0, 0.0, 0.5),
size=(0.5,0.5,0.5),
),
surface=gs.surfaces.Metal(
color=(0.6, 1.0, 0.8, 1.0),
vis_mode="visual",
),
)
scene.build()
cam.start_recording()
horizon = 1000
for i in range(horizon):
if i < 400:
obj1.set_dofs_velocity([0.0, -2.0, 0.0,0.0,0.0,0.0])
scene.step()
cam.render()
cam.stop_recording(save_to_filename="fem_rigid_entity.mp4", fps=60)
if __name__ == "__main__":
main()
Expected Behavior
I expect collision in between entities
Screenshots/Videos
https://github.com/user-attachments/assets/a8a60b66-b6ab-4209-8b72-1716ebb2e83e
Relevant log output
Environment
- OS: [e.g. Ubuntu 24.04 24H2]
- GPU/CPU [e.g. QUADRO RTX 4000, M3pr, Intel I9-9900k] (N/A if no GPU/CPU)
- GPU-driver version (N/A if no GPU)
- CUDA / CUDA-toolkit version
Release version or Commit ID
version 0.2.1
Additional Context
No response