示例#1
0
def load_grasp_database(robot, filename):
  grasps = []
  for grasp_tform, gripper_config, (trajectory, indices), approach_vector in read_pickle(filename):
    grasps.append(Grasp(np.array(grasp_tform), np.array(gripper_config),
      TrajTrajectory(CSpace(robot, indices=np.array(indices)), new_traj().deserialize(trajectory)), approach_vector))
  if DEBUG: print 'Loaded', filename
  return grasps
示例#2
0
def collision_ignorant_grasp(oracle, geom_hash, grasp_tform, approach_vector, manip_name=None): # TODO - try to make a valid grasp if possible
  with oracle.state_saver():
    if manip_name is not None: oracle.robot.SetActiveManipulator(manip_name)
    oracle.set_active_state(active_obstacles=False, active_objects=set())
    open_gripper(oracle)
    oracle.robot.SetDOFValues(oracle.default_left_arm_config, oracle.robot.GetActiveManipulator().GetArmIndices())
    gripper_config, gripper_traj = oracle.task_manip.CloseFingers(offset=None, movingdir=None, execute=False, outputtraj=False, outputfinal=True,
        coarsestep=None, translationstepmult=None, finestep=None, outputtrajobj=True)
    return Grasp(grasp_tform, gripper_config, TrajTrajectory(CSpace(oracle.robot,
        indices=oracle.robot.GetActiveManipulator().GetGripperIndices()), gripper_traj), approach_vector)
示例#3
0
def collision_free_grasp(oracle, geom_hash, grasp_tform, approach_vector, manip_name=None):
  body_name = oracle.get_body_name(geom_hash)
  with oracle.state_saver():
    if manip_name is not None: oracle.robot.SetActiveManipulator(manip_name)
    oracle.set_active_state(active_obstacles=False, active_objects=set([body_name]))
    open_gripper(oracle)
    oracle.robot.SetDOFValues(oracle.default_left_arm_config, oracle.robot.GetActiveManipulator().GetArmIndices())
    set_trans(oracle.bodies[body_name], object_trans_from_manip_trans(get_manip_trans(oracle), grasp_tform))
    if not robot_collision(oracle, body_name):
      gripper_config, gripper_traj = oracle.task_manip.CloseFingers(offset=None, movingdir=None, execute=False, outputtraj=False, outputfinal=True,
          coarsestep=None, translationstepmult=None, finestep=None, outputtrajobj=True)
      return Grasp(grasp_tform, gripper_config, TrajTrajectory(CSpace(oracle.robot,
          indices=oracle.robot.GetActiveManipulator().GetGripperIndices()), gripper_traj), approach_vector)
  return None