class TrajectoryGenerator(object):
  """
  Makes calls to the motion planner and checks the resulting
  trajectory for collisions.
  """
  def __init__(self, env):
    self.env = env
    self.robot = self.env.GetRobots()[0]
    self.manip = self.robot.GetActiveManipulator()
    self.motion_planner = TrajoptPlanner(self.env)
    self.collision_checker = CollisionChecker(self.env)

  def traj_from_pose(self, pos, rot,
                     collisionfree=True,
                     joint_targets=None,
                     n_steps=None):
    traj = self.motion_planner.plan_with_pose(pos, rot, collisionfree,
      joint_targets, n_steps)
    collisions = self.collision_checker.get_collisions(traj)
    if collisionfree and collisions:
      return None, collisions
    else:
      return traj, collisions

  def traj_from_joints(self, joint_targets,
                       collisionfree=True,
                       n_steps=None):
    traj = self.motion_planner.plan_with_joints(joint_targets, collisionfree,
      n_steps)
    collisions = self.collision_checker.get_collisions(traj)
    if collisionfree and collisions:
      return None, collisions
    else:
      return traj, collisions
 def __init__(self, env):
   self.env = env
   self.robot = self.env.GetRobots()[0]
   self.manip = self.robot.GetActiveManipulator()
   self.motion_planner = TrajoptPlanner(self.env)
   self.collision_checker = CollisionChecker(self.env)