def find_gp(self, object_to_grasp) :
     """"Find a grasping pose
     """"" 
     
     print "Getting a collision free grasping pose"
     robot_pose, _, _= generate_reaching_poses.get_collision_free_grasping_pose(
                                                                                            self.robot, 
                                                                                            object_to_grasp, 
                                                                                            )
     return robot_pose
예제 #2
0
    def find_gp(self, object_to_grasp):
        """"Find a grasping pose
        """ ""

        print "Getting a collision free grasping pose"
        robot_pose, _, _ = generate_reaching_poses.get_collision_free_grasping_pose(
            self.robot,
            object_to_grasp,
        )
        return robot_pose
 def grasp(self, obj_name, _unused1, _unused2):
     print "Grasping object ", obj_name
     obj = self.env.GetKinBody(obj_name)
     if obj is None:
         raise ValueError("Object %s does not exist" % obj_name)
     
     cached_value = self.grasping_locations_cache.get(obj_name, None)
     if cached_value is None:
         print "Object %s is not cached, looking for a value" % obj_name
         try:
             pose, sol, torso_angle = generate_reaching_poses.get_collision_free_grasping_pose(
                                                                               self.robot, 
                                                                               obj,
                                                                               max_trials=collision_free_grasping_samples
                                                                               )
             self.grasping_locations_cache[obj_name] =  pose, sol, torso_angle
         except generate_reaching_poses.GraspingPoseError:
             e = ExecutingException("Object in collision")
             e.robot = self.robot
             e.object_to_grasp = obj
             raise e
     else:
         print "Object %s already cached" %  obj_name
         pose, sol, torso_angle = cached_value
     
     self.pause("Moving to location")
     self.robot.SetTransform(pose)
     
     self.pause("Moving arm")
     self.robot.SetDOFValues([torso_angle],
                             [self.robot.GetJointIndex('torso_lift_joint')])        
     self.robot.SetDOFValues(sol,
                             self.robot.GetActiveManipulator().GetArmIndices())
     
     self.pause("Grasping object")
     self.robot.Grab(obj)
     utils.pr2_tuck_arm(self.robot)
예제 #4
0
    def grasp(self, obj_name, _unused1, _unused2):
        # update openrave
        if use_ros:
            self.pr2robot.update_rave()

        print "Grasping object ", obj_name
        obj = self.env.GetKinBody(obj_name)
        if obj is None:
            raise ValueError("Object %s does not exist" % obj_name)

        cached_value = self.grasping_locations_cache.get(obj_name, None)
        if cached_value is None:
            print "Object %s is not cached, looking for a value" % obj_name
            try:
                pose, sol, torso_angle = generate_reaching_poses.get_collision_free_grasping_pose(
                    self.getGoodBodies(),
                    self.robot,
                    obj,
                    max_trials=collision_free_grasping_samples)
                self.grasping_locations_cache[
                    obj_name] = pose, sol, torso_angle
            except generate_reaching_poses.GraspingPoseError:
                e = ExecutingException("Object in collision")
                e.robot = self.robot
                e.object_to_grasp = obj
                raise e
        else:
            print "Object %s already cached" % obj_name
            pose, sol, torso_angle = cached_value

        if OpenRavePlanning:
            test_grasp_move.move_arm(robot, pose, 'r')

        if use_ros:
            # # object matching
            detector, _ = detector_and_cluster_map
            # index = cluster_map[obj_name]

            # # generating grasps
            # box_msg = detector.detect_bounding_box(detector.last_detection_msg.detection.clusters[index])
            # desired_grasps = grasp_generator.generate_grasps(box_msg, 8)
            # grasp_generator.draw_grasps(desired_grasps)

            # object matching
            detector.detect()
            box_msgs = []
            for cluster in detector.last_detection_msg.detection.clusters:
                box_msgs.append(detector.detect_bounding_box(cluster))
            box_msg, index = utils.find_nearest_box(obj, box_msgs)

            # generating grasps
            desired_grasps = grasp_generator.generate_grasps(box_msg, 16)
            grasp_generator.draw_grasps(desired_grasps)

            # pickup
            grabber = object_pickup.Grabber()
            processing_reply = detector.call_collision_map_processing(
                detector.last_detection_msg)

            # # reset planning scene
            self.arm_mover.reset_collision_map()
            self.arm_mover.update_planning_scene()

            res = grabber.pickup_object(
                processing_reply.graspable_objects[index],
                processing_reply.collision_object_names[index],
                processing_reply.collision_support_surface_name,
                'right_arm',
                desired_grasps=desired_grasps,
                lift_desired_distance=0.3)
            if res is None:
                e = ExecutingException("ROS pickup failed")
                e.robot = self.robot
                e.object_to_grasp = obj
                raise e

            # update openrave
            if use_ros:
                self.pr2robot.update_rave()
        else:
            self.pause("Moving to location")
            self.robot.SetTransform(pose)

            self.pause("Moving arm")
            self.robot.SetDOFValues(
                [torso_angle], [self.robot.GetJointIndex('torso_lift_joint')])
            self.robot.SetDOFValues(
                sol,
                self.robot.GetActiveManipulator().GetArmIndices())

        self.robot.Grab(obj)
    def grasp(self, obj_name, _unused1, _unused2):
        # update openrave
        if use_ros:
            self.pr2robot.update_rave()

        print "Grasping object ", obj_name
        obj = self.env.GetKinBody(obj_name)
        if obj is None:
            raise ValueError("Object %s does not exist" % obj_name)
        
        cached_value = self.grasping_locations_cache.get(obj_name, None)
        if cached_value is None:
            print "Object %s is not cached, looking for a value" % obj_name
            try:
                pose, sol, torso_angle = generate_reaching_poses.get_collision_free_grasping_pose(
                                                                                  self.getGoodBodies(),
                                                                                  self.robot, 
                                                                                  obj,
                                                                                  max_trials=collision_free_grasping_samples
                                                                                  )
                self.grasping_locations_cache[obj_name] =  pose, sol, torso_angle
            except generate_reaching_poses.GraspingPoseError:
                e = ExecutingException("Object in collision")
                e.robot = self.robot
                e.object_to_grasp = obj
                raise e
        else:
            print "Object %s already cached" %  obj_name
            pose, sol, torso_angle = cached_value
        
        if OpenRavePlanning:
            test_grasp_move.move_arm(robot, pose, 'r')
        
        if use_ros:
            # # object matching
            detector, _ = detector_and_cluster_map
            # index = cluster_map[obj_name]

            # # generating grasps
            # box_msg = detector.detect_bounding_box(detector.last_detection_msg.detection.clusters[index])
            # desired_grasps = grasp_generator.generate_grasps(box_msg, 8)
            # grasp_generator.draw_grasps(desired_grasps)

            # object matching
            detector.detect()
            box_msgs = []
            for cluster in detector.last_detection_msg.detection.clusters:
                box_msgs.append(detector.detect_bounding_box(cluster))
            box_msg, index = utils.find_nearest_box(obj, box_msgs)

            # generating grasps
            desired_grasps = grasp_generator.generate_grasps(box_msg, 16)
            grasp_generator.draw_grasps(desired_grasps)

            # pickup
            grabber = object_pickup.Grabber()
            processing_reply = detector.call_collision_map_processing(detector.last_detection_msg)
            
            # # reset planning scene
            self.arm_mover.reset_collision_map()
            self.arm_mover.update_planning_scene()

            res = grabber.pickup_object(processing_reply.graspable_objects[index],
                                        processing_reply.collision_object_names[index],
                                        processing_reply.collision_support_surface_name,
                                        'right_arm',
                                        desired_grasps=desired_grasps,
                                        lift_desired_distance = 0.3)
            if res is None:
                e = ExecutingException("ROS pickup failed")
                e.robot = self.robot
                e.object_to_grasp = obj
                raise e

            # update openrave
            if use_ros:
                self.pr2robot.update_rave()
        else:
            self.pause("Moving to location")
            self.robot.SetTransform(pose)
            
            self.pause("Moving arm")
            self.robot.SetDOFValues([torso_angle],
                                    [self.robot.GetJointIndex('torso_lift_joint')])        
            self.robot.SetDOFValues(sol,
                                    self.robot.GetActiveManipulator().GetArmIndices())

        self.robot.Grab(obj)