예제 #1
0
        public static RobotArm lynxmotionL6()
        {
            RobotArm arm = new RobotArm(7);

            arm.links[1] = ArmLink.translateXYZ(arm.links[0], 0, 6.7, 0);
            arm.links[2] = ArmLink.translateXYZ(arm.links[1], 0, 0, 0);
            arm.links[3] = ArmLink.translateXYZ(arm.links[2], 15, 0, 0);
            arm.links[4] = ArmLink.translateXYZ(arm.links[3], 17.5, 0, 0);
            arm.links[5] = ArmLink.translateXYZ(arm.links[4], 3, 0, 0);
            arm.links[6] = ArmLink.translateXYZ(arm.links[5], 4, 0, 0);

            return(arm);
        }
예제 #2
0
        public ArmLink(ArmLink prevlink, double dispX, double dispY, double dispZ,
                       double rotX, double rotY, double rotZ)
        {
            int     i, j;
            ArmLink newlink = ArmLink.translateXYZ(prevlink, dispX, dispY, dispZ);

            newlink = ArmLink.rotateX(newlink, rotX);
            newlink = ArmLink.rotateY(newlink, rotY);
            newlink = ArmLink.rotateZ(newlink, rotY);

            // copying transfomation matrix from newlink to the object
            for (i = 0; i < 4; i++)
            {
                for (j = 0; j < 4; j++)
                {
                    this.T[i][j] = newlink.T[i][j];
                }
            }
            // transformation matrix copied
        }
예제 #3
0
        public void addDHline(double anglei_1, double ai_1, double di, double homeangle)
        {
            linknum++;
            // creating a new line in the Denavit - Hartenberg matrix
            DHmatrix[linknum - 1] = new double[4];
            // filling the line now
            DHmatrix[linknum - 1][0] = anglei_1; // angle about the x-axis
            // bewteen i-1 and i link
            DHmatrix[linknum - 1][1] = ai_1;     // distance between i-1 and i link
            // on the x-axis
            DHmatrix[linknum - 1][2] = di;       // displace of link i on the z-axis
            DHmatrix[linknum - 1][3] = anglei_1; // home angle of link-i
            // Denavit - Hartenberg line added

            // Now assigning a frame to the link
            links[linknum - 1] = ArmLink.rotateX(links[linknum - 2], anglei_1);         // rotating about x by angle i-1
            // to align with link i
            links[linknum - 1] = ArmLink.translateXYZ(links[linknum - 1], ai_1, 0, di); // translating on x by the distance bewteen
            // i and i-1 and translating on z by displacement di
            links[linknum - 1] = ArmLink.rotateZ(links[linknum - 1], homeangle);        // rotating about z to home position (angle theta)
        }