four bar linkage coupled.

235 Views Asked by At

How can I get the point (x,y) at a four bar linkage coupled? The four bar linkage is free until is connected with another fifth bar, then it's not free anymore.

See image below, when the bar FE is connected then the mechanism is fixed, so knowing all the lengths of the bars and coordinates from A,B,F, How to get the point E(x,y) once this fifth bar is coupled?:

four bar linkage with acoplation point

Any tip how to start?

1

There are 1 best solutions below

4
On

You get a polynomial system from the geometric relations. Determine the angle of the triangle by its point $(c,s)$ on the unit circle, $c^2+s^2=1$. That means the local coordinates of the triangle translate to global coordinates via $C+\pmatrix{c\\s}x+\pmatrix{-s\\c}a$. Then the points are connected via the equations \begin{align} \pmatrix{D_x\\D_y} &= \pmatrix{C_x\\C_y}+\pmatrix{c&-s\\s&c}\pmatrix{x_D\\y_D} \\ \pmatrix{E_x\\E_y} &= \pmatrix{C_x\\C_y}+\pmatrix{c&-s\\s&c}\pmatrix{x_E\\y_E} \\ (C_x-A_x)^2+(C_y-A_y)^2&=l_{AC}^2\\ (D_x-B_x)^2+(D_y-B_y)^2&=l_{BD}^2\\ (F_x-E_x)^2+(F_y-E_y)^2&=l_{EF}^2\\ \end{align} where $(x_D,y_D),(x_E,y_E)$ are the design parameters of the triangle in the angle-zero position, and $l_{AC},l_{BD},l_{EF}$ the lengths of the linkage. These are $8$ equations for the $8$ variables $c,s,C_x,C_y,D_x,D_y,E_x,E_y$. The degrees of the equations, essentially 4 quadratic equations, give a Bezout bound of $16$ solutions. Due to the structure this might be less in actual computations.

Measuring the lengths in the image one can program this system in some CAS, here Magma (online calculator), and solve it.

AC:=19; BD:=16; EF:=15; 
Ax:=0; Ay:=0; Bx:=30; By:=0; Fx:=33; Fy:=27; 
xD:=7; xE:=6; yD:=0; yE:=8;
P<Cx,Cy,s,c> := PolynomialRing(Rationals(),4);
Dx := Cx+c*xD-s*yD;
Dy := Cy+s*xD+c*yD;
Ex := Cx+c*xE-s*yE;
Ey := Cy+s*xE+c*yE;
eqns := [ c^2+s^2-1, (Cx-Ax)^2+(Cy-Ay)^2-AC^2, (Dx-Bx)^2+(Dy-By)^2-BD^2, (Fx-Ex)^2+(Fy-Ey)^2-EF^2 ];
eqns:=GroebnerBasis(eqns); eqns;
RR:=RealField(60);
PR<z>:=PolynomialRing(RR);
crts := Roots(Evaluate(eqns[4],[0,0,0,z]));
for rc in [ Re(r[1]) : r in crts | (RR!(1+Im(r[1])) eq 1)] do 
  rCx := Evaluate(-eqns[1],[0,0,0,rc]); 
  rCy := Evaluate(-eqns[2],[0,0,0,rc]);
  rs  := Evaluate(-eqns[3],[0,0,0,rc]);
  "[c,s]=",[rc,rs];
  "C=",[rCx,rCy];
  "D=",[  rCx+rc*xD-rs*yD, rCy+rs*xD+rc*yD];
  "E=",[  rCx+rc*xE-rs*yE, rCy+rs*xE+rc*yE];
end for;

giving the solution basis in a univariate representation

[
    Cx - 14432169851446728654000000/5191801014443045982521*c^5 + 6661313232418303295256000/305400059673120351913*c^4 - 344560879940427572314392990/5191801014443045982521*c^3 + 29643530141007224152841697/305400059673120351913*c^2 - 
        351171917249443265981900398/5191801014443045982521*c + 278840823389663655039230120/15575403043329137947563,
    Cy - 2584993129060674394448916975900000/37501110413030887604662545667051*c^5 + 310369619334037802774192826019200/37501110413030887604662545667051*c^4 + 110334151073853080090444357018378757/75002220826061775209325091334102*c^3 - 
        306176365574148197298604595354792859/75002220826061775209325091334102*c^2 + 148061781072429761484841313305727010/37501110413030887604662545667051*c - 48375095087854278718671606563698219/37501110413030887604662545667051,
    s - 299904501444837918174000/1916738432567151324491*c^5 + 2341476274178540137175712/1916738432567151324491*c^4 - 710894726963939990058445899/191673843256715132449100*c^3 + 1039926492134194763600163459/191673843256715132449100*c^2 - 
        36310230545435198504884227/9583692162835756622455*c + 28959787323808665177574891/28751076488507269867365,
    c^6 - 459249841/47103875*c^5 + 184381360239781/4748070600000*c^4 - 44100750195001/547854300000*c^3 + 432417076439221/4748070600000*c^2 - 339657464603267/6409895310000*c + 118589060144749/9614842965000
]

From the last equation one can see that there are only 6 complex solutions, this should also be the generic number of solutions for any parameter set.

[c,s]= [ 0.989684439405989047023683799008623465290796420678386204668705, 0.14326447709621947434448968736051231685801365866322695836 ]
C= [ 14.3734662977301352208542275425509834730410693615805016, 12.42591914459513774813401165305227650735730062461067722022 ]
D= [ 21.30125737357205855002001413561134773007664430632920503268, 13.42877048426867406854543946457586272536339623525326592874 ]
E= [ 19.16545711739631370824041283771862572992173861634500316113, 21.20298152242036697039042016928433813083175394201712860773 ]

[c,s]= [ 0.768813742096953312638710171385170355413562460645114032343627, -0.63947277499740312072900053450613600189859725729402276437 ]
C= [ 12.2002476699512298812111359300276598390921202398232864, 14.56550571699622059354125381291948655312707034481205737774 ]
D= [ 17.58194386462990306968210712972385232698705746433908462641, 10.08919629201439874843825007137653453983688954375389802715 ]
E= [ 21.92891232251217472287540123438776998676227306204615270902, 16.87917900378742837027693197696403338504398648620883305027 ]

Two real solutions were found, for angles close to 0° and -30°, the second one should correspond to the image.