You are on page 1of 42

PROJECT II

SLIDER CRANK MECHANISM

Presented by: Under the Guidance


1. Lokesh Kumar
2. Majid Hameed of
3. Saurabh Sharma Prof. S K Saha
MULTI-BODY SYSTEMS
& VIBRATION DESIGN
Objective
 Dynamic Modeling of a Slider Crank
Mechanism.

 To carry out Inverse Dynamics.

 Perform Free and Forced Simulation.

 Verification
Frame Representation
X2
Y1 2
X4 Y3

3
1 Z4

X1
X3
Link parameters
X2
Y1 2
#2 X4 Y3
M2,a2

#1

3
M1,a1

1 Z4

X1
#3
M3,b
4 X3
Methods used for modeling

 Euler Lagrange Independent Generalised


Coordinate Method.

 Euler Lagrange Dependent Set of


Generalised Coordinates Method.

 Using NOC / DeNOC and Lagrange


Multipliers.
Dependent Set Method

d L L  T 
( . )  ai   i
dt  q
i  qi
Generalised Equation


..   T  
I q h  g a  
I Matrix
H Matrix

. . .
[( m2 a1a2  1 sin  2  2  (m2 a1a2  sin  2 / 2)]
2
2
.
m2 a1a2 sin  2  1
2

0
0
G Matrix

(m1a1 g cos 1 / 2)
0
0
0
Constraint Matrix
Jacobian J Relations
Matlab Program for Euler Lagrange Dependent set of Coordinates

% Initial Values
a1=1;
a2=3;
m1=1;
m2=1;
m3=1;
th0=0;
ths=pi/2;
T=2;
i=1; g=9.81;

for t= 0:0.01:2

% Initializing
th1(i) = th0 + (((ths-th0)/T)*(t-(((T/(2*pi))*sin(2*pi*t/T)))));
dth1(i) = ((ths-th0)/T)*(1-((T/(2*pi))*cos(2*pi*t/T))*(2*pi/T));
ddth1(i) = ((ths-th0)/T^2)*sin(2*pi*t/T)*2*pi;

% Relations
th2(i)=(2*pi)- th1(i) - asin(2*a1*sin(th1(i))/a2) ;
dth2(i)=-(2*a1*cos(th1(i))*dth1(i))/(a2*cos(th1(i)+th2(i))) - dth1(i);
ddth2(i)= -ddth1(i)- [2*a1*[(cos(th2(i)+ th1(i))*((cos(th1(i))*ddth1(i))-
(sin(th1(i))*dth1(i)*dth1(i)))) + (cos(th1(i))*sin(th2(i)+th1(i))*dth1(i)*(dth2(i)+dth1(i)))]/
(cos(th2(i)+th1(i))*cos(th2(i)+th1(i))*a2)];
th3(i)=(2.5*pi)-(th1(i)+th2(i));
dth3(i)=-(dth1(i)+dth2(i));
ddth3(i)=-(ddth1(i)+ddth2(i));
ddb4(i)=(a1*cos(th1(i))*dth1(i))+(a1*sin(th1(i))*ddth1(i))-
(a1*cos(th1(i))*tan(th1(i)+th2(i))*ddth1(i))+(sin(th1(i))*tan(th1(i)+th2(i))*(dth1(i)*dth1(i)))-
(cos(th1(i))*(sec(th1(i)+th2(i))*sec(th1(i)+th2(i))*dth1(i)*(dth1(i)+dth2(i))));

% ddtheta vectors
ddq=[ddth1(i);ddth2(i);ddth3(i);ddb4(i)];

% Inertia Matrix
i11 = (m1*a1*a1/3)+(m2*a1*a1)+(m2*a2*a2/3)+(m2*a1*a2*cos(th2(i))); i12 =
(m2*a2*a2/3)+(m2*a1*a2*cos(th2(i))/2); i13=0; i14=0;
i21 = (m2*a2*a2/3)+(m2*a1*a2*cos(th2(i))/2); i22 = m2*a2*a2/3; i23=0; i24=0;
i31=0; i32=0; i33=0; i34=0;
i41=0; i42=0; i43=0; i44=m3;
I=[i11 i12 i13 i14;i21 i22 i23 i24;i31 i32 i33 i34;i41 i42 i43 i44];

% H matrix
h1=-(m2*a1*a2*dth1(i)*dth2(i)*sin(th2(i)))-(m2*a1*a2*dth2(i)*dth2(i)*sin(th2(i))/2);
h2=(m2*a1*a2*sin(th2(i))*dth1(i)*dth1(i)/2); h3=0; h4=0;
H=[h1;h2;h3;h4];

% G matrix
g1=m1*g*a1*cos(th1(i))/2; g2=0; g3=0; g4=0;
G=[g1;g2;g3;g4];

% Constraint Matrix [Jacobian]


a11=(-a1*sin(th1(i)))-(a2*sin(th1(i)+th2(i))/2); a21=-(a2*sin(th1(i)+th2(i))/2); a31=0;
a41=1;
a12=(a1*cos(th1(i)))+(a2*cos(th1(i)+th2(i))/2); a22=a2*cos(th1(i)+th2(i))/2; a32=0;
a42=0;
a13=1; a23=1; a33=1; a43=0;
A=[a11 a12 a13 ;a21 a22 a23 ;a31 a32 a33 ;a41 a42 a43];

% J Matrix 'Orthogonal Complement of Constraint Matrix'


j11=1;
j21=(-1-(2*a1*cos(th1(i))/(a2*cos(th2(i)))));
j31= 2*a1*cos(th1(i)) / (a2*cos(th1(i)+th2(i)));
j41=((a1*sin(th1(i)))-(a1*cos(th1(i))*tan(th1(i)+th2(i))));
J=[j11 j21 j31 j41];

% Torque matrix
Tor(i) = (J*I*ddq) + (J*H) + (J*G)
i=i+1;
end

t=0:0.01:2
subplot(2,2,1);
plot(t,ddb4,'linewidth',4)
grid on;
%figure(2)
subplot(2,2,2);
plot(t,th1,t,dth1,t,ddth1)
grid on;
subplot(2,2,3);
plot(t,th2,t,dth2,t,ddth2)
subplot(2,2,4);
plot(t,th3,t,dth3,t,ddth3)
figure(4);
plot(t,Tor)
pp1=spline(t,Tor);
save('td1.mat','pp1')
Euler Lagrange Independent
Coordinate Method
Contd….
Matlab Program for Independent Euler Lagrange Method
m1=1; m2=1;
m3=1; a1=1;a2=3;
g=9.81; i=1; q1= 0; q2= (pi/2); T=2;
for t= 0:0.01:2

th1(i)= (((q2-q1))/T)*(t-((T/(2*pi))*sin(2*pi*t/T)));
thd1(i)=(((q2-q1)/T)*(1-cos(2*pi*t/T)));
thdd1(i)= ((q2-q1)/T)*(2*pi/T)*(sin(2*pi*t/T));
th2(i)=asin(-2*a1*sin(th1(i))/a2)-th1(i);
thd2(i)=(-1-2*a1*cos(th1(i))/(a2*cos(th1(i)+th2(i))))*thd1(i);
thdd2(i)=(2*a1*(sin(th1(i))*(thd1(i))*(thd1(i))-
cos(th1(i))*(thdd1(i)))/a2+sin(th1(i)+th2(i))*((thd1(i))+thd2(i))*((thd1(i))+thd2(i)))/cos(th1(i)
+th2(i))-(thdd1(i));
bd(i)=a1*sin(th1(i))*thd1(i)+a2*sin(th1(i)+th2(i))*(thd1(i)+thd2(i))/2;
bdd(i)=a1*sin(th1(i))*thdd1(i)+a1*cos(th1(i))*thd1(i)*thd1(i)+a2*sin(th1(i)+th2(i))*((thdd1(i
))+thdd2(i))/2+a2*cos(th1(i)+th2(i))*(thd1(i)+thd2(i))*(thd1(i)+thd2(i));
s(i)=m1*a1*a1/3+m2*a1*a1+m2*a1*a2*cos(th2(i))/2-
2*m2*a1*a2*cos(th1(i))/(3*cos(th1(i)+th2(i)))-
m2*a1*a1*cos(th1(i))*cos(th2(i))/cos(th1(i)+th2(i));
u(i)=m2*a1*a2*cos(th2(i))/2-2*m2*a1*a2*cos(th1(i))/(3*cos(th1(i)+th2(i)));
v(i)=m3*a1*sin(th1(i))-m3*a1*cos(th1(i))*sin(th1(i)+th2(i))/cos(th1(i)+th2(i));
w(i)=-m2*a1*a2*sin(th2(i))*thd2(i)*(thd1(i)/2+thd2(i)/2-
a1*cos(th1(i))*thd1(i)/(a2*cos(th1(i)+th2(i))));
x(i)=(cos(th1(i))*sin(th1(i)+th2(i))*(thd1(i)+thd2(i))-cos(th1(i)+th2(i))*sin(th1(i))*thd1(i))*(-
m2*a1*a1*cos(th2(i))*thd1(i)-
2*m2*a1*a2*(thd1(i)+thd2(i))/3)/(cos(th1(i)+th2(i))*cos(th1(i)+th2(i)));
y(i)=m3*bd(i)*(a1*cos(th1(i))*thd1(i)-
a1*cos(th1(i))*(thd1(i)+thd2(i))/(cos(th1(i)+th2(i))*cos(th1(i)+th2(i)))+a1*sin(th1(i))*sin(th1
(i)+th2(i))*thd1(i)/cos(th1(i)+th2(i)));
z(i)=m2*a1*a2*(1+2*a1*cos(th1(i))/(a2*cos(th1(i)+th2(i))))*sin(th2(i))*(thd1(i)*thd1(i)+thd
1(i)*thd2(i))/2-m1*g*a1*cos(th1(i))/2;
tor(i)=s(i)*thdd1(i)+u(i)*thdd2(i)+v(i)*bdd(i)+w(i)+x(i)+y(i)-z(i);
i=i+1;
end

t= 0:0.01:2
figure(11)
plot(t,tor);
pp=spline(t,tor)
save ('torquedata.mat',' pp')
Pendode Function
function dy=pendodes(t,y)
load torquedata.mat;
tor=ppval(pp,t);
dy=zeros(2,1)
m1=1; m2=1; m3=1; a1=1; a2=3; g=9.81;

th2=-y(1)-asin((2*a1*sin(y(1)))/a2);
thd2=-(1+(2*a1*cos(y(1)))/(a2*cos(y(1)+th2)))*y(2);
bd=a1*sin(y(1))*y(2)+a2*sin(y(1)+th2)*(y(2)+thd2)/2;

i=m1*a1*a1/3+m2*a1*a1+m2*a1*a2*cos(th2)/2-2*m2*a1*a2*cos(y(1))/(3*cos(y(1)+th2))-
m2*a1*a1*cos(y(1))*cos(th2)/cos(y(1)+th2);
j=(m2*a1*a2*cos(th2)/2-2*m2*a1*a2*cos(y(1))/(3*cos(y(1)+th2)))*(-1-
2*a1*cos(y(1))/(a2*cos(y(1)+th2)))*(a1*sin(y(1))-(a1*cos(y(1))*tan(y(1)+th2)));
k=m3*a1*sin(y(1))-m3*a1*cos(y(1))*sin(y(1)+th2)/cos(y(1)+th2);

p=2*a1/a2*y(2)*(sin(y(1))*y(2)-cos(y(1))*tan(y(1)+th2)*(y(2)+thd2));
q=a1*cos(y(1))*y(2)*y(2)-
a1*cos(y(1))*y(2)*(y(2)+thd2)/(cos(y(1)+th2)*cos(y(1)+th2))+a1*sin(y(1))*y(2)*y(2)*tan(y(
1)+th2);
w=-m2*a1*a2*sin(th2)*thd2*(y(2)/2+thd2/2-a1*cos(y(1))*y(2)/(a2*cos(y(1)+th2)));
x=(cos(y(1))*sin(y(1)+th2)*(y(2)+thd2)-cos(y(1)+th2)*sin(y(1))*y(2))*(-
m2*a1*a1*cos(th2)*y(2)-2*m2*a1*a2*(y(2)+thd2)/3)/(cos(y(1)+th2)*cos(y(1)+th2));
u=m3*bd*(a1*cos(y(1))*y(2)-
a1*cos(y(1))*(y(2)+thd2)/(cos(y(1)+th2)*cos(y(1)+th2))+a1*sin(y(1))*sin(y(1)+th2)*y(2)/co
s(y(1)+th2));
z=m2*a1*a2*(1+2*a1*cos(y(1))/(a2*cos(y(1)+th2)))*sin(th2)*(y(2)*y(2)+y(2)*thd2)/2-
m1*g*a1*cos(y(1))/2;
thdd1=(tor-(p+q+w+x+u-z))/(i+j+k);

dy(1)=y(2);
dy(2)=thdd1;
Matlab Program for Solution using Lagrange Multipliers and NOC

clc;clf;clear;
a1=1;
a=1;
a2=3;
b=3;
g=9.81;
m1=1;
m2=1;
m3=1;
i=1;
a0=4;
q1= 0;
q2=(.5*pi);
T=2;
for t1= 0:0.01:2
th1(i)= (((q2-q1))/T)*(t1-((T/(2*pi))*sin(2*pi*t1/T)));
thd1(i)=(((q2-q1)/T)*(1-cos(2*pi*t1/T)));
thdd1(i)= ((q2-q1)/T)*(2*pi/T)*(sin(2*pi*t1/T));

th2(i)=-th1(i)-asin((2*a1*sin(th1(i)))/a2);
thd2(i)=-(1+(2*a1*cos(th1(i)))/(a2*cos(th1(i)+th2(i))))*thd1(i);
thdd2(i)=sec(th1(i)+th2(i))*[2*a1/a2]*(sin(th1(i))*thd1(i)*thd1(i)-
cos(th1(i))*thdd1(i))+sec(th1(i)+th2(i))*(sin(th1(i)+th2(i))*(th1(i)+th2(i))*(th1(i)+th2(i)))-
thdd1(i);

b4(i)=a0-a1*cos(th1(i))-0.5*a2*cos(th1(i)+th2(i))
bd4(i)=(a1*sin(th1(i))-a1*cos(th1(i))*sin(th1(i)+th2(i))/cos(th1(i)+th2(i)))*thd1(i);
bdd4(i)=(a1*sin(th1(i))-
(a1*cos(th1(i))*sin(th1(i)+th2(i)))/cos(th1(i)+th2(i)))*thdd1(i)+(a1*cos(th1(i))*thd1(i)*thd1(i
))-
(a1*cos(th1(i))*thd1(i)*(thd1(i)+thd2(i)))/(cos((th1(i)+th2(i)))*cos((th1(i)+th2(i))))+a1*thd1(i
)*sin(th1(i))*tan(th1(i)+th2(i))*thd1(i);

i11(i)=(m1*a*a/3)+m2*(a*a+a*b*cos(th2(i))+b*b/3);
i12(i)=m2*((b*b/3)+0.5*a*b*cos(th2(i)));
i21(i)=m2*((b*b/3)+0.5*a*b*cos(th2(i)));
i22(i)=m2*b*b/3;

h1(i)=-m2*a*b*sin(th2(i))*thd1(i)*thd2(i)-m2*(a/2)*b*sin(th2(i))*thd2(i)*thd2(i);
h2(i)=m2*(a/2)*b*sin(th2(i))*thd1(i)*thd1(i);

g1(i)=m1*g*a/2*cos(th1(i))+m2*g*(a*cos(th1(i))+b/2*cos(th1(i)+th2(i)));
g2(i)=m2*g*b/2*cos(th1(i)+th2(i));
s11(i)=(i11(i)*thdd1(i)+i12(i)*thdd2(i)+h1(i)+g1(i));
s12(i)=(a1*sin(th1(i))+a2*.5*sin(th1(i)+th2(i)))* m3*bdd4(i);
s13(i)=-
((a1*cos(th1(i))+a2*.5*cos(th1(i)+th2(i)))*2*(i21(i)*thdd1(i)+i22(i)*thdd2(i)+h2(i)+g2(i)+a2*
.5*sin(th1(i)+th2(i))*m3*bdd4(i))/(a2*cos(th1(i)+th2(i))));
s1(i)=s11(i)+s12(i)+s13(i)
i=i+1;
end
t1=0:0.01:2
figure(1)
plot(t1,s1)
figure(2)
plot(t1,th1,'-',t1,thd1,':',t1,thdd1,'.')
legend('1st link pos','1st link velocity','1st link accelaratio')
figure(3)
plot(t1,th2,'-',t1,thd2,':',t1,thdd2,'.')
legend('2nd link pos','2nd link velocity','2nd link accelaratio')
figure(4)
plot(t1,bd4,':',t1,bdd4,'.')
legend('slider position','slider velocity','slider accelaration')
pp1=spline(t1,s1);
save('torquedata1.mat','pp1')
Pendode Function
function dy=pendode(t,y)
dy=zeros(2,1)
m1=1;m2=1;m3=1;a1=1;a2=3;a3=1;g=9.81;
th1=y(1);
thd1=y(2);
T1=0;
th2=-th1-asin((2*a1*sin(th1))/a2);
thd2=-(1+(2*a1*cos(th1))/(a2*cos(th1+th2)))*thd1;
thdd1=3*cos(th1+th2)^2/a1^2/(cos(th1+th2)^2*m1+3*cos(th1+th2)^2*m2
-6*m2*cos(th1+th2)*cos(th2)*cos(th1)+4*cos(th1)^2*m2
+6*cos(th1)*sin(th1+th2)*m3*cos(th1+th2)*sin(th1)
-3*cos(th1)^2*sin(th1+th2)^2*m3
-3*cos(th1+th2)^2*m3*sin(th1)^2)*(T1+m2*a1*a2*sin(th2)*thd1*thd2
+1/2*m2*a1*a2*sin(th2)*thd2^2-1/2*m1*g*a1*cos(th1)-m2*g*(a1*cos(th1)
+1/2*a2*cos(th1+th2)))-3/a2*cos(th1+th2)*(2*a1*cos(th1)
+a2*cos(th1+th2))/a1^2/(cos(th1+th2)^2*m1+3*cos(th1+th2)^2*m2
-6*m2*cos(th1+th2)*cos(th2)*cos(th1)
+4*cos(th1)^2*m2+6*cos(th1)*sin(th1+th2)*m3*cos(th1+th2)*sin(th1)
-3*cos(th1)^2*sin(th1+th2)^2*m3
-3*cos(th1+th2)^2*m3*sin(th1)^2)*(-1/2*m2*a1*a2*sin(th2)*thd1^2
-1/2*m2*g*a2*cos(th1+th2))+1/a1*(-3*m2*cos(th1+th2)*cos(th2)
+4*m2*cos(th1)+3*sin(th1+th2)*m3*cos(th1+th2)*sin(th1)
-3*sin(th1+th2)^2*m3*cos(th1))/(cos(th1+th2)^2*m1+3*cos(th1+th2)^2*m2
-6*m2*cos(th1+th2)*cos(th2)*cos(th1)+4*cos(th1)^2*m2
+6*cos(th1)*sin(th1+th2)*m3*cos(th1+th2)*sin(th1)-3*cos(th1)^2*sin(th1+th2)^2*m3
-
3*cos(th1+th2)^2*m3*sin(th1)^2)*(a1*sin(th1)*thd1+1/2*a2*sin(th1+th2)*(thd1+thd2)*thd
1
+1/2*a2*sin(th1+th2)*(thd1+thd2)*thd2)-3*cos(th1+th2)*m3/a1*(-cos(th1+th2)*sin(th1)
+sin(th1+th2)*cos(th1))/(cos(th1+th2)^2*m1+3*cos(th1+th2)^2*m2
-6*m2*cos(th1+th2)*cos(th2)*cos(th1)+4*cos(th1)^2*m2
+6*cos(th1)*sin(th1+th2)*m3*cos(th1+th2)*sin(th1)-3*cos(th1)^2*sin(th1+th2)^2*m3
-
3*cos(th1+th2)^2*m3*sin(th1)^2)*((a1*cos(th1)*thd1+1/2*a2*cos(th1+th2)*(thd1+thd2))*t
hd1
+1/2*a2*cos(th1+th2)*(thd1+thd2)*thd2);
dy(1)=y(2);
dy(2)=thdd1;
clc;clf;clear;
syms b s a m1 m2 m3 a1 a2 b4 th1 th2 g T c d thd1 thd2
S=[(m1*a1*a1/3)+m2*(a1*a1+a1*a2*cos(th2)+a2*a2/3) 2*((a2*a2/3)+0.5*a1*a2*cos(th2))
0 (a1*sin(th1)+a2*.5*sin(th1+th2)), -(a1*cos(th1)+a2*.5*cos(th1+th2));
m2*((a2*a2/3)+0.5*a1*a2*cos(th2)), m2*a2*a2/3, 0, -a2*.5*sin(th1+th2),
-2*0.5*cos(th1+th2));
0, 0 , m3 , -1, 0;
(a1*cos(th1)+a2*0.5*cos(th1+th2)), a2*0.5*cos(th1+th2), 0 , 0, 0;
(-a1*sin(th1)-a2*0.5*sin(th1+th2)), -(a2*0.5*sin(th1+th2)), -1, 0 , 0];

c=[T-(-m2*a1*a2*sin(th2)*thd1*thd2-m2*(a1/2)*a2*sin(th2)*thd2*thd2)-
(m1*g*a1/2*cos(th1)+m2*g*(a1*cos(th1)+a2/2*cos(th1+th2)));
-(m2*(a1/2)*a2*sin(th2)*thd1*thd1)-m2*g*a2/2*cos(th1+th2);
0;

a1*sin(th1)*thd1+a2*0.5*sin(th1+th2)*(thd1+thd2)*thd1)+(a2*0.5*sin(th1+th2)*(thd1+thd)
*thd2

((a1*cos(th1)*thd1+a2*0.5*cos(th1+th2)*(thd1+thd2))*thd1)+(a2*0.5*cos(th1+th2)*(thd1+t
hd2)*thd2)];
d=inv(S)*c
RESULTS

 INVERSE DYNAMICS
FREE SIMULATION
FORWARD DYNAMICS
PLOTS FOR LINK #1
PLOTS FOR LINK #2
PLOTS FOR SLIDER
TORQUE OBTAINED
FREE SIMULATION
Forward Dynamics
10
link1 pos
link2 vel
8

-2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
Verification
6

link1 pos
link2 vel
4

-2

-4

-6
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2

M2=0; m3=0; a2=0;


Verification
5

link1 posi
4
link1 vel

-1

-2

-3

-4
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
ROBO ANALYSER

Comparison of Results obtained


from Matlab and Robo-Analyser
for RP manipulator System.