in habitat/tasks/rearrange/rearrange_task.py [0:0]
def get_coll_forces(self):
snapped_obj = self._sim.grasp_mgr.snap_idx
robot_id = self._sim.robot.sim_obj.object_id
contact_points = self._sim.get_physics_contact_points()
def get_max_force(contact_points, check_id):
match_contacts = [
x
for x in contact_points
if check_id in [x.object_id_a, x.object_id_b]
]
match_contacts = [
x for x in match_contacts if x.object_id_a != x.object_id_b
]
max_force = 0
if len(match_contacts) > 0:
max_force = max([abs(x.normal_force) for x in match_contacts])
return max_force
forces = [
abs(x.normal_force)
for x in contact_points
if (
x.object_id_a not in self._ignore_collisions
and x.object_id_b not in self._ignore_collisions
)
]
max_force = max(forces) if len(forces) > 0 else 0
max_obj_force = get_max_force(contact_points, snapped_obj)
max_robot_force = get_max_force(contact_points, robot_id)
return max_robot_force, max_obj_force, max_force