image thumbnail
from 4RRR Parallel Manipulator by Hrishi Shah
This file is obsolete. newer version available in description.

[qdot]=Mydiff(t,x)
function [qdot]=Mydiff(t,x)
global lengths radiusx radiusy ell_angle
ell_an=ell_angle*pi/180;

A1=[    lengths(2,1)*sin(x(4))+lengths(2,2)*sin(x(5)+x(4)),    lengths(2,2)*sin(x(5)+x(4)),    lengths(2,3)*sin(x(6)),                                                     0,                         0,                         0,                                                 0,                         0,                         0;
       -lengths(2,1)*cos(x(4))-lengths(2,2)*cos(x(5)+x(4)),   -lengths(2,2)*cos(x(5)+x(4)),   -lengths(2,3)*cos(x(6)),                                                     0,                         0,                         0,                                                 0,                         0,                         0;
                                                         0,                         0,                        1,                                                     0,                         0,                         0,                                                 0,                         0,                         0;
                                                         0,                         0,                         0,    lengths(3,1)*sin(x(7))+lengths(3,2)*sin(x(8)+x(7)),    lengths(3,2)*sin(x(8)+x(7)),    lengths(3,3)*sin(x(9)),                                                 0,                         0,                         0;
                                                         0,                         0,                         0,   -lengths(3,1)*cos(x(7))-lengths(3,2)*cos(x(8)+x(7)),   -lengths(3,2)*cos(x(8)+x(7)),   -lengths(3,3)*cos(x(9)),                                                 0,                         0,                         0;
                                                         0,                         0,                         0,                                                    0,                        0,                        1,                                                 0,                         0,                         0;
                                                         0,                         0,                         0,                                                     0,                         0,                         0,   lengths(4,1)*sin(x(10))+lengths(4,2)*sin(x(11)+x(10)),   lengths(4,2)*sin(x(11)+x(10)),   lengths(4,3)*sin(x(12));
                                                         0,                         0,                         0,                                                     0,                         0,                         0,  -lengths(4,1)*cos(x(10))-lengths(4,2)*cos(x(11)+x(10)),  -lengths(4,2)*cos(x(11)+x(10)),  -lengths(4,3)*cos(x(12));
                                                         0,                         0,                         0,                                                     0,                         0,                         0,                                                0,                        0,                        1];
          
B=[-lengths(1,1)*sin(x(1))-lengths(1,2)*sin(x(2)+x(1)), -lengths(1,2)*sin(x(2)+x(1)), -lengths(1,3)*sin(x(3));
    lengths(1,1)*cos(x(1))+lengths(1,2)*cos(x(2)+x(1)),  lengths(1,2)*cos(x(2)+x(1)),  lengths(1,3)*cos(x(3));
                                                     0,                       0,                       1;];
B1=[B;B;B];
% X=radiusx*cos(t);
% Y=radiusy*sin(t);
xdot=-radiusx*sin(t)*cos(ell_an)-radiusy*cos(t)*sin(ell_an);
ydot=-radiusx*sin(t)*sin(ell_an)+radiusy*cos(t)*cos(ell_an);

C=-pinv(A1)*B1;
D=[eye(3); C];


J = [-lengths(1,1)*sin(x(1))-lengths(1,2)*sin(x(1)+x(2)), -lengths(1,2)*sin(x(2)+x(1)), -lengths(1,3)*sin(x(3));
      lengths(1,1)*cos(x(1))+lengths(1,2)*cos(x(1)+x(2)),  lengths(2,1)*cos(x(2)+x(1)),  lengths(1,3)*cos(x(3));
                                                       0,                            0,                       1];
J1=J*D(1:3,:);
Ji=pinv(J1);
NullSpace=eye(3)-Ji*J1;
qidot=Ji*[xdot;ydot;0]+NullSpace*[pi/2-x(1);pi-x(2);0-x(3)];
qdot=D*qidot;
% pause

Contact us