EV3 : Suiveur de ligne

Présentez-nous vos créations...
Avatar de l’utilisateur
YodaSoftware
Level 8
Level 8
 
Messages: 937
Localisation: POITIERS (86)
Âge: 53 ans
collectionneur

Messagepar YodaSoftware » Jeu Déc 04, 2014 9:36 pm

Je vois régulièrement, dans différents topic sur les mindstorms, parler de PID. Je pensais que c'était un genre de modification du Firmware.
Curieux, je suis allé voir sur wikipedia ce que cétait. J'en était loin :lol:
Et je me rend compte que j'ai de sacré lacunes en math, parce que je ne suis pas près d'appliquer ça sur mon EV3 ::D:
J'ai pourtant passé un bac électronique et donc bossé les intégrales et dérivés, mais c'est loin tout ça ... très très loin :tare:
Ma Collection BrickSet
Mes « I want » BrickSet

May Charlie be with us . . . Always !

Avatar de l’utilisateur
Tcdovdi14
Level 7
Level 7
 
Messages: 537
Localisation: Valbonne / Antibes (06)
Âge: 23 ans

Messagepar Tcdovdi14 » Jeu Déc 04, 2014 9:41 pm

Tes fils de donnés, c'est le bazar :petuncable: :petuncable: mais c'est obligatoire.
il ne cherche même pas la ligne quand il la perd, c'est magique :ooo:

Bravo pour ta continuation :clap: :resp: :+1:

A+
K/AFOL un jour, K/AFOL toujours ! 2° de France en robotique !!

Ma collection Brickset - Ma chaîne Youtube - Mon site en construction

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Ven Déc 05, 2014 8:40 am

Hugolin a écrit:Je viens de faire un petit programme qui est une première approche d'un régulateur PID. (c'est le "P" du PID)

Un grand merci à toi.
J'attends la suite avec une grande impatience.

Avatar de l’utilisateur
nicoquantis
Level 3
Level 3
 
Messages: 20
Localisation: Paris
Âge: 50 ans

Messagepar nicoquantis » Ven Déc 05, 2014 10:31 am

Waouw !!!

Vraiment un grand bravo ! Je poste assez rarement mais je suis toujours surpris et ravi par ton travail. Tu vas vraiment au bout des choses et le résultat est toujours d'une fluidité exemplaire. Quand je vois ce que tu es arrivé à faire avec ton marcheur et ce que tu es en train de développer avec l'EV3 tu sembles repousser les limites des possibilités et c'est très motivant.

nico

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Ven Déc 05, 2014 11:41 am

YodaSoftware a écrit:Je vois régulièrement, dans différents topic sur les mindstorms, parler de PID. Je pensais que c'était un genre de modification du Firmware.
Curieux, je suis allé voir sur wikipedia ce que cétait. J'en était loin :lol:
Et je me rend compte que j'ai de sacré lacunes en math, parce que je ne suis pas près d'appliquer ça sur mon EV3 ::D:
J'ai pourtant passé un bac électronique et donc bossé les intégrales et dérivés, mais c'est loin tout ça ... très très loin :tare:

Tu peux également consulter les explications de Roboleo, je pense que c'est plus accessible:
topic2770.html
topic4825.html

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Ven Déc 05, 2014 11:46 am

nicoquantis a écrit:Waouw !!!
Vraiment un grand bravo ! Je poste assez rarement mais je suis toujours surpris et ravi par ton travail. Tu vas vraiment au bout des choses et le résultat est toujours d'une fluidité exemplaire. Quand je vois ce que tu es arrivé à faire avec ton marcheur et ce que tu es en train de développer avec l'EV3 tu sembles repousser les limites des possibilités et c'est très motivant.
nico

Pas mal aussi ce que tu fais :
https://www.youtube.com/playlist?list=U ... JmDLaQznXA

Avatar de l’utilisateur
Tcdovdi14
Level 7
Level 7
 
Messages: 537
Localisation: Valbonne / Antibes (06)
Âge: 23 ans

Messagepar Tcdovdi14 » Ven Déc 05, 2014 12:11 pm

@Oracid:
Merci pour ces lien
La définition est beaucoup moins clair sur wiki :bizarre: :/

@Hugolin:

Je viens de comprendre pourquoi mon test ne fonctionnait pas, il manquait un bout du programme :lol: logique qu'il ne marchait pas :dent:

Hâte de voir le "PID" finit

Bonne continuation

A+
K/AFOL un jour, K/AFOL toujours ! 2° de France en robotique !!

Ma collection Brickset - Ma chaîne Youtube - Mon site en construction

Avatar de l’utilisateur
YodaSoftware
Level 8
Level 8
 
Messages: 937
Localisation: POITIERS (86)
Âge: 53 ans
collectionneur

Messagepar YodaSoftware » Ven Déc 05, 2014 1:14 pm

oracid a écrit:Tu peux également consulter les explications de Roboleo, je pense que c'est plus accessible:
topic2770.html
topic4825.html


Merci !
J'ai jeté un oeil un peu en diagonale (surtout le P et un tout petit peu le I).
C'est effectivement plus clair que l'article de wikipedia, mais j'ai quand même du mal par moment.
Et le fait que les photos n'existent plus n'aident pas trop :(
Un graphique est parfois plus simple à comprendre qu'une formule ou une explication verbale.
Ma Collection BrickSet
Mes « I want » BrickSet

May Charlie be with us . . . Always !

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Ven Déc 05, 2014 4:20 pm

YodaSoftware a écrit:C'est effectivement plus clair que l'article de wikipedia, mais j'ai quand même du mal par moment.

Moi aussi, j'ai du mal. Qu'est ce que je devrais dire, j'ai juste mon certif...
Pour ce qui m'intéresse, le plus important, c'est que au lieu de dire à un moteur d'avancer de 30°, puis de 40°, on lui dit d'aller à la position 30°, puis à la position 70°.
Or cela n'est possible que si on gère bien la position de référence, c'est à dire 0°. Et pour cela, il faut gérer le taux d'erreur dans le positionnement.
Voilà, moi, j'ai compris ça. Si je me plante, merci de me le dire.

Avatar de l’utilisateur
YodaSoftware
Level 8
Level 8
 
Messages: 937
Localisation: POITIERS (86)
Âge: 53 ans
collectionneur

Messagepar YodaSoftware » Ven Déc 05, 2014 5:08 pm

La position absolue, à la rigueur, ça se gère assez facilement.
Le réel avantage du PID que je vois, c'est son positionnement bien plus précis.
Ma Collection BrickSet
Mes « I want » BrickSet

May Charlie be with us . . . Always !

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Ven Déc 05, 2014 8:47 pm

YodaSoftware a écrit:La position absolue, à la rigueur, ça se gère assez facilement.
Le réel avantage du PID que je vois, c'est son positionnement bien plus précis.

Et bien non, justement, ça ne se gère pas si facilement que cela si tu ne connais pas la position de référence du moteur à sa mise en marche.
D'où l'intérêt du PID de HiTechnic qui lui réussi à la récupérer, http://www.hitechnic.com/blog/uncategorized/pid-block/
Mais c'est pour le NXT pas pour l'EV3, dommage.

Avatar de l’utilisateur
Hugolin
Level 6
Level 6
 
Messages: 342
Localisation: Aicirits 64
Âge: 49 ans
moceurtechnicexpertvainqueurconcours2

Messagepar Hugolin » Sam Déc 06, 2014 5:27 pm

Merci à vous. :)

=> Tcdovdi14 :
Et non, il ne cherche pas la ligne : il cherche le bord, là ou l'intensité de la lumière réfléchi correspond à 50.
Le capteur n'est pas utilisé dans le même mode que pour la tête chercheuse.

=> nicoquantis :
Je rejoins oracid : tes création sont de très bonne facture. En terme d'efficacité de déplacement ton hexapode était un des meilleurs (concours technic 20).
Dommage que tu n'es pas plus de temps pour nous présenter ce que tu fait.

=> oracid :
Les moteurs de l'EV3 possèdent des capteurs de rotation, du coup si tu réinitialise le capteur au début du programme tu peux demandé au moteur tel ou tel position. C'est ce que je fais pour la tête chercheuse.
Après, si tu veux asservir un moteur à un autre, le mieux est d'utiliser un régulateur PID.

=> YodaSoftware :
C'est vrai que je n'ai pas expliqué ce qu'est en régulateur PID : c'est pas le sujet principal du topic du coup j'ai pas pensé à le faire.
Je viens enfin de retrouver un article que je trouve super bien fait : il explique le principe d'un régulateur Proportionnel Intégral Dérivé, et sans prise de tête avec les maths :

"Implémenter un PID sans faire de calculs !"

C'est tellement bien expliqué que ça devrait être obligatoire. :lol:
Image

Avatar de l’utilisateur
oracid
Level 5
Level 5
 
Messages: 170
Âge: 70 ans

Messagepar oracid » Dim Déc 07, 2014 8:47 am

Hugolin a écrit:=> oracid :
Les moteurs de l'EV3 possèdent des capteurs de rotation, du coup si tu réinitialise le capteur au début du programme tu peux demandé au moteur tel ou tel position. C'est ce que je fais pour la tête chercheuse.
Après, si tu veux asservir un moteur à un autre, le mieux est d'utiliser un régulateur PID.

Nul part, je ne vois d'initialisation d'un moteur. Peux-tu m'expliquer concrètement comment tu fais.
Est ce que tu sous entends que le moteur se repositionne spontanément à un point zéro ?
Imaginons qu'en tournant de 90°, un moteur, avec un bras monté sur son axe, appuie sur un interrupteur. Dans ce cas précis, au mieux le moteur n'actionne rien, au pire il se bloque sur l'interrupteur avant d'avoir atteint les 90°.
Il est absolument primordiale que le moteur se positionne à son point 0° avant de tourner de 90° et au final accepter une résistance raisonnable de l'interrupteur ou de tout autre mécanisme.
Merci pour ton lien, je vais étudier cela.

Avatar de l’utilisateur
Tcdovdi14
Level 7
Level 7
 
Messages: 537
Localisation: Valbonne / Antibes (06)
Âge: 23 ans

Messagepar Tcdovdi14 » Dim Déc 07, 2014 10:26 am

oracid a écrit:Nul part, je ne vois d'initialisation d'un moteur.


Sur cette photo:
Image

Il y a ceci:
Image

La flèche qui descend indique le fait de réinitialiser le moteur ;)

Encore bravo pour ce Moc d'enfer :clap:

A+
K/AFOL un jour, K/AFOL toujours ! 2° de France en robotique !!

Ma collection Brickset - Ma chaîne Youtube - Mon site en construction

Avatar de l’utilisateur
Hugolin
Level 6
Level 6
 
Messages: 342
Localisation: Aicirits 64
Âge: 49 ans
moceurtechnicexpertvainqueurconcours2

Messagepar Hugolin » Dim Déc 07, 2014 11:42 am

Alors non, le moteur ne va pas spontanément à un point zéro.
Mais avec la brique programme que Tcdovdi14 nous a montré, on peut définir le point zéro.
La même brique permet de lire l'angle de rotation effectuer par le moteur.
Dans la première version de la tête chercheuse, pour remettre la tête dans l'axe, je lit la rotation effectuer par le moteur, je multiplie cette valeur par -1 et je demande au moteur de tourner de cette valeur.

Dans ton exemple tu peux faire la même chose : peu importe que le moteur n'est pas atteint les 90° puisque le capteur te fournie la rotation réellement effectué.
Dernière édition par Hugolin le Dim Déc 07, 2014 10:45 pm, édité 1 fois au total.
Image


Retourner vers Vos MOCs Technic

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 19 invités