How to check collision of objects in isaac-sim

Hello!

I defined a function in_collision() in the following code to detect when an object is in collision with other objects in isaac-sim.

from omni.isaac.kit import SimulationApp
simulation_app = SimulationApp({"headless": False}) 

from omni.isaac.core import World
from omni.isaac.core.objects import DynamicCuboid
from omni.isaac.franka import Franka
from omni.isaac.franka import KinematicsSolver
import numpy as np

world = World()
world.scene.add_default_ground_plane()
franka = world.scene.add(Franka(prim_path="/World/Fancy_Franka", name="fancy_franka"))
world.reset()
fancy_cube =  world.scene.add(DynamicCuboid(
        prim_path="/World/random_cube",
        name="fancy_cube",
        position=np.array([-0.8, 0.3, 0.3]),
        scale=np.array([0.5, 0.5, 0.5]),
        color=np.array([0, 0, 1.0]),
    ))

# check if the object is in collision 
**def in_collision(object_name):**
**    pass**

position, orientation = fancy_cube.get_world_pose()
solver = KinematicsSolver(franka)
current_joint_positions = franka.get_joint_positions()
goal_config = solver.compute_inverse_kinematics(position)[0]

for i in range(100):
    franka.apply_action(goal_config)
    if in_collision('fancy_franka'):
        print('True')
    world.step(render=True) 
    
simulation_app.close() # close Isaac Sim

However, I am not quite sure how to implement the in_collision() function. Any guidance or examples you can provide on how to implement this function would be greatly appreciated. Thank you!

Hello!

I think the check_robot_collision function implemented in this repository might be helpful as a reference.

1 Like

Thank you, @smakolon385 !

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.