def ray_collision(ray): # TODO: be careful to disable gravity and set static masses for everything step_simulation() # Needed for some reason start, end = ray result, = p.rayTest(start, end, physicsClientId=CLIENT) # TODO: assign hit_position to be the end? return RayResult(*result)
def contact_collision(): """run simulation for one step and check if there is a collision Returns ------- bool True if there is a collision, False otherwise """ step_simulation() return len(p.getContactPoints(physicsClientId=CLIENT)) != 0
def batch_ray_collision(rays, threads=1): assert 1 <= threads <= p.MAX_RAY_INTERSECTION_BATCH_SIZE if not rays: return [] step_simulation() # Needed for some reason ray_starts = [start for start, _ in rays] ray_ends = [end for _, end in rays] return [RayResult(*tup) for tup in p.rayTestBatch( ray_starts, ray_ends, numThreads=threads, #parentObjectUniqueId= #parentLinkIndex= physicsClientId=CLIENT)]
def contact_collision(): step_simulation() return len(p.getContactPoints(physicsClientId=CLIENT)) != 0