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!