У меня проблема с этим сценарием MATLAB. Я должен сделать 4-х стержневое соединение с фиксированным стержнем, прикрепленным к соединителю. Планка должна оставаться прикрепленной к механизму, как на картинке 1 для полного вращения Как должен выглядеть механизм
Точка M фиксируется в соответствии с точками A и N в соответствии с M. При некотором угле точка M перемещается на другой стороне точки A и N на другой стороне M, поэтому планка больше не находится на механизме, как показано на изображение 2 [Ошибка] 2
Как я могу их исправить, чтобы механизм выглядел как на первом изображении для всего поворота?
Я также должен сделать семейство прямых линий для стержня, прикрепленного к механизму, и кривую, которую описывают линии. Таким образом, в конце я должен получить картину со всеми положениями стержня для поворота механизма на 360 градусов.
код:
clear all;
close all;
conv=pi/180; % Fattore di conversione gradi-rad
%%%%%coordinate delle cerniere fisse A0 e B0
x_A0=17;
y_A0=0;
x_B0=39;
y_B0=0;
th2min=0*conv; % angolo di partenza del membro movente r2
th2max=2*pi; % angolo di arrivo del membro movente r2
r1=sqrt((x_A0-x_B0)^2+(y_A0-y_B0)^2) % distanza cerniere fisse
r2=30; % dim ensione membro movente
r3=40; % dimensione biella
r4=35; % dimensione membro cedente
r8=20;
th1=atan((y_B0-y_A0)/(x_B0-x_A0)); % angolo tra le cerniere fisse
sigma=-1;
i=1;
for th2=th2min:conv:(th2max)
th(i)=th2; %%%input angle%%%
th_deg(i)=th(i)/conv;
%%%%%moving pivot A trajectory%%%%%
x_A(i)=x_A0+r2*cos(th(i));
y_A(i)=y_A0+r2*sin(th(i));
%%%%%closure equations%%%%%
A(i)=2*r1*r4*cos(th1)-2*r2*r4*cos(th(i));
B(i)=2*r1*r4*sin(th1)-2*r2*r4*sin(th(i));
C(i)=-2*r2*r1*((cos(th(i))*cos(th1))+(sin(th1)*sin(th(i))))+r1.^2+r2.^2+r4.^2-r3.^2;
delta(i)=B(i).^2-C(i).^2+A(i).^2;
den_delta(i)=C(i)-A(i);
num_delta(i)=-B(i)-sigma*sqrt(delta(i));
num_delta(i)=subs(num_delta(i));
den_delta(i)=subs(den_delta(i));
th4(i)=2*atan(num_delta(i)/den_delta(i));%%%%output angle%%%%%
th4_deg(i)=th4(i)/conv;
num(i)=r1*sin(th1)+r4*sin(th4(i))-r2*sin(th(i));
den(i)=r1*cos(th1)+r4*cos(th4(i))-r2*cos(th(i));
num(i)=subs(num(i));
den(i)=subs(den(i));
th3(i)=atan(num(i)/den(i));%%%%coupler angle%%%%%
% %%%%%moving pivot B trajectory%%%%%
x_B(i)=x_B0+r4*cos(th4(i));
y_B(i)=y_B0+r4*sin(th4(i));
r6=r3/2;
rM=r2+r6*(cos(th3(i))*1i+sin(th3(i)*1j));
if th2<= 248*conv
x_M(i)=x_B(i)-r6*cos(th3(i));
y_M(i)=y_B(i)-r6*sin(th3(i));
else
x_M(i)=x_B(i)+r6*cos(th3(i));
y_M(i)=y_B(i)+r6*sin(th3(i));
end
r7=tan(pi/6)*(r3/2);
rN=rM+r7;
if th2<= 248*conv
x_N(i)=x_M(i)-r7*cos(th3(i)+(pi/2));
y_N(i)=y_M(i)-r7*sin(th3(i)+(pi/2));
else
x_N(i)=x_M(i)+r7*cos(th3(i)+(pi/2));
y_N(i)=y_M(i)+r7*sin(th3(i)+(pi/2));
end
rc=rN+r8;
x_C(i)=x_N(i)+r8*cos(th3(i));
y_C(i)=y_N(i)+r8*sin(th3(i));
x_D(i)=x_N(i)-r8*cos(th3(i));
y_D(i)=y_N(i)-r8*sin(th3(i));
i=i+1;
end
%
% %%%%%Plot linkages%%%%%
for k=1:length(th);
px_A0_A=[x_A0 x_A(k)];
py_A0_A=[y_A0 y_A(k)];
px_A_B=[x_A(k) x_B(k)];
py_A_B=[y_A(k) y_B(k)];
px_B_B0=[x_B(k) x_B0];
py_B_B0=[y_B(k) y_B0];
px_A0_B0=[x_A0 x_B0];
py_A0_B0=[y_A0 y_B0];
px_M_N=[x_M(k) x_N(k)];
py_M_N=[y_M(k) y_N(k)];
px_C_N=[x_C(k) x_N(k)];
py_C_N=[y_C(k) y_N(k)];
px_D_N=[x_D(k) x_N(k)];
py_D_N=[y_D(k) y_N(k)];
h=plot(x_A0,y_A0,'sk',x_B0,y_B0,'sk',x_A0,y_A0,'ok',x_B0,y_B0,'ok',...
px_A0_A,py_A0_A,'-r',px_B_B0,py_B_B0,'-m',px_A_B,py_A_B,'-g',px_M_N,py_M_N,'-h',px_C_N,py_C_N,'-p',px_D_N,py_D_N,'-p',...
x_A(k),y_A(k),'ob',x_B(k),y_B(k),'ob',x_M(k), y_M(k), 'ob',x_N(k), y_N(k),'ob',x_C(k),y_C(k), 'ob',x_D(k),y_D(k),'ob');
text(x_A0-3,y_A0-5,'A0','fontsize',10,'fontname','Cambria');
text(x_B0-3,y_B0-5,'B0','fontsize',10,'fontname','Cambria');
text(x_A(k),y_A(k)-5,'A','fontsize',10,'fontname','Cambria');
text(x_B(k),y_B(k)-5,'B','fontsize',10,'fontname','Cambria');
text(x_M(k),y_M(k)-5,'M','fontsize',10,'fontname','Cambria');
text(x_N(k),y_N(k)-5,'N','fontsize',10,'fontname','Cambria');
text(x_C(k),y_C(k)-5,'C','fontsize',10,'fontname','Cambria');
text(x_D(k),y_D(k)-5,'D','fontsize',10,'fontname','Cambria')
xlabel('X') % x-axis label
ylabel('Y') % y-axis label
axis ([-50 40 -50 60])
axis equal
grid on
pause(0.001)
end
pos=0;
px_A0_A_p1=[x_A0 x_A(pos)];
py_A0_A_p1=[y_A0 y_A(pos)];
px_A_B_p1=[x_A(pos) x_B(pos)];
py_A_B_p1=[y_A(pos) y_B(pos)];
px_B0_B_p1=[x_B(pos) x_B0];
py_B0_B_p1=[y_B(pos) y_B0];
px_A0_B0_p1=[x_A0 x_B0];
py_A0_B0_p1=[y_A0 y_B0];
px_M_N_p1=[x_M(pos) x_N(pos)];
py_M_N_p1=[y_M(pos) y_N(pos)];
figure(1)
hold on
plot(x_A0,y_A0,'sk','LineWidth',2)
plot(x_B0,y_B0,'sk','LineWidth',2)
plot(x_A(pos),y_A(pos),'bo')
plot(x_B(pos),y_B(pos),'bo')
plot(x_C(pos),y_C(pos),'bo')
plot(x_D(pos),y_D(pos),'bo')
plot(x_C,y_C,'b-')
plot(x_D,y_D,'b-')
plot(px_A0_A_p1,py_A0_A_p1,'r-')
plot(px_B0_B_p1,py_B0_B_p1,'m-')
plot(px_A_B_p1,py_A_B_p1,'g-')
plot(px_A0_B0_p1,py_A0_B0_p1,'k-')
plot(px_M_N_p1,py_M_N_p1,'h-')
text(x_A0-3,y_A0-2,'A0','fontsize',10,'fontname','Cambria');
text(x_B0-3,y_B0+2,'B0','fontsize',10,'fontname','Cambria');
text(x_A(pos)+3,y_A(pos)+1,'A','fontsize',10,'fontname','Cambria');
text(x_B(pos)+2,y_B(pos),'B','fontsize',10,'fontname','Cambria');
xlabel('X') % x-axis label
ylabel('Y') % y-axis label
% axis ([-20 40 -20 30])
axis equal
grid on