def custom_base_iterator(oracle, manip_iterator):
  if not hasattr(oracle, 'ir_database'):
    oracle.ir_database = get_custom_ir(oracle.robot) # TODO - allow multiple IR databases

  default_trans = get_trans(oracle.robot)
  for manip_trans in cycle(manip_iterator):
    yield ir_base_trans(oracle, manip_trans, choice(oracle.ir_database), default_trans), manip_trans
def display_custom_ir(oracle, manip_trans):
  if not hasattr(oracle, 'ir_database'):
    oracle.ir_database = get_custom_ir(oracle.robot)

  handles = []
  default_trans = get_trans(oracle.robot)
  for transform in oracle.ir_database:
    base_trans = ir_base_trans(oracle, manip_trans, transform, default_trans)
    handles.append(draw_point(oracle.env, point_from_trans(base_trans)))
  return handles
Example #3
0
def plan_base_traj(oracle, start_config, end_config, holding=None, obstacle_poses={}):
  with oracle.state_saver():
    oracle.set_all_object_poses(obstacle_poses)
    oracle.set_robot_config(end_config)
    base_trans = get_trans(oracle.robot)

    oracle.set_robot_config(start_config)
    open_gripper(oracle)
    if holding is not None:
      oracle.set_pose(holding.object_name, object_pose_from_robot_config(oracle, start_config, holding.grasp))
      grab(oracle, holding.object_name)
    traj = cspace_traj(oracle, CSpace.robot_base(oracle.robot), base_values_from_trans(base_trans))
    if holding is not None:
      release(oracle, holding.object_name)
  return traj
Example #4
0
def manip_point(q):
  robot = get_env().GetRobots()[0]
  with robot:
    robot.SetActiveDOFValues(q.value)
    return point_from_trans(get_trans(robot.GetActiveManipulator()))