46
Mécanique Analytique et CFAO Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement d’un pendule double

Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Embed Size (px)

Citation preview

Page 1: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

1

Travaux pratiques de mécanique analytique

Simulation en temps réel du mouvement d’un

pendule double

Page 2: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

2

Mise en situation...Mise en situation...

m

mA

B

l

l

X

Y

Positions:

Vitesses:

Point A: (l sin , -l cos )

Point A: (l d/dt cos , l d/dt sin )

Point B: (l.(sin + sin ), -l.(cos + cos ))

Point B: (l.(d/dt cos + d/dt cos ),

l.( d/dt sin + d/dt sin ))

m g l = 1 m l2 = 1

Page 3: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

3

Lagrange (1)Lagrange (1)

L = T - V

22

22

mvTmv

T pour toute les masses du système

vitesse scalaire de la masse condidérée22yx vvv

222 lvA cos22222 lvB

2T = ))cos(2.2.(l.m 222

Page 4: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

4

Lagrange (2)Lagrange (2)

V = mgh = - mgl cos - m g l (cos + cos )

L = T - V = ))cos(2.2.(2

. 222

lm+ mgl cos + m g l (cos + cos )

sin)sin().cos(

sin2)sin()cos(.222

22

Page 5: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

5

Système différentielSystème différentiel

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

cossin

cossin

sin2sin2

cos2

1 2

2

2

mgl

mgl

Page 6: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

6

Fonction différentielle ODE45Fonction différentielle ODE45

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Page 7: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

7

Définition des vecteurs utilisésDéfinition des vecteurs utilisés

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Page 8: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

8

Définition des vecteurs utilisésDéfinition des vecteurs utilisés

ODE45 Fonction de dérivation décrivant le système différentiel

Ordre des équations du système 2 ( , )

Avant Aprèsdt

d

t

1

dt

d

Page 9: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

9

Fonction de dérivationFonction de dérivation

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

Page 10: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

10

Variables temporairesVariables temporaires

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

Page 11: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

11

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

Page 12: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

12

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

Page 13: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

13

Mise en correspondanceMise en correspondance

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

Page 14: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

14

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cossin

cossin

sin2sin

cos2

1 2

2

2

mgl

mgl

Page 15: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

15

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

sin2

2

1 2

2

Page 16: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

16

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(

s = sin( - )c = cos( - )

dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

sin2

2

1 2

2

Page 17: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

17

s = sin( y(1) - )c = cos(y(1) - )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

cmgl

cs

mgls

cc

sin

y(1)sin2

2

1 2

2

Page 18: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

18

cmgl

cs

mgls

ccy(3)sin

y(1)sin2

2

1 2

2

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Page 19: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

19

cmgl

yycs

mgls

ccy(3)sin

)2()2(

y(1)sin2

2

12

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Page 20: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

20

cmgl

yycs

mglyys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Page 21: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

21

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

dy(2) =

Page 22: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

22

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Search and replaceSearch and replace

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1dy(2) =

dy(4) =

cy

yycs

yyys

cc)1(sin

)4()4(

)3(sin2)2()2(2

2

1

Page 23: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

23

s = sin( y(1) - y(3) )c = cos(y(1) - y(3) )

Fonction différentielle ODE45Fonction différentielle ODE45

function [ dy ] = dp ( t, y )

)4(

)3(

)2(

)1(

dy

dy

dy

dy

dyy

y

y

y

y

)4(

)3(

)2(

)1(dy(1) = y(2)

dy(3) = y(4)

c

yycs

yys

ccy(3)sin

)2()2(

y(1)sin2)4()4(

2

1dy(2) =

dy(4) =

cy

yycs

yyys

cc)1(sin

)4()4(

)3(sin2)2()2(2

2

1

Page 24: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

24

Résolution numériqueRésolution numérique

options = odeset('RelTol',1e-8);

[t,angle] = ode45('dp',[0:0.1:100],[1 1 10 0],options);

Conditions initiales:

0

10

1

1

Système à résoudre

Temps: de 0 à 100 secondes par pas de 0,1 sec

Page 25: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

25

Variables utiliséesVariables utilisées

x

x

B

Ax

0

y

y

B

Ay

0

plot ( x , y ) ( 0 , 0 ) ( Ax , Ay ) ( Bx , By )

tntntntn

tttt

tttt

angle

2222

1111

Page 26: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

26

Premier affichagePremier affichage

%Allocation mémoirex=zeros(3,1);y=zeros(3,1);

%Calcul de coordonnéesx(2)=10*sin(angle(1,1));y(2)=-10*cos(angle(1,1));

x(3)=x(2)+10*sin(angle(1,3));y(3)=y(2)-10*cos(angle(1,3));

%Préparation session graphique et premier affichagefigure;axis([-30 30 -30 30])hold on;line(x,y,'LineWidth',2);

Page 27: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

27

Boucle d’affichageBoucle d’affichage

%Boucle d'affichagefor i=1:1000 x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1));

x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); line(x,y,'LineWidth',2); end

Page 28: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

28

Gestion dynamiqueGestion dynamique

%Boucle d'affichagefor i=1:100 x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); clf; axis([-30 30 -30 30]); line(x,y,'LineWidth',2); drawnow;

Page 29: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

29

Temps réelTemps réel

%Boucle d'affichagefor i=1:100 tic; x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3)); while toc<0.1; end; clf; axis([-30 30 -30 30]); line(x,y,'LineWidth',2); drawnow; end

Page 30: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

30

Gestion anciennes positionsGestion anciennes positions

%Allocation mémoirexold=zeros(3,1);yold=zeros(3,1);

%Boucle d'affichagefor i=1:100 tic; xold(2)=x(2); yold(2)=y(2); xold(3)=x(3); yold(3)=y(3); x(2)=10*sin(angle(i,1)); y(2)=-10*cos(angle(i,1)); x(3)=x(2)+10*sin(angle(i,3)); y(3)=y(2)-10*cos(angle(i,3));

while toc<0.1; end; plot(xold,yold,'w','LineWidth',2);plot(x,y,'LineWidth',2);drawnow; end

Page 31: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

31

Approche “Approche “orienté-objet”orienté-objet”

Objet graphique

Adresse

Propriété 2

Propriété n

Propriété ...

Propriété 1

Instruction 1

Instruction 2

Instruction ...

Instruction n

Page 32: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

32

Approche “Approche “orienté-objet”orienté-objet”

Objet graphique

Adresse

YData

Color

ZData

XData

plotaxis

Style

Page 33: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

33

Récupération de l’adresseRécupération de l’adresse

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

Page 34: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

34

Données en xDonnées en x

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

Page 35: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

35

Données en yDonnées en y

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

Page 36: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

36

Pas de données en zPas de données en z

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

Page 37: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

37

CouleurCouleur

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

Page 38: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

38

StyleStyle

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *

Page 39: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

39

Variable privéeVariable privée

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *EraseMode = none

Page 40: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

40

Instruction graphiqueInstruction graphique

Objet graphique

Adresse

YData

Color

ZData

XData

Instruction

Style

graph1=plot(x,y,'w*','EraseMode','none');

= 1.05684523 = graph1

= x

= y

= w

= *EraseMode = none

= plot

Page 41: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

41

Accès variables membresAccès variables membres

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData

Page 42: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

42

Modification données en xModification données en x

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

Page 43: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

43

Modification données en yModification données en y

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

= ynew

Page 44: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

44

Modification paramètres diversModification paramètres divers

set(graph1,'XData',xnew,'YData',ynew,'LineWidth',2);

graph1

YData

XData = xnew

= ynew

LineWidth = 2

Page 45: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

45

Pour notre problèmePour notre problème

%Préparation session graphique et premier affichagep=plot(x,y,'EraseMode','none');q=plot(xold,yold,'w','EraseMode','none');

%Boucle d'affichageset(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);

Page 46: Mécanique Analytique et CFAO 1 Travaux pratiques de mécanique analytique Simulation en temps réel du mouvement dun pendule double

Mécanique Analytiqueet CFAO

46

Approche “Approche “orienté-objet”orienté-objet”

%Préparation session graphique et premier affichagep=plot(x,y,'EraseMode','none');q=plot(xold,yold,'w','EraseMode','none');

%Boucle d'affichageset(q,'XData',xold,'YData',yold,'LineWidth',2); set(p,'XData',x,'YData',y,'LineWidth',2);