EV3 : Suiveur de ligne

Présentez-nous vos créations...
Avatar de l’utilisateur
Hugolin
Level 6
Level 6
 
Messages: 342
Localisation: Aicirits 64
Âge: 46 ans
moceurtechnicexpertvainqueurconcours2

Messagepar Hugolin » Dim Nov 16, 2014 7:25 pm

Salut,
Je vous présente mon deuxième suiveur de ligne.

Image

Pour mémoire, j'en avait fait avec un avec le modèle Track3r de l'EV3 (pas super efficace mais c'était une première prise en main)
La vidéo dans le spoiler :

Toujours dans le but de me familiariser avec la programmation, j'ai fait celui-ci. (il y a déjà un moment)
Le premier suivait en fait le bord de la ligne (comme la plupart d'ailleurs), là il suit la ligne.

Petit robot maison tout simple avec les 3 moteurs et les 3 capteurs fourni dans le set 31313.
Une pression sur le capteur de contact démarre le robot, qui suit la ligne et ne s'arrête que si il rencontre un obstacle (capteur infrarouge)
Le capteur couleur est utilisé pour détecter le rouge.
Si c'est rouge, le robot avance, si non le capteur monté sur un petit bras cherche d'un coté puis de l'autre.
L'angle nécessaire pour retrouvé la ligne est ensuite utilisé (ainsi que le coté) pour faire pivoter le robot de la valeur voulu.

La vidéo :


La ligne est un peu large, je l'ai faite avec le premier rouleau qui m'est tombé sous la main.
J'ai pas testé avec une plus fine, mais ça doit aussi fonctionner.(en adaptant les paramètres du programme.)

:)
Image

Avatar de l’utilisateur
boby
Level 7
Level 7
 
Messages: 620
Localisation: Nantes
Âge: 23 ans

Messagepar boby » Dim Nov 16, 2014 8:35 pm

J'ai fais un TP sur un robot suiveur de ligne en premiere SI.
Voici l'idée du programme, mais il faut avoir deux capteurs. Chacun positionnés l'un à coté de l'autre. Si c'est le gauche qui sort, il faut arrêter le moteur droit jusqu'à que le capteur retrouve la ligne.
Une question, quel capteur détermine l'angle pour retrouver la ligne ?
Juste une dernière chose : ton robot ne doit normalement pas s'arrêter ( un moteur dur deux doit être possible pour plus d'efficacité.)
Corentin

Mon youtube : http://www.youtube.com/user/Erysme
Actuellement en prépa, je n'ai plus beaucoup de temps pour toucher aux Lego.

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

Messagepar Hugolin » Dim Nov 16, 2014 9:28 pm

C'est le capteur de couleur qui détermine l'angle, en fonction de la rotation que le bras qui le porte à du faire pour retrouver la ligne.

Il s'arrête car ce n'est pas un coté ou l'autre pour avancer mais les deux en même temps.
C'est très efficace pour les ligne droite, moins pour les courbes puisqu'il doit s'arrêter pour regarder ou est la ligne et en déduire la rotation à faire.
Je n'ai que un seul capteur couleur, d'ou l'idée de le déplacer pour déterminer de quel coté de la ligne le robot se trouve.
Le programme se déroule ainsi :

-rouge = oui => tout droit.
-rouge = non => arrêt
tourne capteur de X+10 degré à droite, puis à gauche. (au départ X=0.)
Si toujours pas de rouge on recommence la ligne juste avant.
Si rouge X est utilisé pour faire tourner le robot.
X est remit à zéro et et c'est reparti.

En fait le but du robot n'est pas d'être super efficace, mais de m'apprendre à utiliser le langage de l'EV3.
Donc je me suis amusé à faire ça.
J'aurai aussi pu faire un correcteur PID (capteur fixe, suivi de bord de ligne), mais comme ça c'est plus sympa visuellement.
La tête chercheuse amuse énormément mes enfants.
Dernière édition par Hugolin le Lun Nov 17, 2014 1:03 pm, édité 2 fois au total.
Image

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

Messagepar Tcdovdi14 » Dim Nov 16, 2014 9:53 pm

Serait-ce possible d'avoir une capture d'écran du programme, car j'ai du mal à comprendre celui-ci dans ton paragraphe ;) sans vouloir te vexer ;)

Merci
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: 46 ans
moceurtechnicexpertvainqueurconcours2

Messagepar Hugolin » Lun Nov 17, 2014 12:10 am

Voici le programme :

Une image global, suivi de 3 agrandissement :
Image

Le début :
Image
Je rentre des données pour pouvoir facilement modifier les paramètres.
Au milieu, le bout de programme ou le robot avance en attente de détecter autre chose que du rouge.
Et la partie à droite avec le début de la boucle pour la tête chercheuse.

La suite de la recherche de rouge avec la tête :
Image
c'est surtout des fonction mathématique pour incrémenter l'angle de rotation de la tête et changer de coté à chaque fois jusqu'à détecter du rouge.

Et la fin quand le rouge est détecté :
Image
Il s'agit ici de remettre le tête dans la position de départ, avant de repartir à l'attente de détection.

Voila, j'espère que c'est plus claire avec ça.
Il y a peut être une façon plus simple de faire : ce n'est que mon deuxième programme avec l'EV3.


p.s. : Il manque le bout de programme de détection d'obstacle sur les images.

Edit : je me chope la tête de R2D2 avec un post sur un robot. :lol:
Image

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

Messagepar YodaSoftware » Lun Nov 17, 2014 12:28 pm

Hugolin a écrit:Je n'ai que un seul capteur couleur, d'ou l'idée de le déplacer pour déterminer de quel coté de la ligne le robot se trouve.


L'idée est bonne je trouve. Tous les suiveurs de ligne que j'ai vus jusqu'à présent étaient sur le modèle du Track3r dont tu parles au début : un capteur de couleur fixe et un déplacement de droite à gauche, ce qui rend le robot lent en ligne droite et rapide en courbe.
Avec le capteur mobile, on retrouve la façon de procéder d'un aveugle avec sa canne blanche. C'est bien plus efficace.
Il n'y a pas besoin de tester, ta version est plus rapide, c'est clair.
Ma Collection BrickSet
Mes « I want » BrickSet

May Charlie be with us . . . Always !

Avatar de l’utilisateur
Rayenryuu
Level 6
Level 6
 
Messages: 232
Localisation: Les Ulis (91)
Âge: 18 ans

Messagepar Rayenryuu » Mar Nov 18, 2014 11:58 pm

Ton suiveur de ligne est pas très efficace dan les virage a plus de 30 degrés car le temps de faire 2 aller retour de la tête prend du temps et j'ai une question : Si la ligne s’arrête ou qu'il ne détecte pas la ligne, le moteur bloque ou il y a un protection dans l'angle de rotation ?

ps: Va falloir aussi que je me lance dans la programmation de l'ev3, avec la first lego league en janvier heureusement je suis pas tout seul dans mon club.

Avatar de l’utilisateur
cedtomcat
Level 4
Level 4
 
Messages: 86

Messagepar cedtomcat » Mer Nov 19, 2014 12:55 am

Si je peux proposer un truc :

Au lieu de le faire s’arrêter si il perd la ligne, ne serait il pas possible de le faire juste ralentir et se réorienter?

genre

moteur 100% => moteur 10% => modifie vitesse moteur gauche/droite => retour au début
ligne ok => ligne perdue => cherche gauche droite => retrouve gauche droite => retour au début

(les deux process dépendent l'un de l'autre)

plus un process dans le cas où il retrouve pas la ligne.

ça te fais deux process en parallèle, tu devrait obtenir quelque chose de plus fluide.


P.S. Ca fait longtemp que j'ai pas fais de NXT et j'ai jamais touché a l'EV3 mais les principes de programmation reste les mêmes que ce soit pour Lego ou pas.
Militant pour la différenciation entre boite de vitesse et boite de transfert!

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

Messagepar oracid » Mer Nov 19, 2014 11:51 am

Hugolin a écrit:J'aurai aussi pu faire un correcteur PID (capteur fixe, suivi de bord de ligne), mais comme ça c'est plus sympa visuellement.

Ta réalisation et tes solutions sont très intéressantes. Néanmoins, je t'invite à regarder les quelques vidéos ci-dessous qui utilisent un PID, mais il doit y en avoir d'autres :
https://www.youtube.com/watch?v=5KnMXwFI06k
https://www.youtube.com/watch?v=oPs3akigVVc
https://www.youtube.com/watch?v=cZ1p2G6TAGE

Je serais très intéressé par ta solution si tu la mettais en pratique et la postais ici.

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

Messagepar Hugolin » Jeu Nov 20, 2014 12:13 am

Rayenryuu =>
Effectivement, plus le virage est serré et plus le robot met de temps à retrouver la ligne, mais il la trouve ::D: .
Et oui il y a une séquence (pas sur les captures d'écran) au cas ou il ne la retrouve pas : quand l'angle de rotation de la tête est supérieur à 90° le robot recul un peu avant pour rechercher à nouveau.

cedtomcat =>
Je suis pas convaincu : s'il ne s'arrête pas quand il perd la ligne, il s'en éloigne encore plus, avec le risque d'être trop loin pour la retrouver vite, voir de la retrouver tout cours.
Du moins comme est fait mon programme je ne pense pas que le robot y gagerais en efficacité.

Ou alors il faut qu'il regarde ou est la ligne en même temps qu'il avance et corrige la trajectoire.
un truc dans le genre :

Lecture du capteur quand le bras est à différentes positions et déduire de la séquence trouvé là marche à suivre :
(les chiffres sont indicatifs, O et N pour Oui ou Non à la détection de rouge.)

-90/-45/0°/45/90
_O / N / N / N / N =>Moteur : G=25% D=100%
_O / O / N / N / N =>Moteur : G=50% D=100%
_O / O / O / N / N =>Moteur : G=75% D=100%
_N / O / O / O / N =>Moteur : G=100% D=100%
_N / N / O / O / O =>Moteur : G=100% D=75%
_N / N / N / O / O =>Moteur : G=100% D=50%
_N / N / N / N / O =>Moteur : G=100% D=25%

Une sorte de correcteur PID pour capteur tout ou rien en fait.
Mais il faut que le capteur se déplace vite et que le robot ne soit pas trop rapide pour que les données collectées soient valables.
A tester même si ça n'a plus grand chose à voir avec mon programme.

oracid =>
Oui oui je vois ce que ça donne avec un correcteur PID, c'est super efficace, bien plus que ma tête chercheuse.
Là je ne cherche pas à faire super efficace, juste à me familiarisé avec la programmation, avec une solution un peu plus original.
Si j'ai un peu de temps je ferais et posterai la solution avec correcteur.
Image

Avatar de l’utilisateur
cedtomcat
Level 4
Level 4
 
Messages: 86

Messagepar cedtomcat » Jeu Nov 20, 2014 12:26 pm

C'est exactement ce a quoi j'ai pensé pendant ma journée de taf ;) Identifier a tout moment ça position par rapport a la ligne. Ça risque de poser problème au niveau de l'angle droit mais j'ai hâte de voir une vidéo avec ce système...


Ça me donne envie d'acheter l'EV3 ... (mais bon, j'ai pas assez de place au sol en même temps)
Militant pour la différenciation entre boite de vitesse et boite de transfert!

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

Messagepar YodaSoftware » Jeu Nov 20, 2014 12:44 pm

cedtomcat a écrit:Ça me donne envie d'acheter l'EV3 ... (mais bon, j'ai pas assez de place au sol en même temps)

Je manque aussi cruellement de place au sol, ce qui me ralentis dans mon apprentissage de la programmation EV3, mais ça ne m'a pas empêché de l'acheter pour autant ::D:
(en fait, j'en ai même 2, l'EV3 et le set Education)
Ma Collection BrickSet
Mes « I want » BrickSet

May Charlie be with us . . . Always !

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

Messagepar Hugolin » Sam Nov 29, 2014 3:19 pm

Enfin un peu de temps pour bricoler mon suiveur de ligne.

Voici la vidéo du robot en mode "tête chercheuse en déplacement" :


Le programme est assez simple : La tête va à tel position, si le noir est détecté la puissance des moteurs est réglé en fonction, si non suite du programme : la tête est déplacée à la position suivante, etc…
Je ferai une capture d'écran un peu plus tard.
Il faut aussi que je rajoute une séquence en cas de perte de la ligne et régler un peu mieux les paramètres pour voir si je peux le rendre plus rapide.
:)
Image

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

Messagepar YodaSoftware » Sam Nov 29, 2014 5:20 pm

Beau boulot, le déplacement est fluide :D
Des angles sur la ligne noire, c'est prévu ? si oui, ça donne quoi ?
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: 20 ans

Messagepar Tcdovdi14 » Sam Nov 29, 2014 6:36 pm

Bravo :loveyes: :clap:
A part les 2 pneus qu'y a t-il pour que le robot ne tombe pas ?

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

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


Retourner vers Vos MOCs Technic

Qui est en ligne ?

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