Robot Coupe 2014 IFRELO

  • Auteur de la discussion louloute30
  • Date de début
M

MrDUS31

Compagnon
Salut Louloute,

Merci pour ce compte rendu :-D
Effectivement, il y a plusieurs leçons a en tirer :
- le suivi de lignes, c'est pas si facile qu'on crois ! En 2000, nos deux mini-robots suiveurs de lignes ont merdé en 8ème de finale à cause de la chaleur : match perdu :sad:
- Des mois de travail et de mise au point peuvent être "foutu en l'air" par une minuscule erreur lors de la mise en place sur la table de match... (c.f. mon switch couleur du PR2012 en finale contre RCVA :oops: )
- Tu as vachement bien fait d'aller faire la coupe de Belgique : c'est autant d'emmer...ments que tu aura en moins à la coupe de France :-D

Il n'y a pas quelque petites vidéos à se mettre sous la dent ???

A+

Mr DUS
 
L

louloute30

Compagnon
Effectivement, on voit bien que notre stratégie "basique" était de faire tomber deux feux qui n'étaient pas de notre couleur... Je vois que par chance, on les évite :mrgreen:. Encore heureux que le robot était plus malin que le softeux :supz:
On voit aussi que j'ai toujours laissé des delay(1000) ici et là dans le prog.

Alors pour notre odo, jeudi soir ça avait l'air de marcher sur le carrelage à la maison, mais vendredi matin, sur la table, c'était pas du tout au point...
Alors, je suis d'abord repassé en 12V pour réduire la vitesse (que je trouve déjà pas mal sur la vidéo).
Ensuite, coté code, j'ai trouvé comme solution alternative un truc vite fait réalisé en 5 lignes: (même les non - info vont vite comprendre):

PWMgauche=255; //Vmax.
PWMdroit=255; // Vmax
if (codeuse_droite+CoeffErreur>codeuse_gauche){ PWMdroit=0; } // On coupe le moteur droit
analogWrite(pinMotD, PWMdroit);
analogWrite(pinMotG, PWMgauche);

En gros, si la roue codeuse droite a comptabilisé plus d'impulsion à coeff_Erreur près, alors on coupe le moteur Droit, attendant que la roue codeuse gauche rattrape cette distance... mais il faut dire que j'avais compté large le coeff erreur dans ce premier match, qq ch comme 1000.
En, même tps, ce code impliquait forcément que le moteur droit tourne toujours plus vite que le gauche... (on voit sur cette vidéo que ce n'était pas toujours le cas !) d'où le grand virage en allant vers l'adversaire...


Dans le second match, j'étais à un coeff comme 20 impl de décalage toléré entre la roue droite et gauche, on commençait à avoir un résultat plus appréciable.

Cette semaine, c'est odo + PID !

J'espère en effet avoir rencontré bon nombre de pb ici, pour d'une part ne pas les répéter, mais surtout pas en avoir trop d'autre !
Ma foi, le vrai PR répond mieux aux actions à réaliser (tir de 6 balles + fresque et 1er feu) En même temps, il n'y a que peu de distances (pas le tps de se perdre.

Après avoir vu ce que faisait grossièrement les équipes en belgique, je pense qu'une équipe qui souhaite se qualifier devra faire une moyenne de match de 20-23 points en France... (fresque + balles + filet obligés à chaque match) !
Cher roboteux, Peaufinez vos PR !
 
M

MrDUS31

Compagnon
Salut Louloute,

louloute30 a dit:
Après avoir vu ce que faisait grossièrement les équipes en belgique, je pense qu'une équipe qui souhaite se qualifier devra faire une moyenne de match de 20-23 points en France... (fresque + balles + filet obligés à chaque match) !
Ouais, c'est clair qu'il n'y aura pas droit à l'erreur sur ces actions là pour rester dans le Top16 !

Merci Looplyla pour la playlist, c'est vachement instructif !
Je suis étonné du peu de robots qui attaquaient vraiment les feux à la coupe de Belgique :shock:
Certes, il n'y a pas beaucoup d'équipes qui ont posté leur vidéos... Ceux qui y étaient, vous avez vu des équipes fighter sur les feux ????

A+

Mr DUS
 
G

Goo

Apprenti
MrDUS31 a dit:
Je suis étonné du peu de robots qui attaquaient vraiment les feux
La raison est simple : Il y a de moins en moins de mécaniciens aussi bon que MrDus pour retourner les feux :).
 
M

MrDUS31

Compagnon
Goo a dit:
La raison est simple : Il y a de moins en moins de mécaniciens aussi bon que MrDus pour retourner les feux :).

Halte là, je ne peux pas te laisser dire que je suis un dieu de la méca sans mentionner que CVRA fait plus-ou-moins des robots "corrects" :nono:
:smt030 :smt033 :lol:
Sinon, sans déconner, il n'y a pas beaucoup d'équipes visibles sur les vidéos. C'est pour ça que je demandais si il y en avait d'autres qui traitaient vraiment les feux.

Nous, on a décidé de mettre le paquet sur les feux en y consacrant 80% du gros robot ! On doit quand même pas être les seuls à avoir fait ce calcul :-D

Mr DUS
 
L

louloute30

Compagnon
Alors, j'ai toutes les vidéos de tous les matchs qui ont été disputé le dimanche;

Et franchement, la majore partie des équipes mettaient moins de 10pt/matchs !
Non, vraiment rien à voir avec la France. Aussi, il y a des équipes qui comme nous n'ont pas souhaité faire fonctionner leur lance balle de ping pong ou filet de peur d'user le matos avant la vrai heure, bref, c'est pour ça que les résultats étaient majoritairement dérisoire. Ces résultats ne sont pas du tout révélateurs de ce qui se passera en France !

Pour tout vous dire, on a même réussi à perdre à 1 point près avec une équipe extra de l'année passée, dont je ne citerai pas le nom, et avec un résultat très très faible (on est donc fier!) :mrgreen: .

Concernant l'attaque des feux: Il me semble que le match le plus gros de tout le WE était remporté par Brick Story face à nous 29 points dans la vidéo visible ci-avant.
Pratiquement aucun robot n'allait dans la partie adverse, je n'ai pas vu non plus d'action de coopération, un peu comme si la table était coupé en deux.
On voit bien que pour la plupart, la partie soft est loin d'être finie, et tout juste commencé, de même, la méca n'est pas encore au point pour tous, mais de ce coté, elle reste tout de même bien avancé...

Quelques mots concernant l'équipe CVRA, qui n'a toujours pas donné signe de vie ici, j'espère qu'elle est bien rentrée !
D'abord, c'est vraiment une équipe très chouette, et j'ai eu la chance d'avoir passé des heures à leur coté! Très très très amicaux ces 8 gars ! Rien que pour ça, je me demande si je ne vais pas tenter la coupe de suisse (je leur donnerai ma réponse le 15 mai)...
Retournons à leur robot, très propre, super odo, c'est donc du coté de la gestion des bras qu'il reste un peu de travail.
 
A

antoine_cvra

Apprenti
louloute30 a dit:
Quelques mots concernant l'équipe CVRA, qui n'a toujours pas donné signe de vie ici, j'espère qu'elle est bien rentrée !
D'abord, c'est vraiment une équipe très chouette, et j'ai eu la chance d'avoir passé des heures à leur coté! Très très très amicaux ces 8 gars ! Rien que pour ça, je me demande si je ne vais pas tenter la coupe de suisse (je leur donnerai ma réponse le 15 mai)...
Retournons à leur robot, très propre, super odo, c'est donc du coté de la gestion des bras qu'il reste un peu de travail.

:oops: :oops:
Eh bien merci louloute, ca fait plaisir de lire ca :) On est bien rentré en effet, c'est juste un début de semaine chargée pour ma part, entre les cours, le robot sur lequel on reprend le boulot gentiment mais surement et surtout ce qui me prend le plus de temps c'est de commencer à apprivoiser une certaine carte ARM offerte par l'Ifrelo team que je remercie encore au passage ! Pas si simple que ca la datasheet du controlleur d'ailleurs...

Pour ma part, la Belgique c'était très chouette, tout d'abord toujours sympa de revoir des têtes connues et de goûter aux bonnes bières belges, mais ca nous a surtout permis de nous rendre compte de quelques soucis, aussi bien mécanique que software qui nous ont obligés à juste marquer des points en venant toucher certains objets, sans nous servir de nos bras. Heureusement c'est réparable, et on va s'arranger pour que ca soit réparé pour le 23 mai :). Du coup pas de vidéos de matchs intéressantes à montrer pour le moment...

Malheureusement pourr la coupe de suisse, je crois que les délais sont passés non ?

a+
Antoine
 
L

louloute30

Compagnon
Hello,

Je voulais vous faire partager la progression des petits lutins de l'équipe 2 (enfin, principalement du programmeur âgé de 10 ans):

Il sait qu'il a encore 1 minute à combler en déplacement ! (les fresques n'ont pas été fixées au robot, mais il faut imaginer qu'elles le seront.)
En l'état, on va rajouter le filet et les 6 lances.


https://www.youtube.com/watch?v=qBDMEmoy0BE&feature=youtu.be
 
Dernière édition par un modérateur:
L

louloute30

Compagnon
Hello tous,
Bon, voilà mon premier asserv PID... Il s'agit d'un asservissement en vitesse sur les 2 roues motrices du GR. (fréquence de 1000: calculé toute les ms)

PID GR.PNG


Je pense avoir fait de mon mieux pour trouver des coeff Kp Ki et Kd adéquat, mais je me demande s'il faut que je les améliore encore...

Comme vous vous y connaissez, je me demande si vous trouvez que les graphs ci dessus, correspondent à une réponse satisfaisante ?

Peut être qu'il y aura qqch qui vous choquera, et qui pourrait m'aider...

Le robot a cependant un déplacement fluide, mais il slalome légèrement sur une amplitude d' 1cm latéralement environ sur une longueur de 60cm.

- Le premier graphique, l'échelle en X a un max de 60 pour une consigne de 50, donc, une oscillation d'environ 5 de part et d'autre de la consigne.
- La moyenne des PWM est de 101 (roue gauche) et 71 (roue droite). La courroie est un chouilla plus tendue à gauche qu'à droite, d'où le besoin de plus de puissance.

- Le troisième graphe indique le nb d'impl des codeuses (on voit que la courbe jaune est au dessus de la rose, donc, le robot dévie très probablement)
J'ai bien déterminé un coeff de rapport de distance parcourue entre la rouecodeuseG et rouecodeuseD...

- Le dernier graph représente la différence entre codeuseG et codeuseD. (là, c'est clair, il n'oscille pas autour de la ligne de direction)
Faut-il recalculer dans la boucle la consigne attribuée à chacun des moteurs pour recaler le robot sur sa ligne directionnelle ? ou plutôt revoir encore les coeff ?

Faut pas dramatiser non plus, la trajectoire est très correcte en l'état, mais je crains une perte de cap au fil du temps.
 
R

romain_cvra

Ouvrier
Salut,

C'est très bien pour ton premier PID!
Faut pas trop t’embêter à régler les paramètre pendant des heures. Surtout que le résultat est correcte.
Mieux vaut investir ton temps sur d'autre chose.

Est ce que tu as prévu de faire une rampe sur la consigne de vitesse? (accélération)
C'est important car comme tu peux le constater sur le graphique du haut. Le robot en fait forcément une...

louloute30 a dit:
Faut-il recalculer dans la boucle la consigne attribuée à chacun des moteurs pour recaler le robot sur sa ligne directionnelle ?
Tu relève un point très intéressant! :wink: En faite, ce que tu propose est similaire à un asservissement de position. ( En moins efficace)
En fait, beaucoup d'équipe asservisse leur robot en coordonnée polaire! C'est a dire, c'est un asservissement en position pour la distance et en angle pour l'angle du robot.
C'est assez bien expliqué sur le site de RCVA : http://www.rcva.fr/index.php?option=com_content&view=article&id=18:cours-asservissement&catid=8:les-cours&Itemid=34
Et je pense que c'est la meilleur façon de réaliser un asservissement pour cette application.

Si tu réalise un asservissement en position polaire et non en vitesse, voici un petit Tips de RCVA pour le réglage de PID : http://www.rcva.fr/index.php?option=com_content&view=article&id=27&Itemid=42&limitstart=10

A+
 
Dernière édition par un modérateur:
L

louloute30

Compagnon
Toujours en tentant d'améliorer l'asser du GR, je crois que par mégarde, je viens de bousiller des poulies d'un réducteur planétaire du moteur de propu maxon: Ca fait croc croc à un moment, et le moteur doit forcer pour faire tourner... Résultat, c'est un vrai petit canard pas évident de régler ça avec le PID...

Je vais travailler sur le PR maintenant, en espérant un meilleur résultat...
 
L

louloute30

Compagnon
[edit]
@romain, effectivement, j'ai rajouté après le graph ci-dessus une accélération douce sur une demi seconde pour atteindre une Vmax de 1.5Tr de roue / sec. (pour des tests lents)

Cependant ce qui a sans doute cassé le moteur, c'est lorsque j'ai modifié les Kp (trop élevé) pour optimiser les réglages, le GR faisait une marche avant+marche arr sur une très courte distance et à grande vitesse... Le robot tremblait, je pense que vous voyez ce que je veux dire. et voilà, crac :roll:
[/edit]



Bonsoir,

Donc, nous voilà à 3-4 semaines de la coupe, et j'ai deux robots sans motorisation adéquate...

Un PR qui avait chaussé des Maxons pas assez réduit donc trop faible pour avancer, et un GR qui a perdu un de ses moteurs ce matin.
Une solution?
Béh, j'ai dû improviser avec ce que j'avais:
D'une part, grâce au généreux cadeau de l'équipe CVRA (que je remercie encore :prayer: ), j'ai à disposition des moteurs faulhaber qui devraient remplacer les maxon du GR d'ici demain, et j'ai toujours en rab, quelques PAP...

Cette fois, je vais prendre des Nema 17 pour le PR qui seront montés lundi.
Les faulhaber étaient normalement prévu pour le PR, mais après démontage, leur longueur ne permettait pas leur installation.
Le PR conservera les roues codeuses pour éviter trop de recalage; pour une fois que je voulais tenter l'expérience PAP + codeuses, voilà c'est fait , mais j'aurai préféré que ce soit dans un moment plus,,, calme.

Par contre, au vu de l’avancement des choses, je pense que je vais fusionner deux équipes avec les meilleurs robots:

- D'une part, nous avons un PR suiveur de ligne noire qui ne détectera peut être pas la ligne noire, et un GR qui marque à lui seul quelques 16 points. Cette équipe n'a pas de lanceurs de balles.
- D'autre part, nous avons le GR où les moteurs sont bon à changer (coté stratégie, pas encore bien au point + refaire toute l'odo+l'asser), et le PR qui passe en Nema 17 boosté, donc, là coté asser, c'est bon, les PAP j'ai bien l'habitude ! Mais dans cette équipe, le PR a cette fois-ci le lanceur de balle, donc, là, les jeux sont fait

Je me tâte pour le moment avec cette idée, à mon avis ça se décidera la veille ou le jour même...

SDC10545.JPG

Ca me fait un peu mal de voir cette photo :mad:
 
S

syoctax

Apprenti
louloute30 a dit:
Bon, voilà mon premier asserv PID... Il s'agit d'un asservissement en vitesse sur les 2 roues motrices du GR. (fréquence de 1000: calculé toute les ms)

Ta fréquence de calcul me parait bien trop grande, 10Hz ça suffit amplement je pense.
 
L

louloute30

Compagnon
Merci Dyna, je vois que tu as déjà creuser la question...

Petites vidéos de l'état d'avancement de l'asservissement avec codeur roue folle + moteur PAP: Je suis en 1/4 de pas, je vais tenter de passer en demi-pas pour augmenter la Vmax.
Pour le moment, l'asser est faîte en cap, reste alors en distance, rien de bien compliqué.

Sans "gêne":

et gêné:

La méca des robots GR et PR est terminée; Il ne reste que des petits détails à voir (coller le velcro sur le support balise - fixer les fresques sur le PR...). On a plus qu'à faire les stratégies. Gros soulagement vu le temps qu'il reste !
 
Dernière édition par un modérateur:
A

antoine_cvra

Apprenti
Nickel cet asserv ! Que de progrès en si peu de temps :)
 
L

louloute30

Compagnon
Merci Merci,

et coté GR Ev... Si je n'avais pas rencontré de pb de batterie, il serait allé jusqu'au panier pour se préparer à lancer le filet...

 
Dernière édition par un modérateur:
W

wix

Apprenti
Bravo ! un robot sain et simple qui fait son travail doucement mais surement. Je vous suggère de bosser le recalage entre la torche et l'arbre, c'est assez tendu de ne pas se rater dans ce petit coin.
 
L

louloute30

Compagnon
Merci Wix.
Effectivement, pas très rapide, mais assez fiable avec bp de recalage (mais grosse perte de tps, puisque ces recalages occupent près de 30sec/matchs.

Aujourd'hui, nous avons commencé à travailler des stratégies en communication entre le PR et le GR...
Je vous montrerai une vidéo demain. Nous sommes arrivés à 31 points au max, avec une moyenne de 23-25 (dont 3 de coopération), et tout ça sans aller trop chez l'adversaire.
Le PR en PAP+ odométrie réalise un travail considérable grâce sa qualité de déplacement; ça devient même un jeu de lui dire VaVers (X,Y,Angle). C'est d'ailleurs lui qui ira dans la partie adverse pour "s'amuser" à prendre 1 ou 2 points...

Coté PR, on va rajouter des pompes + ventouses pour déposer un maximum de feux sur les parties marrons, histoire d'assurer les 28-30 points / matchs. Pour nous ce serait vraiment une très belle réussite ! :supz:
 
L

louloute30

Compagnon
Je vous présente mon interface de génération de stratégie... Y a plus qu'à faire joujou avec la souris pour qu'il sache où aller...

Aujourd'hui, je vais rajouter une condition de modification de strat si un adversaire se présenterait devant notre robot, et qu'un contournement reste impossible.

Au départ, cette interface avait été créé pour la gestion des tourelles. Seulement, n'ayant pas eu le tps (et l'envie cette année) de dvp la triangulation, j'ai fait qq modif du prog et voilà, c'est un générateur de strat. Au moins, ça évite de faire des tonnes d'essai, on peut se permettre de dire au robot d'aller plus précisément aux endroits souhaités (Ca devient vraiment sympa !).

prog.PNG
 
G

Goo

Apprenti
Hello louloute,

Tu utilises un widget QT particulier pour l'image du terrain ?
Je viens d'essayer avec une image et mousePressEvent mais j'ai quelques décalage de coordonnés.
Votre code ne serait pas open par hasard ? ou en licence bière ? :)
 
W

wix

Apprenti
Attention si vos images proviennent du règlement, certaines sont fausses (notamment pour le plot du milieu). Il vaut mieux redessiner à la main les vrais contours
 
S

syoctax

Apprenti
Oui le rond central et les foyers sont décalés de 5 cm, et tout ça décalé de 5 cm du milieu de la table. J'ai pas trop compris l'intérêt d'ailleurs...
 
L

louloute30

Compagnon
Et bien, jusqu'à lundi, j'utilisais ce petit logiciel que j'avais conçu pour créer des stratégies.
Puis hier, je me suis dit... Et si un adversaire venait contrarier la stratégie que ferait mon PR. Alors, je suis passé à autre chose:

J'ai donc "éduquer" mon PR à réaliser 13 "micro-Stratégie" du type suivant:
Ex: Mission Fresque: les coordonnées de destination du Robot(X,Y) sont prédéfinies; elles sont de "1350;500" pour la fresque 1, une fois le robot arrivé là, il enclenche la "microStratégie" Fresque1() qui consiste à:
- place le robot dans le bon angle
- puis vérifier la présence d'un adversaire entre lui et la fresque
- et enfin, "SeRecalerSurFresque";
- Si tout est effectué, alors missionFresque=Realisée sinon, abordé (et la réalisera plus tard dès que possible).
***Fin de la microstratégie****

Il y a donc 13 microStratégie de ce type.
Le PR a alors pour mission de réaliser celles les plus proches de lui. Si elle est parfaitement bien réalisée, il passe à la suivante, dans le cas contraire, s'il est bloqué, il passe à une autre action à réaliser (la seconde plus proche de lui) et ainsi de suite...

Donc, je me sers du logiciel juste pour réaliser et simuler ces "micros stratégies" pour être aux bonnes coordonnées.

Ce logiciel a été réalisé via Visual Basic 5.0, un vieux truc certes, mais très pratique !
Je pense que Visual Basic 2008 Express Edition doit pouvoir l'ouvrir, je ne garantie rien, mais je peux essayer.

Le code est open bière, pourquoi pas... ou open source selon...
L'image a été simplement prise dans le règlement, et en effet, il y a une erreur de position d'objets.

Vous le trouverez ci-joint en exécutable. Voir la pièce jointe ER2014.zip
 
G

goulou

Nouveau
Hé ben tu vois, tu fais exactement comme le PR Spacecrackers ... :supz:
Au lieu de "microstrategies", je parle d'une machine à états principale. Elle contient actuellement 19 états (je crois...), et ensuite j'ai un module C qui gère les transitions : après l'état N, selon l'état du terrain (fresques déposées, balles tirées, etc...) je passe à un autre état N'.

Et dans chaque état, je déroule des graphcets (qui sont donc eux aussi une machine à état) avec des actions élémentaires : avancer à tel point, se tourner vers telle direction, actionner tel servo... les graphcets sont parrallélisables (plusieurs peuvent s'exécuter simultanément), ce qui permet de dire "va à tel point" et en même temps "dès que tu es à telle position, range le bras".
Cette philosophie était ultra adaptée l'année dernière pour empiler les verres (car les graphcets étaient hyper compliqués...). Cette année les actions du PR sont beaucoup plus simples, mais c'est quand même assez pratique et ça permet de répartir la complexité... :)

Du coup, on code d'un coté une multitude d'états élémentaires, et ensuite si on veut modifier la stratégie globale on n'a plus qu'à changer le fichier de transitions :)

Je sens que tu vas bien t'en sortir toi cette année :)

Goulou

PS : par contre, le code du PR est pas encore open-bière :partyman:
 

Sujets similaires

L
Réponses
7
Affichages
2 216
looplyla
L
Manta
Réponses
53
Affichages
59 346
Marmothon
Marmothon
Valentin (INSA Rennes)
Réponses
14
Affichages
4 941
K-lean (Oleg) (Ensim)
K-lean (Oleg) (Ensim)
baptiste_c
Réponses
27
Affichages
6 292
baptiste_c
baptiste_c
M
Réponses
19
Affichages
70 528
Valentin (INSA Rennes)
Valentin (INSA Rennes)
M
Réponses
12
Affichages
56 566
cedric91540
C
TDS-Team
Réponses
31
Affichages
8 246
TDS-Team
TDS-Team
K-lean (Oleg) (Ensim)
Réponses
49
Affichages
8 646
K-lean (Oleg) (Ensim)
K-lean (Oleg) (Ensim)
A
Réponses
17
Affichages
5 202
romain_cvra
R
Trognon
Réponses
12
Affichages
3 489
syoctax
S
M
Réponses
27
Affichages
7 240
pwet
The Devil Ravemaster
Réponses
5
Affichages
2 565
The Devil Ravemaster
The Devil Ravemaster
M
Réponses
204
Affichages
32 493
Hype.
Hype.
S
Réponses
58
Affichages
9 818
W
Haut