Page 1 of 1

Apprivoisons le TI-Robot E3, épisode 3 : en avant, marche !

Unread postPosted: 27 Aug 2017, 16:05
by critor
8626Dans l'épisode précédent, nous tentions de faire avancer notre TI-Robot E3.

Un problème constaté était que, lors de son arrêt, le TI-Robot E3 changeait de direction.
En effet, notre programme exécuté ligne à ligne ne stoppait pas simultanément les servomoteurs gauche et droit, ce qui causait une déviation de trajectoire.
Code: Select all
Send("CONNECT DIGITAL.OUT 1 BB1
Send("CONNECT DIGITAL.OUT 3 BB3
Send("SET DIGITAL.OUT 1 1
Send("SET DIGITAL.OUT 3 1
Send("SET DIGITAL.OUT 1 0
Send("SET DIGITAL.OUT 1 1
Wait 5
Send("SET DIGITAL.OUT 1 0
Send("SET DIGITAL.OUT 3 0

La roue gauche (DIGITAL.OUT 3) tournait en effet toute seule le temps de l'exécution de la ligne 9.

Le temps d'exécution d'une ligne de programme étant à peu près constant, une idée évoquée en commentaires était de réactiver la roue droite (DIGITAL.OUT 1), le temps d'une ligne, pour compenser :
Code: Select all
Send("CONNECT DIGITAL.OUT 1 BB1
Send("CONNECT DIGITAL.OUT 3 BB3
Send("SET DIGITAL.OUT 1 1
Send("SET DIGITAL.OUT 3 1
Send("SET DIGITAL.OUT 1 0
Send("SET DIGITAL.OUT 1 1
Wait 5
Send("SET DIGITAL.OUT 1 0
Send("SET DIGITAL.OUT 3 0
Send("SET DIGITAL.OUT 1 1
Send("SET DIGITAL.OUT 1 0

La roue droite (DIGITAL.OUT 1) va donc elle aussi tournera toute seule le temps de l'exécution de la ligne 11.

Voici maintenant l'heure de vérité :


Le poblème semble résolu, le TI-Robot E3 n'effectue plus de changement brutal de trajectoire en s'arrêtant ! :bj:

Par contre, au lieu d'aller tout droit selon une trajectoire rectiligne, le TI-Robot E3 semble suivre une trajectoire curviligne et dévier progressivement sur la gauche - sans doute les 2 servomoteurs ne tournent-ils pas exactement à la même vitesse.
Qu'en penses-tu ? Des idées ?... ;)




Lien : http://innovatorrobot.com

Re: Apprivoisons le TI-Robot E3, épisode 3 : en avant, march

Unread postPosted: 18 Sep 2017, 19:57
by critor
Image :)

Re: Apprivoisons le TI-Robot E3, épisode 3 : en avant, march

Unread postPosted: 18 Sep 2017, 23:27
by critor
Je ne sais pas si cette méthode se révélera fiable, mais voici une tentative de programme de calibrage.

Le but est de pouvoir atteindre des performances acceptables sans un calibrage trop long/fastidieux, sachant qu'il devra être refait à chaque utilisation (différence de sol, différence de charge des piles...).

On fait tourner une seule roue à la fois à vitesse maximale, dans les deux sens.
Et on ajuste le temps afin que le robot fasse exactement 3 tours sur lui-même.
Comme ça tourne autour de 10s, le calibrage est l'affaire de quelques minutes, ce qui est envisageable en classe.
Image8816

Et bien c'était normal que le robot n'avance pas droit, les durées pour faire 3 tours étant différentes entre les roues droite et gauche, et même entre les sens avant et arrière.
Les valeurs s'échelonnent entre 9,7s (roue gauche en avant) et 10,5s (roue droite en avant).
Il y a donc une roue qui fait 18,56tr/min quand l'autre fait 17,14tr/min.
Les roues faisant 6cm de diamètre, cela donne du 3,50m/min d'une part, et 3,32m/min d'autre part.

Mais, ce que je remarque, c'est qu'avec 6 piles AA qui pourtant sont encore correctes (entre 1,40 et 1,44V), sur le même sol il y a parfois des écarts significatifs entre deux tentatives successives de calibrage. :#roll#:
En fait, ça se devine même à l'oreille sans attendre la fin, le servomoteur se met parfois à accélérer ou ralentir légèrement au milieu de l'opération, ce qui donne un bourdonnement plus ou moins aigu... de quoi retirer ou ajouter un quart de tour.

Si je mets des piles neuves et que le problème persiste, ben il n'est pas près de marcher droit. :'(

Code: Select all
4→dim(⌊E3
.1→P
3→Q
For(I,1,4
If 0≥⌊E3(I
100P→⌊E3(I
End
max(⌊E3,P→⌊E3
EnrBDG BDG0
CouleurBord 4
ZDécimal
1→Xmin
40Xmax+Xmin→Xmax
1→Ymin
40Ymax+Ymin→Ymax
EffDess
RappelPic Pic8
0→K
GRIS CLR→E
JAUNE→F
32→T
58→G
193→D
12→H
"   →Chn9
2→O
1→N
­1→K
CouleurTexte(NOIR
Texte(0,0,Q," tour(s)
While K≠22 et K≠23 et K≠45
If N≠O
Then
CouleurTexte(E
For(I,O,N,N-O
Texte(T+Hnon(partDéc(I/2)),G+(D-G)(I≤2),sousch(Chn9,1+3non(partDéc(I/2)),3-non(partDéc(I/2
CouleurTexte(E+1
Texte(T+Hnon(partDéc(I/2)),G-30+(D-G+50)(I≤2),⌊E3(I
CouleurTexte(F
End
N→O
Else
CouleurTexte(E+1
Texte(T+Hnon(partDéc(N/2)),G-30+(D-G+50)(N≤2),⌊E3(N
End
If K<0
Then
Send("CONNECT DIGITAL.OUT "+eval(N)+" TO BB"+eval(N
If N<4
Then
N+1→N
Else
1→N
0→K
End
Else
getKey→K
N+(K=34 et partDéc(N/2))-(K=25 et non(partDéc(N/2)))+2(K=24 et N≤2)-2(K=26 et N≥3→N
⌊E3(N)+P(K=95)-P(K=85→⌊E3(N
If K=21 ou K=31 ou K=105
Then
Send("SET DIGITAL.OUT "+eval(N)+" 1
Wait ⌊E3(N
Send("SET DIGITAL.OUT "+eval(N)+" 0
End
End
End
For(I,1,4
Send("DISCONNECT DIGITAL.OUT "+eval(I
End
RappelBDG BDG0

Re: Apprivoisons le TI-Robot E3, épisode 3 : en avant, march

Unread postPosted: 19 Sep 2017, 12:05
by Adriweb
Programme très bien fait et joli en tout cas :)
Dommage qu'il y ait matériellement une telle différence cela dit...

Re: Apprivoisons le TI-Robot E3, épisode 3 : en avant, march

Unread postPosted: 19 Sep 2017, 17:08
by critor
Si les servomoteurs équipant notre TI-Robot E3 sont si peu fiables (ou défectueux ?...), il y aurait peut-être un moyen de contrôler ce qui se passe avec un capteur de champ magnétique ou accéléromètre.

TI le liste et lui associant l'identifiant COMPASS :
https://epsstore.ti.com/OA_HTML/csksxvm ... ryId=14259

Mais bizarrement, cet identifiant COMPASS est absent des menus Hub des derniers OS TI-83PCE/84+CE 5.3 et TI-Nspire CX 4.5. :(
Et le taper à la main semble ne pas marcher non plus. :(