Example #1
0
 def Test8(self):  # Description: Add noise to the grasp
     V = Vis()
     Hand1 = HandVis(V)
     Hand1.loadHand()
     Hand2 = HandVis(V)
     Hand2.loadHand()
     Obj1 = ObjectVis(V)
     Obj1.loadObject(4)
     Data = ParseGraspData()
     Data.parseAllTransforms()
     grasps = Data.findGrasp(objnum=4,
                             subnum=4,
                             graspnum=11,
                             list2check=Data.all_transforms)
     grasp = grasps[1]
     HandT, ObjT, Arm_JA, Hand_JA = Data.matricesFromGrasp(grasp)
     Hand1.orientHandtoObj(HandT, ObjT, Obj1)
     Hand1.setJointAngles(Hand_JA)
     Hand1.getPalmPoint()
     contact_points1, contact_links1 = retract_finger.retract_fingers(
         V.env, Hand1.obj, Obj1.obj)
     Contact_JA = Hand1.obj.GetDOFValues()
     V.drawPoints(contact_points1, c='blue')
     T_noise, JA_noise = Hand2.addNoiseToGrasp(
         Obj1,
         T_zero=Hand1.obj.GetTransform(),
         Contact_JA=Contact_JA,
         TL_n=0.01,
         R_n=0.1,
         JA_n=0.1)
     pdb.set_trace()
     return JA_noise, T_noise
Example #2
0
    def Test3(
        self
    ):  # Description: figure out how to apply centroid offset in general
        V = Vis()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        Obj2 = ObjectVis(V)
        Obj2.loadObject(4)
        Obj3 = ObjectVis(V)
        Obj3.loadObject(4)

        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        pose = np.random.rand(7)
        pose[:4] = pose[:4] / np.linalg.norm(pose[:4])
        rot_noTL = rotationMatrixFromQuat(pose[:4])
        Obj3.localRotation(rot_noTL)
        Obj3.adjustByCentroid()
        Obj1.globalTransformation(matrixFromPose(pose))
        Obj1.addObjectAxes()
        centroid_transform = poseTransformPoints(
            pose, -1 * Obj1.objCentroid.reshape(
                1, 3))  #effectively a local translation by centroid!
        pose_new = np.hstack((pose[:4], centroid_transform.reshape(3, )))
        Obj2.globalTransformation(matrixFromPose(pose_new))
        Obj2.addObjectAxes()
        Obj3.addObjectAxes()

        pdb.set_trace()
Example #3
0
    def Test5(self):  # Description: Orient Grasp relative to Object
        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        Data = ParseGraspData()
        Data.parseAllTransforms()
        grasps = Data.findGrasp(objnum=4,
                                subnum=4,
                                graspnum=11,
                                list2check=Data.all_transforms)
        grasp = grasps[0]
        HandT = grasp['HandTransformation']
        ObjT = grasp['ObjTransformation']
        Arm_JA = grasp['JointAngles'][:7]
        Hand_JA = grasp['JointAngles'][7:]
        Hand1.orientHandtoObj(HandT, ObjT, Obj1)
        Hand1.setJointAngles(Hand_JA)
        Hand1.getPalmPoint()
        retract_finger.retract_fingers(V.env, Hand1.obj, Obj1.obj)

        grasp = grasps[1]
        HandT = grasp['HandTransformation']
        ObjT = grasp['ObjTransformation']
        Arm_JA = grasp['JointAngles'][:7]
        Hand_JA = grasp['JointAngles'][7:]
        Hand2.orientHandtoObj(HandT, ObjT, Obj1)
        Hand2.setJointAngles(Hand_JA)
        Hand2.getPalmPoint()
        retract_finger.retract_fingers(V.env, Hand2.obj, Obj1.obj)
        pdb.set_trace()
Example #4
0
    def Test7(
        self
    ):  # Description: Interpolate grasp around the center axis of object
        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        Data = ParseGraspData()
        Data.parseAllTransforms()
        grasps = Data.findGrasp(objnum=4,
                                subnum=4,
                                graspnum=11,
                                list2check=Data.all_transforms)
        grasp = grasps[1]
        HandT = grasp['HandTransformation']
        ObjT = grasp['ObjTransformation']
        Arm_JA = grasp['JointAngles'][:7]
        Hand_JA = grasp['JointAngles'][7:]
        Hand1.orientHandtoObj(HandT, ObjT, Obj1)
        Hand1.setJointAngles(Hand_JA)
        Hand1.getPalmPoint()
        contact_points1, __ = retract_finger.retract_fingers(
            V.env, Hand1.obj, Obj1.obj)
        V.drawPoints(contact_points1, c='blue')
        Hand2.changeColor()
        T_zero = Hand1.obj.GetTransform()
        start_axis_angle = np.array([0, 0, 0])
        end_axis_angle = np.array([0, np.pi, 0])
        rot2 = matrixFromAxisAngle(end_axis_angle)
        Hand2.obj.SetTransform(np.dot(rot2, T_zero))
        Hand2.setJointAngles(Hand1.obj.GetDOFValues())
        Hand2.getPalmPoint()
        contact_points2, __ = retract_finger.retract_fingers(
            V.env, Hand2.obj, Obj1.obj)
        V.drawPoints(contact_points2, c='green')

        Hand3 = HandVis(V)
        Hand3.loadHand()
        start_quat = quatFromAxisAngle(start_axis_angle)
        end_quat = quatFromAxisAngle(end_axis_angle)
        alpha = 0.8
        interp_axis_angle = (end_axis_angle - start_axis_angle) * alpha
        interp_rotation = matrixFromAxisAngle(interp_axis_angle)
        Hand3.obj.SetTransform(np.dot(interp_rotation, T_zero))
        Hand3.setJointAngles(Hand1.obj.GetDOFValues())
        Hand3.getPalmPoint()
        contact_points3, __ = retract_finger.retract_fingers(
            V.env, Hand3.obj, Obj1.obj)
        V.drawPoints(contact_points3, c='red')

        pdb.set_trace()

        pass
Example #5
0
    def Test10(self
               ):  # Description: Add noise and interpolate (take image at end)
        # do STLs with noise after this.

        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)

        Data = ParseGraspData()
        grasps = Data.findGrasp(objnum=4,
                                subnum=4,
                                graspnum=11,
                                list2check=Data.all_transforms)
        grasp = grasps[1]
        HandT, ObjT, Arm_JA, Hand_JA = Data.matricesFromGrasp(grasp)
        Hand1.orientHandtoObj(HandT, ObjT, Obj1)
        Hand1.setJointAngles(Hand_JA)
        Hand1.getPalmPoint()
        contact_points1, contact_links1 = Hand1.retractFingers(Obj1)
        Contact_JA = Hand1.obj.GetDOFValues()

        filename_base = "obj%s_sub%s_graspnum%s_grasptype%s" % (4, 4, 11,
                                                                'extreme0')
        if False:
            T_noise, JA_noise = Hand2.addNoiseToGrasp(
                Obj1,
                T_zero=Hand1.obj.GetTransform(),
                Contact_JA=Contact_JA,
                TL_n=0.01,
                R_n=0.1,
                JA_n=0.1)
            np.savetxt(filename_base + "_%s.txt" % 'T_noise', T_noise)
            np.savetxt(filename_base + "_%s.txt" % 'JA_noise', JA_noise)
        else:
            JA_noise = np.genfromtxt(filename_base + "_%s.txt" % 'JA_noise')
            T_noise = np.genfromtxt(filename_base + "_%s.txt" % 'T_noise')
        Hand2.setJointAngles(JA_noise)
        Hand2.obj.SetTransform(T_noise)
        contact_points2, contact_links2 = Hand2.retractFingers(Obj1)
        alpha = np.linspace(0, 1, 6)[1:-1]
        start_axis_angle = np.array([0, 0, 0])
        end_axis_angle = np.array([0, np.pi, 0])
        Hand1.hide()
        for a in alpha:
            filename = filename_base + "_alpha%s.png" % (int(10 * a))
            Hand2.ZSLERP(start_axis_angle, end_axis_angle, a, T_zero=T_noise)
            V.clearPoints()
            V.takeImage(filename)
            time.sleep(1)

        pdb.set_trace()
Example #6
0
    def Test9(self):  # Description: Record image of scene
        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        pdb.set_trace()
        fname_save = 'test.png'
        V.takeImage(fname_save)  # test this!

        pdb.set_trace()
Example #7
0
 def addHand(self, grasp):
     #grasp is either "The Two-fer", "The Claw", "The Pinch", "The Cup"
     #adds the hand to the scene and sets the grasp and wrist rotation
     self.Hand = HandVis(self.vis)
     self.Hand.loadHand()
     self.Hand.changeColor(self.handColor)
     self.setGrasp(grasp)
     self.setWristRotation('Z', 0)
	def __init__(self):
		self.model_path = ''
		self.vis = Vis()
		self.Hand = HandVis(self.vis)
		self.Hand.loadHand()
		self.Hand.localTranslation(np.array([0,0,-0.075])) #offset so palm is at 0,0,0
		self.Obj = ObjectGenericVis(self.vis)
		self.groundPlane = AddGroundPlane(self.vis)
		self.loadSTLFileList()
Example #9
0
	def __init__(self):
		self.vis = Vis()
		self.Hand = HandVis(self.vis)
		self.Hand.loadHand()
		self.Obj = ObjectGenericVis(self.vis)
		self.GP = AddGroundPlane(self.vis)
		self.demoObj = list()
		self.frameCount = 0
		self.start_offset = 0
Example #10
0
    def Test6(self):  # Description: Rotate one grasp around center of object
        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        Data = ParseGraspData()
        Data.parseAllTransforms()
        grasps = Data.findGrasp(objnum=4,
                                subnum=4,
                                graspnum=11,
                                list2check=Data.all_transforms)
        grasp = grasps[1]
        HandT = grasp['HandTransformation']
        ObjT = grasp['ObjTransformation']
        Arm_JA = grasp['JointAngles'][:7]
        Hand_JA = grasp['JointAngles'][7:]
        Hand1.orientHandtoObj(HandT, ObjT, Obj1)
        Hand1.setJointAngles(Hand_JA)
        Hand1.getPalmPoint()
        contact_points1, __ = retract_finger.retract_fingers(
            V.env, Hand1.obj, Obj1.obj)
        V.drawPoints(contact_points1, c='blue')
        Hand2.changeColor()
        Hand2.orientHandtoObj(HandT, ObjT, Obj1)
        T_zero = Hand1.obj.GetTransform()
        rot1 = matrixFromAxisAngle([0, 0, np.pi])
        rot2 = matrixFromAxisAngle([0, np.pi, 0])
        rot3 = matrixFromAxisAngle([np.pi, 0, 0])
        # Hand2.obj.SetTransform(np.dot(rot1, T_zero))
        Hand2.obj.SetTransform(np.dot(rot2, T_zero))
        # Hand2.obj.SetTransform(np.dot(rot3, T_zero))

        Hand2.setJointAngles(Hand_JA)
        Hand2.getPalmPoint()
        contact_points2, __ = retract_finger.retract_fingers(
            V.env, Hand2.obj, Obj1.obj)
        V.drawPoints(contact_points2, c='green')

        pdb.set_trace()
Example #11
0
 def Test1(self):  #just visualize a grasp
     V = Vis()
     Data = ParseGraspData()
     Data.parseGraspData()
     grasp = Data.val_grasp_data[100]
     Obj = ObjectVis(V)
     Obj.loadObjectList()
     Hand = HandVis(V)
     Hand.loadHand()
     Obj.loadObject(int(grasp['obj'].strip('obj')))
     Hand.globalQuatTranslationMove(grasp['HandRotation'],
                                    grasp['HandPosition'])
     Obj.globalQuatTranslationMove(grasp['ObjRotation'],
                                   grasp['ObjPosition'])
     V.close()
Example #12
0
    def Test2(self):  #visualize a specific grasp
        V = Vis()
        Data = ParseGraspData()
        Data.parseGraspData()
        Data.parseAllTransforms()
        grasps = Data.findGrasp(objnum=4,
                                subnum=4,
                                graspnum=11,
                                list2check=Data.all_transforms)
        for grasp in grasps:
            Obj = ObjectVis(V)
            Obj.loadObjectList()
            Hand = HandVis(V)
            Hand.loadHand()
            pdb.set_trace()
            Obj.loadObject(grasp['obj'])
            Hand.globalTransformation(grasp['HandTransformation'])
            Obj.globalTransformation(grasp['ObjTransformation'])

        V.close()
Example #13
0
 def __init__(self):
     self.i = 1
     self.vis = Vis()
     self.obj = ObjectGenericVis(self.vis)
     self.hand = HandVis(self.vis)
     self.hand.loadHand()
Example #14
0
    def Test11(self):  # Description: Generating Images for Interpolated Grasps
        # Oriignal is grey
        # 180 + noise grasp is pink
        # interpolated is violet

        # do STLs with noise after this.

        V = Vis()
        Hand1 = HandVis(V)
        Hand1.loadHand()
        Hand2 = HandVis(V)
        Hand2.loadHand()
        Obj1 = ObjectVis(V)
        Obj1.loadObject(4)
        Obj1.changeColor('green')

        Data = ParseGraspData()
        Data.parseOutputData()
        Data.parseAllTransforms()
        # obj4_cluster13_sub5_grasp2_optimal0_prime.jpg obj4_cluster13_sub5_grasp3_extreme1_target.jpg -- don't have the data.  Tried without class but extreme grasp was too far!
        # grasp1 = Data.findGrasp(objnum = 4, subnum = 5, graspnum = 2, grasptype = 'optimal0', list2check = Data.all_transforms)
        # grasp2 = Data.findGrasp(objnum = 4, subnum = 5, graspnum = 3, grasptype = 'extreme1', list2check = Data.all_transforms)
        # obj4_cluster8_sub4_grasp14_extreme1_prime.jpg obj4_cluster8_sub4_grasp14_optimal0_target.jpg -- don't have the data
        # grasp1 = Data.findGrasp(objnum = 4, subnum = 4, graspnum = 14, grasptype = 'extreme1', list2check = Data.all_transforms)
        # grasp2 = Data.findGrasp(objnum = 4, subnum = 4, graspnum = 14, grasptype = 'optimal0', list2check = Data.all_transforms)
        # obj4_cluster8_sub4_grasp14_extreme1_prime.jpg obj4_cluster8_sub4_grasp9_optimal0_target.jpg -- don't have the data

        case = 4

        #ones that I think look good
        if case == 1:
            grasp1 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=11,
                                    grasptype='optimal0',
                                    list2check=Data.all_transforms)
            grasp2 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=11,
                                    grasptype='optimal0',
                                    list2check=Data.all_transforms)
            filename_base = "obj%s_sub%s_graspnum%s_%s_%s" % (
                4, 4, 11, 'optimal0', 'optimal0')
        elif case == 2:
            grasp1 = Data.findGrasp(objnum=4,
                                    subnum=5,
                                    graspnum=2,
                                    grasptype='optimal0',
                                    list2check=Data.all_transforms)
            grasp2 = Data.findGrasp(objnum=4,
                                    subnum=5,
                                    graspnum=3,
                                    grasptype='extreme1',
                                    list2check=Data.all_transforms)
            filename_base = "obj%s_sub%s_graspnum%s_%s_%s" % (
                4, 5, '2&3', 'optimal0', 'extreme1')
        elif case == 3:
            grasp1 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=14,
                                    grasptype='extreme1',
                                    list2check=Data.all_transforms)
            grasp2 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=14,
                                    grasptype='optimal0',
                                    list2check=Data.all_transforms)
            filename_base = "obj%s_sub%s_graspnum%s_%s_%s" % (
                4, 4, 14, 'extreme1', 'optimal0')
        elif case == 4:
            grasp1 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=14,
                                    grasptype='extreme1',
                                    list2check=Data.all_transforms)
            grasp2 = Data.findGrasp(objnum=4,
                                    subnum=4,
                                    graspnum=9,
                                    grasptype='optimal0',
                                    list2check=Data.all_transforms)
            filename_base = "obj%s_sub%s_graspnum%s_%s_%s" % (
                4, 4, '14&9', 'extreme1', 'optimal0')

        HandT1, ObjT1, Arm_JA1, Hand_JA1 = Data.matricesFromGrasp(grasp1[0])
        HandT2, ObjT2, Arm_JA2, Hand_JA2 = Data.matricesFromGrasp(grasp2[0])
        Hand1.orientHandtoObj(HandT1, ObjT1, Obj1)
        Hand1.setJointAngles(Hand_JA1)
        Hand1.changeColor('greyI')
        Hand2.orientHandtoObj(HandT2, ObjT2, Obj1)
        Hand2.setJointAngles(Hand_JA2)
        Hand2.changeColor('pinkI')
        Hand1.getPalmPoint()
        contact_points1, contact_links1 = Hand1.retractFingers(Obj1)
        contact_points2, contact_links2 = Hand2.retractFingers(Obj1)

        start_axis_angle = np.array([0, 0, 0])
        end_axis_angle = np.array([0, np.pi, 0])
        Hand2.ZSLERP(start_axis_angle,
                     end_axis_angle,
                     1,
                     T_zero=Hand2.obj.GetTransform())
        Hand3 = HandVis(V)
        Hand3.loadHand()
        Hand3.makeEqual(Hand1)
        Hand3.changeColor('blueI')
        alpha = np.linspace(0, 1, 6)[1:-1]

        if case == 1:
            V.setCamera(60, 0, 5 / 4 * np.pi - 0.75)
        elif case == 2:
            V.setCamera(60, np.pi / 4 - 1.5, -np.pi - 1)
        elif case == 3:
            V.setCamera(40, np.pi / 3 + 0.2, -np.pi - 0.5)
        elif case == 4:
            V.setCamera(40, np.pi / 3 - np.pi, -np.pi - 0.75)
            # pdb.set_trace()

        # function to get out dist, az, el of camera from current view
        for a in alpha:
            filename = filename_base + "_alpha%s.png" % (int(10 * a))
            Hand3.ZSLERP(start_axis_angle,
                         end_axis_angle,
                         a,
                         T_zero=Hand1.obj.GetTransform())
            V.clearPoints()
            V.takeImage(filename)
            time.sleep(1)
Example #15
0
 def loadAdditionalHand(self):
     self.HandList.append(HandVis(self.SIG.vis))
     self.HandList[-1].loadHand()
     self.HandList[-1].show()
     self.HandList[-1].changeColor('yellowI')