40
Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 1 Projet Robotique LEGO NXT Etude de la motorisation du robot LEGO

Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 1

Projet Robotique LEGO NXT

Etude de la motorisation du robot LEGO

Page 2: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 2

Projet Robotique LEGO NXT

Objectif

- analyser le fonctionnement des moteurs NXT en régime statique et dynamique

- aborder la régulation de position et/ou de vitesse

- intégrer les moteurs dans l'étude du mouvement du robot

- étudier le déplacement du robot en situation réelle

- piloter les mouvements en vue de la réalisation d'un objectif

- asservir les mouvements en vue du déplacement autonome du robot suivi de ligne→

Page 3: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 3

Projet Robotique LEGO NXT

- éléments du servo-moteur- caractéristiques du moteur- capteur de position- asservissement de base- étude du régulateur PID- numérisation de la régulation- prise en compte des non-linéarités

Etude de la motorisation NXT

Page 4: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 4

Projet Robotique LEGO NXT

Capteur : codeur optique de position (rotation) sur l'arbre du moteur

Servo-moteur NXT

Problèmes inhérents à la construction: - Jeu codeur/ moteur , jeu moteur/arbre de sortie- Pas de mesure électrique (tension, courant)- Pas de mesure de vitesse instantanée

Actionneur électrique :moteur à courant continu à rotor sans fer et aimants permanents(flux constant)

Effecteur: réducteur mécanique à pignons avec sortie rotation

Réducteur étage par étage 10:30:40 = 1:4 9:27 = 1:3 10:20 = 1:2 10:13:20 = 1:2 Réduction totale 1:48

Page 5: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 5

Projet Robotique LEGO NXT

Servo-moteur NXT : Codeur optique

Y = A XOR B

logique°

A

B

Y

DIRCompteur

décompteur°

remise à zéro

position numériquede l'arbre de sortie

360 encoder pulses per revolution of a LEGO motor (1° resolution)with quadrature signals, (max resolution is 720 pulses/rev but not used)

° éléments réalisés par software sur processeur ARM

codeur en quadrature

Page 6: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 6

Projet Robotique LEGO NXT

Hacheur de commande intégré à la brique NXT

Servo-moteur NXT : Câblage général

Page 7: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 7

Projet Robotique LEGO NXT

Servo-moteur NXT : Hiérarchie du contrôle

AVR ATmega(8 bits)

AVR32(32 bits)

Hacheur bidirectionnel Moteur CC

commandepwm

Batterie7.2V

Programme

Codeur optiquesortie

puissancepwm

liaison mécanique

AVR32

ATmega8

Hacheurs

Page 8: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 8

Projet Robotique LEGO NXT

Servo-moteur NXT: équations

Equation mécanique:

avec

courant rotor A

tension rotor V

force contre électromotrice V

angle arbre sortie rad

vitesse arbre sortie rad/s

couple moteur N.m

couple résistant N.m

inductance rotor H

résistance rotor

constante de couple méca N.m/A

constante de fem V/rad/s

moment d'inertie kg.m2

coefficient de frotement visqueux Nm/rad/s

ia

ea

e f

Cm

C r

LRK m

K e

Jf

Ldia

dtR iae f = ua Equation électrique:

avec

J d dt

f = Cm−C r

e f = K e

Cm = K m ia

En régime statique, les dérivées sont nulles.

R I aK e = U a

K m I a− f = C r

La relation statique est donc :

[ R K e

K m − f ][ I a

] = [U a

C r ]Les valeurs des paramètres peuvent être déduites de quelques expériences

Page 9: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 9

Projet Robotique LEGO NXT

Servo-moteur NXT : expérimentations

caractéristique à vide (philohome.com) caractéristique en court circuit

travail : calculer Ke en V/rd/s à partir de la courbe travail : évaluer Ra et Km

Page 10: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 10

Projet Robotique LEGO NXT

caractéristique en charge à couple constant (philohome.com)

travail : évaluer f à partir du tableau ci-dessus

Servo-moteur NXT : expérimentations

Page 11: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 11

Projet Robotique LEGO NXT

Servo-moteur NXT : expérimentations (philohome.com)

Cm =K m

RU a −

K e K m

R droite de pente −

K e K m

R

Cu = K m I a − f droite de pente , ordonnée à l'origine non nulle K m

travail : évaluer Km, Ke et f à partir des relevés graphiques fournis ci-dessus

Page 12: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 12

Projet Robotique LEGO NXT

Servo-moteur NXT :

Ra = de 6.85 à 7.6K e = 0.46V /rad /sK m = 0.32 N.m / Af = de 1.12 à 2.2×10−3 Nm/rad / s

valeurs déduites ( signalées dans diverses publications, à comparer aux valeurs trouvées):

autres valeurs signalées:

(mesure directe) (valeur à confirmer par les mesures!)

L = 4.88 mHJ m = 1×10−5 kg.m2

valeur du couple de friction (collage) :

avec tension de décollage du moteurT c = K m

vc

R=3.56×10−4 Nm v c

Page 13: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 13

Projet Robotique LEGO NXT

Servo-moteur NXT : simulation de la partie mécanique

entrée modulation MLI/PWM

sortie mécaniquearbre moteur

tension moteur

Hacheur 1 quadrant

travail : réaliser cette simulation multiphysique; elle sera faite avec l'extension COSELICA sur Scicoslab; l'installation de l'extension sera guidée par l'enseignant

Page 14: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 14

Projet Robotique LEGO NXT

Servo-moteur NXT : simulation du modulateur PWM

sortie PWM

Horloge PWM 7.5kHz

entrée commande [0..100]

modulateur 1 quadrant

Page 15: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 15

Projet Robotique LEGO NXT

Servo-moteur NXT : simulation du moteur Signal = échelon d'amplitude 50%

travail : vérifier la valeur du régime permanent; le gain statique correspond-il à la valeur prévue ?

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0 .0050-1.0

-0 .5

0.0

0.5

1.0

1.5

2.0Graphic 1

t

y

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0 .0050-5

0

5

10

15Graphic 2

t

y

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0 .00500

10

20

30

40

50Graphic 3

t

y

Page 16: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 16

Projet Robotique LEGO NXT

moteur

Servo-moteur NXT : hacheur 4 quadrants

Modulateur MLI et Schéma hacheur 4Q

entrée modulateur

signal MLI

travail pour moi: modifier le schéma pour quela tension de batterie soit une variable d'entréedu hacheur

Page 17: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 17

Projet Robotique LEGO NXT

Servo-moteur NXT : hacheur 4 quadrants

Réponse échelon

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.00500

10

20

30

40

50

60Graphic 1

t

y

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.005002468

101214

Graphic 2

t

y

0.0000 0.0005 0.0010 0.0015 0.0020 0.0025 0.0030 0.0035 0.0040 0.0045 0.0050

0

5

10

15

20Graphic 3

t

y

Page 18: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 18

Projet Robotique LEGO NXT

Servo-moteur NXT : équations dynamiques

u = L didt

Ri K e K m i = J d dt

f

Pour un couple utile Cr = cste, on a :

Passage en Laplace:

U = L p IR IK e K m I = J p f

pU p

=K e/K e K mRf

1 RJ fLK e K mRf p LJ

K e K mRfp2

par identification avec le second ordre , on obtient : k 0

1 2 n

p p2

n2

travail : calculer la fréquence propre et l'amortissement , vérifier la cohérence avec la simulation

n = K e K mRfL J

=12

1K e K mRf 1/2

RJ fLLJ 1/2k 0 =

K e

K e K mRf

Page 19: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 19

Projet Robotique LEGO NXT

Servo-moteur NXT : équations dynamiques

Cas où le système est amorti ≥1

On pose : e =LR

m =RJ

K e K mRf

d'où avec pU p

≈K 0

1e p1m pK0 =

K e

K e K m+Rf

Réponse : Avec les valeurs proposées, on obtient :

ces valeurs étant proches, le modèle simplifié n'est pas valide; il faut conserver le modèle complet.

e=0.72 ms m=0.41 ms

Travail : calculer les constantes de temps avec les paramètres proposés

Page 20: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 20

Projet Robotique LEGO NXT

Servo-moteur NXT : test direct (en l'air sans roues)Travail à faire: Faire un programme nxc de relevé à l'échelon de la position des moteurs

Méthode :- les mesures [position] converties en chaîne de caractère seront stockées dans un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc ou Matlab/Scilab, les champs texte seront séparés par des blancs et chaque ligne terminée par "return". - créer le fichier par CreateFile (s'il existe un ancien fichier du même nom, le supprimer préalablement)- l'heure d'une mesure est donnée par CurrentTick- la position d'un moteur est donnée par MotorTachoCount, la vitesse par différence des positions entre deux mesures- initialiser toutes les variables utilisées- ne pas oublier d'arrêter les moteurs en quittant !- contrôler le temps de boucle par Wait(ms) [valeur très petite, voire nulle]

Exloitation: Tracer la réponse en position sur Calc ou Scilab et valider [ou non !] les paramètres proposés du moteur. En déduire les caractéristiques du moteur

Page 21: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 21

Projet Robotique LEGO NXT

0 50 100 150 200 2500

10

20

30

40

50

60

70

80

Servo-moteur NXT : test direct (en l'air sans roues)Résultat: tracé sur Scilab pour PWM=50%

Commandes sous Scilab [M,text]=fscanfMat('test.txt');plot2d(M(:,1),M(:,2:3))

Page 22: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 22

Projet Robotique LEGO NXT

Servo-moteur NXT : test direct (en l'air sans roues)

Résultat par exploitation graphique directe:La réponse en position est une rampe (intégrale de la réponse à l'échelon), plutôt caractéristique d'un premier ordre que d'un deuxième ordre

On constate que l'asymptote pour t-->infini est une droite de pente 52 pulsesen 150ms soit 6.01 rad/s

La commande est de 50% avec une tension de batterie (relevée avec Bricx) de 7.52V. En supposant les pertes du hacheur négligeables (commutateurs idéaux à Ron très faible), la commande est donc de 3.76V

On en déduit le gain en vitesse d'où

Cette valeur est comparable aux valeurs décrites par les autres auteurs .

K e ≈ 0.62rad / s/Vk 0 =6.013.76

=1.60 rad /s/V

En supposant que la commande a été appliquée sans retard par le processeur, l'asymptote montre un traînage de 50 ms ; c'est la constante de temps mécanique du système

il est vraisemblable que la valeur de Jmoteur proposée précédemment est fausse !

= 50×10−3 s

Page 23: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 23

Projet Robotique LEGO NXT

Servo-moteur NXT : test direct (en l'air sans roues)

Résultat par modélisation de la réponse :La réponse en position est une rampe (intégrale de la réponse à l'échelon), plutôt caractéristique d'un premier ordre que d'un deuxième ordre. En considérant que la fonction de transfert est du 1er ordre (avec intégration pour la position) , la réponse temporelle est de la forme :

d'où y (t )=A K (t−τ)+ A K τ e− t /τ

y (t)=L−1[ Ap

Kp(1+τ p) ] avec τ=

RJK e

2 et K =1 /K e

function z = fun (p , t , y )z = y - p (1 ) ( t – p(2)) - p (1) * p(2) exp(− t / p(2) ) ;∗ ∗

endfunction

p0=[ 0 , 0 ] ;Uo=0.50*7.2;

[ f f , p]=leastsq ( l i s t ( fun , t , y/Uo) , p0 ) ;

Résolution sous Scilab par les moindres-carrés non-linéaires :

Travail à faire :- appliquer la méthode proposée aux mesures faites précédemment .

référence State Feedback Controller Design Roberto Bucher April 18, 2010

Page 24: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 24

Projet Robotique LEGO NXT

Servo-moteur NXT : avec roues (en l'air)L'inertie totale est la somme de l'inertie des systèmes en rotation (rotor moteur, pignons, roue) ajout de l'inertie de la roue→

masse = 0.017 kg; Rayon = 0.028 m ;

A.N. En supposant la masse concentrée sur la périphérie de la roue, l'inertie est : soit J= 1.38 e-5 kgm^2 (valeur surévaluée)

J = mr2

Travail : - Refaire la mesure de la réponse à l'échelon.

- A-t-elle évolué par rapport à la réponse en l'air sans roues ? - Conclure sur la valeur de J estimée .

Page 25: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 25

Projet Robotique LEGO NXT

Servo-moteur NXT : avec roues (en l'air)

Résultat:

Les nouvelles mesures donnent sensiblement le même résultat que précédemment .

L'inertie des roues est donc négligeable devant l'inertie propre du moteur . Ceci vient confirmer que la valeur d'inertie proposée en début de l'étude est incorrecte !

Page 26: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 26

Projet Robotique LEGO NXT

Servo-moteur NXT : robot en translationL'inertie totale est la somme de l'inertie des systèmes en rotation (rotor, pignons, roue) et de l'inertie du robot (masse en translation)

v

M

r

L'énergie cinétique de M en translation est égale à l'énergie cinétique d'une inertie J_equ en rotation:

avec d'où :

12

J equ 2 =

12

M v2 v = r J equ = Mr2

masse totale en translation pour le robot différentiel : 0.590 kg

Travail : Refaire la réponse à l'échelon en posant le robot sur une surface et évaluer la nouvelle constante de temps. Peut-on donner une estimation de l'inertie propre du moteur par comparaison avec l'expérience précédente à vide?

Page 27: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 27

Projet Robotique LEGO NXT

0 50 100 150 200 250 300 350 400 450 5000

50

100

150

Servo-moteur NXT : robot en translationRésultat:

La constante de temps passe à 60ms environ. Etant donné que , on peut

en déduire que la constante de temps a évolué de 20% soit

m =RJ

K e K mRf

J moteur = 5×J translation

J translation = M 1/2corps rroue2 = 0.295×0.0282 =0.23 kg.m2 ⇒ J moteur = 1.15×10−3 kg.m2

Page 28: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 28

Projet Robotique LEGO NXT

Servo-moteur NXT : Robot sur roues

Travail : - Compléter le schéma de simulation du robot avec l'inertie des roues,la conversion du mouvement en translation et la 1/2 masse du corps du robot

- Observer la simulation de la motorisation avec ces nouveaux éléments et ajuster les paramètres (en particulier Jmoteur) pour reproduire le comportement expérimental du moteur .

- Quelle est la valeur de Jmoteur permettant de correspondre aux valeurs expérimentales de comportement ?

Page 29: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 29

Projet Robotique LEGO NXT

Servo-moteur NXT : Robot sur roues

Résultat:

Page 30: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 30

Projet Robotique LEGO NXT

0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.500

2

4

6

8

10

12

14

Graphic 1

t

y

0.00 0.05 0.10 0.15 0.20 0.25 0.30 0.35 0.40 0.45 0.50

0.0

0.2

0.4

0.6

0.8

1.0

Graphic 2

t

y

Servo-moteur NXT : Robot sur roues

Résultat:

Inertie du moteur : J=1 e-3 kg.m^2 soit une valeur sensiblement identique à l'estimation précédente

Page 31: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 31

Projet Robotique LEGO NXT

Servo-moteur NXT : Robot sur roues

Programme type pour les mesures demandées: #define FILE_SIZE 200*3

task record(){ byte fileHandle; short bytesWritten,bytesWrittenTotal,err; long phi_d,phi_g; long t_init,t_current; string val;

err=DeleteFile("myFile.txt"); CreateFile("myFile.txt", FILE_SIZE, fileHandle); bytesWrittenTotal=0; bytesWritten=0; //Ecriture entête strcpy(val,"temps MotG MotD"); WriteLnString(fileHandle,val,bytesWritten); bytesWrittenTotal+=bytesWritten;

Page 32: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 32

Projet Robotique LEGO NXT

Servo-moteur NXT : Robot sur roues

Programme type pour les mesures demandées (suite): //start move with tachos reset; OnFwdEx(OUT_AC,20,RESET_NONE); t_init=CurrentTick(); while (bytesWrittenTotal + bytesWritten<FILE_SIZE) { //------------------- t_current= CurrentTick()-t_init; phi_d=MotorRotateCount(OUT_A); phi_g=MotorrotateCount(OUT_C); //------------------- val=NumToStr(t_current); val=StrCat(val," "); val=StrCat(val,NumToStr(phi_g)); val=StrCat(val," "); val=StrCat(val,NumToStr(phi_d)); //------------------- WriteLnString(fileHandle,val,bytesWritten); bytesWrittenTotal += bytesWritten; Wait(3); }

Off(OUT_AC); CloseFile(fileHandle);}

task main(){ start record;}

Page 33: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 33

Projet Robotique LEGO NXT

Servo-moteur NXT : Asservissement de position

Objectif : réaliser un asservissement de position du robot par commande discrète implantée en langage NXC. La commande retenue sera du type Proportionnel puis Proportionnel/Dérivée.

On suppose que le système en boucle ouverte a la forme suivante :

1/ K e

p(1+τ p)

tensioncommande

OnFwd0..100

K H

Hacheur Moteur Codeur

KC

Positionangulaire

Positionnumérique

Travail à faire: - Déterminer les coefficients du robot à partir des expériences précédentes et des informations déjà fournies.- Construire ce schéma sur Scicos - Appliquer un échelon d'amplitude 50% et vérifier que la simulation est conforme aux résultats pratiques déjà obtenus.

Page 34: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 34

Projet Robotique LEGO NXT

Servo-moteur NXT : Asservissement de position Bouclage  basique avec régulateur proportionnel:

Travail à faire:

- Tenir compte dans le schéma de la contrainte de saturation de la commande bornée entre -100 et +100 (fonction SAT)

- Introduire un régulateur type "Proportionnel" de coefficient Kp (fonction GAIN)

- Boucler le système simulé avec un retour en position .

- Appliquer un échelon de position et vérifier que la simulation est conforme aux résultats pratiques.

- Rechercher expérimentalement la valeur de Kp permettant d'obtenir un amortissement de 0.7 .

1/ K e

p(1+τ p)K H

Hacheur Moteur Codeur

KC

Positionnumérique

Sat

Consigne de Position

numérique

Regulateur

Page 35: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 35

Projet Robotique LEGO NXT

Servo-moteur NXT : Asservissement de position

Bouclage  numérique : le programme d'asservissement doit effectuer périodiquement les tâches suivantes :

- lire l'heure courante - lire la position du moteur (codeur )- calculer l'erreur de position (différence entre la consigne et la mesure)- calculer la commande (loi proportionnelle puis saturation)- l'appliquer au moteur - attendre jusqu'à la fin de période d'échantillonnage- recommencer au début

La boucle de régulation est infinie. Pour des considérations pratiques, il est souhaitable de prévoir un arrêt (lecture bouton, nombre maximum de boucle...)

Travail à faire: - Les conditions expérimentales seront : Kp à la valeur définie précédemment , échelon de position d'amplitude 100, période d'échantillonnage 5 ms, durée totale 1s . - Ecrire le programme en NXC, en incluant l'enregistrement du temps, de la position réalisée et de la commande.- Discuter du résultat (précision, rapidité) . Pensez-vous que la période d'échantillonnage a une influence critique pour ce type de commande ?.

Page 36: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 36

Projet Robotique LEGO NXT

0 200 400 600 800 1000 1200 14000

20

40

60

80

100

120

140

Tem ps

Posi

tion

angu

laire

en

rad

Servo-moteur NXT : Asservissement de position

exemple de résultat pour kp=5

Page 37: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 37

Projet Robotique LEGO NXT

Servo-moteur NXT : Compensation PID de l'Asservissement de position

Le système possédant un pôle nul en boucle ouverte (intégration), il ne présente pas d'erreur de position en boucle fermée L'introduction d'un terme d'intégration dans le correcteur permet d'éliminer l'erreur de position en cas de frottements (collage) ou de couple d'opposition (robot sur une pente).Pour améliorer les performances dynamiques, il convient d'introduire une compensation dérivée . Le  compensateur PID  a pour équation continue :

ou encore :

C ( p)= K p(1 +1

T i p+ T d p)

u (t ) = K p(ε(t )+ 1T i∫ε(t )dt + T d

d ε(t )dt )

Compensateur PD ou PID avec dérivateur à bande passante limitée : ce correcteur permet de limiter l'influence du bruit , très sensible pour le terme dérivé

Généralement, on adopte 5 < N <20 pour un effet de filtrage.

C ( p)= K p(1 + 1T i p

+T d p

1+ p T d /N)

Page 38: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 38

Projet Robotique LEGO NXT

Servo-moteur NXT : Compensation PID de l'Asservissement de position

Algorithme numérique Terme Intégral

En considérant constant entre deux instants d'échantillonnage, l'intégrale est approximée par la somme des valeurs de aux instants de mesure (intégration d'Euler dite des rectangles)

Lors des transitoires importants (erreur importante), l'intégrale peut atteindre des valeurs élevées et provoquer la saturation de la commande. Il est judicieux de limiter l'intégrale à des valeurs et définies par l'utilisateur.

C I ( p) =U I ( p)ε( p)

=1

T i p ⇒ uI (t) =1T i∫0

t

ε(t )

εε

u I [n] = u I [n−1] +T e

T iε[n ]

u I min u I max

Page 39: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 39

Projet Robotique LEGO NXT

Servo-moteur NXT : Compensation PID de l'Asservissement de position

Algorithme numérique Terme Dérivée

l'expression temporelle est :

En approximant la dérivée par la différence arrière, on obtient :

On en déduit la récurrence de calcul du terme dérivé :

C D( p)=U D( p)ε( p)

=T d p

1+ p T d / N

uD (t) = T d ε̇(t )−T d

Nu̇D (t)

uD [n ] = T dε[n ] − ε[n−1]

T e−

T d

NuD[n ]−uD [n−1 ]

T e

uD [n ] =NT d

T d+NT e(ε [n ] − ε[n−1 ]) +

T d

T d+N T euD[n−1]

Commande du hacheur : c'est la somme des 3 termes P, I et D

u [n ] = K p(ε[n] + u I [n ] + uD[n])

Page 40: Etude de la motorisation du robot LEGObonnet/Projet_Lego/moteur_M1ASE.pdf · un fichier "test.txt" qui contiendra 100 mesures (temps, moteur G, moteur D). Pour une relecture sus Excel/Calc

Master ASE – Projet S1 - Pierre Bonnet , John Klein - Sept/Déc 2011 40

Projet Robotique LEGO NXT

Servo-moteur NXT : Compensation de l'Asservissement de position

Travail à faire: - Compléter la simulation pour ajouter la compensation dérivée seule (modèle continu) à bande passante limitée avec N=10

- Rechercher la valeur de Td donnant un compromis rapidité/dépassement acceptable .

- Implanter cette commande dans le robot et observer le comportement.