Skip to content

Commit 6b991d3

Browse files
committed
Simplify function
1 parent c63c5c6 commit 6b991d3

1 file changed

Lines changed: 11 additions & 23 deletions

File tree

crazyflow/sim/sim.py

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -590,26 +590,14 @@ def use_box_collision(sim: Sim, enable: bool = True):
590590
geometry, especially for larger swarms. It is recommended to only enable box collision
591591
geometry for small swarms or when high accuracy is required.
592592
"""
593-
594-
def find_geom_ids_by_prefix(model: mujoco.MjModel, prefix: str) -> Array[int]:
595-
geom_ids = []
596-
for i in range(model.ngeom):
597-
name: str | None = mujoco.mj_id2name(model, mujoco.mjtObj.mjOBJ_GEOM, i)
598-
if name is not None and name.startswith(prefix):
599-
geom_ids.append(i)
600-
return jnp.asarray(geom_ids)
601-
602-
# Get geom ids
603-
sphere_ids = find_geom_ids_by_prefix(sim.mj_model, "col_sphere")
604-
box_ids = find_geom_ids_by_prefix(sim.mj_model, "col_box")
605-
assert len(sphere_ids) == len(box_ids) and len(sphere_ids) > 0, (
606-
"Number of sphere and box collision geometries must be the same, check xml files"
607-
)
608-
609-
# Enable/disable geoms
610-
sim.mj_model.geom_contype[sphere_ids] = 1 * (not enable)
611-
sim.mj_model.geom_conaffinity[sphere_ids] = 1 * (not enable)
612-
sim.mj_model.geom_rgba[sphere_ids, 3] = 1 * (not enable)
613-
sim.mj_model.geom_contype[box_ids] = 1 * enable
614-
sim.mj_model.geom_conaffinity[box_ids] = 1 * enable
615-
sim.mj_model.geom_rgba[box_ids, 3] = 1 * enable
593+
for geom in sim.spec.geoms:
594+
if geom.name.startswith("col_sphere"):
595+
geom.contype = 1 * (not enable)
596+
geom.conaffinity = 1 * (not enable)
597+
geom.rgba[3] = 1 * (not enable)
598+
if geom.name.startswith("col_box"):
599+
geom.contype = 1 * enable
600+
geom.conaffinity = 1 * enable
601+
geom.rgba[3] = 1 * enable
602+
603+
sim.build_mjx()

0 commit comments

Comments
 (0)