Aller au contenu


Photo
- - - - -

Projet de robots joueurs de foot


38 réponses à ce sujet

#21 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 074 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 23 mars 2024 - 10:38

Essaye de rajouter une résistance de pull down sur ta gate.


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#22 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 24 mars 2024 - 06:39

Ou en test plus simple (sans connecter ton micro-controleur), connecte la gate a GND. Si connecté à GND ça ne s'active pas, alors (si tu ne te soucie pas de l'état initial), tu pourra sans problème commander le kicker depuis le micro-controleur (tu pourra alors ajouter la pull-down si tu veux que l'état initial soit désactivé). Si connecter à GND ne résoud rien, alors il faudra chercher ailleurs.

 

NB : au lieu de relier directement à GND, tu peux aussi relier la gate à GND via une résistance (si tu as, je prendrais entre 1k et 10k), ce qui à l'avantage que tu risques moins de faire de dégats si tu as un montage vraiment tordu


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#23 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 074 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 26 mars 2024 - 05:44

 

NB : au lieu de relier directement à GND, tu peux aussi relier la gate à GND via une résistance (si tu as, je prendrais entre 1k et 10k), ce qui à l'avantage que tu risques moins de faire de dégats si tu as un montage vraiment tordu

 

= mettre une résistance de pull down sur la gate ;) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#24 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 26 mars 2024 - 05:52

 

= mettre une résistance de pull down sur la gate ;)

J'avais interpréter ton message comme souder une résistance de pull-down (mais peut-être que j'ai mal interprété), alors que ma suggestion était de placer une pull-down provisoire sur le header destiné à la Teensy pour confirmer que le seul problème est que la gate est flotante (donc la pull-down ne sera probablement pas indispensable une fois la Teensy présente et le pin en output.

Mais oui, l'idée de fond est la même (et peut-être que c'est moi qui ai mal interprêté ta réponse, et que tu suggérais exactement la même chose que moi)
 


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#25 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 02 avril 2024 - 08:40

Désolé pour l'attente, on s'est plutôt concentré sur le déplacement du robot et son positionnement dans le terrain, en tout cas quand la gate est connectée au ground ça ne s'active effectivement pas. Il me semble que la teensy possède déjà des résistances pulldown pour ses pins digitaux, donc ça fera peut-être l'affaire. Et on dirait qu'une des teensy a l'air de ne plus fonctionner... je pense qu'il y a surement eu une fausse manip ou des mauvaises soudures sur le PCB, on va éviter de faire des choses trop risquées pour l'instant donc je ne sais pas si on aura le temps de faire fonctionner le kicker, en tout cas il faudra sans doute rajouter plus de protections sur la carte à l'avenir.



#26 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 11 avril 2024 - 09:02

La semaine dernière avait lieu la compétition régionale d'Ile de France de la Robocup Junior à laquelle nous avons participé (https://www.ac-paris...p-junior-121792), qui réunissait d'autres équipes de robots des académies de Paris, Créteil et Versailles.

Equipe terrain.jpg
Couloirs.jpg
Robots terrain.jpg

Après des matchs assez peu concluants pour les robots (il reste encore du travail pour fiabiliser tout ça, je pense à toi la roue qui tombe en plein match), on a quand même réussi à finir 5è et à se qualifier (de peu) pour la compétition nationale !!

Bye bye roue.png
Classement.png



#27 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 074 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 11 avril 2024 - 10:33

Bravo !  :yahoo:  :clapping:   :Koshechka_08: 

Il reste plus qu'à fiabiliser pour la prochaine rencontre !


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#28 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 18 avril 2024 - 11:34

Merci :)

Sinon pour en revenir à notre kicker, est-ce qu'un relais pourrait également fonctionner avec les 3.3V de la Teensy et simplifier le circuit ? Par exemple le SRD-03VDC-SL-C avec une tension nominale de 3V pour la bobine (https://html.alldata...03VDC-SL-C.html)



#29 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 074 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 18 avril 2024 - 08:48

Tu as des petits modules relais , regarde relais arduino( un relais monté sur un PCB avec un mosfet ) et tu pourras le mettre à côté de ta carte pour piloter le kicker sans soucis =)


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#30 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 21 mai 2024 - 11:07

Bonjour

Voilà l'explication du système utilisé actuellement pour envoyer les positions des objets que la caméra détecte (balle et goals) au microcontrôleur Teensy 4.1 principal, si des gens veulent s'en inspirer ou si vous avez des conseils :) Je partagerai également l'algorithme qui détermine la position du robot dans le référentiel du terrain à l'aide du LIDAR une fois que le code sera un peu plus peaufiné

La caméra que l'on utilise est une OpenMV RT1062, elle possède déjà un microcontrôleur qui lui permet de traiter les images et une méthode find_blobs() permettant de récupérer les coordonnées d'un objet d'une couleur prédéfinie. Les deux composants communiquent à l'aide du protocole UART et on envoie les données avec ce code :
 

import machine
machine.UART(1, 115200) # Port de communication utilisé et baud rate

[...] # Algorithme de détection

data = "b{:+04d}{:+04d}{:+04d}{:+04d}{:+04d}{:+04d}e".format(ballCoord[0],
                                                             ballCoord[1],
                                                             myGoalCoord[0],
                                                             myGoalCoord[1],
                                                             enemyGoalCoord[0],
                                                             enemyGoalCoord[1])
uart.write(data)

Où la méthode format() permet d'intégrer certaines valeurs à une string. Par exemple dans {:+04d} on aura un caractère de signe (+ ou -) suivi de 3 chiffres, qui correspondent ici à la coordonnée en x de la balle. La teensy recevra donc par exemple "b+035-023-003-090+011+100e", ce qui fait 26 octets envoyés toutes les 60ms environ.

Du côté de la Teensy, la récupération des données d'un tour complet du LIDAR rotatif et leur analyse prend jusqu'à 130ms, pour les données de la caméra elle va donc simplement lire celles déjà disponibles dans le buffer circulaire de 64 octets avec la méthode readBytes(). Le code est le suivant :

RobotState getCamInfos() {
  size_t bytesAvailable = SerialCam.available();

  if (bytesAvailable >= 26) {
    byte buffer[65];
    size_t nbrBytesReceived = SerialCam.readBytes(buffer, min(bytesAvailable, sizeof(buffer) - 1));
    buffer[nbrBytesReceived] = '\0';

    std::string lastCompleteSequence = extractLastCompleteSequence((char*)buffer);
    if (!lastCompleteSequence.empty()) {
      int ball_x, ball_y, my_goal_x, my_goal_y, enemy_goal_x, enemy_goal_y;
      
      if (sscanf(lastCompleteSequence.c_str(), "b%d%d%d%d%d%de", &ball_x, &ball_y, &my_goal_x, &my_goal_y, &enemy_goal_x, &enemy_goal_y) == 6) {
        return RobotState(Vector2(ball_x, ball_y), Vector2(0, 0), Vector2(0, 0), Vector2(my_goal_x, my_goal_y), Vector2(enemy_goal_x, enemy_goal_y));
      } else {
        SerialDebug.println("Erreur lors de l'extraction des données de la caméra: " + String(lastCompleteSequence.c_str()));
      }

    } else {
      SerialDebug.println("Aucune séquence complète trouvée, reçu: " + String((char*)buffer));
    }    
  }
  return RobotState(Vector2(0, 0), Vector2(0, 0), Vector2(0, 0), Vector2(0, 0), Vector2(0, 0));
}

En sachant que
- La carte Teensy possédant plusieurs ports série, on a SerialDebug pour la connection avec l'ordi et SerialCam pour la caméra
- La classe RobotState permet simplement d'enregistrer certaines valeurs importantes nécessaires pour les stratégies de jeu

Ainsi, à partir d'une séquence complète (qui commence à b et se termine à e) extraite du buffer à l'aide de extractLastCompleteSequence(), on vient récupérer chacune des valeurs des coordonnées des objets détectés dans des variables à l'aide sscanf(), où chacun des %d correspond à une valeur. A propos de cette extraction de séquence, l'idée est que l'on cherche le dernier caractère de fin dans le buffer, puis on le parcourt de droite à gauche avec rfind() à partir de ce caractère de fin et jusqu'à rencontrer un caractère de début :

std::string extractLastCompleteSequence(const char* buffer) {
    std::string str(buffer);
    size_t lastE = str.find_last_of('e');
    if (lastE != std::string::npos) {
        size_t prevB = str.rfind('b', lastE);
        if (prevB != std::string::npos) {
            return str.substr(prevB, lastE - prevB);
        }
    }
    return "";
}

En mémorisant la position des derniers caractères b et e du buffer, on peut alors récupérer toute la séquence entre les 2 sous forme de string avec str.substr(prevB, lastE - prevB)

Voilà :)

 



#31 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 07 juin 2024 - 05:07

Comme prévu, nous avons participé à la compétition nationale de la Robocup Junior ! Au total, il y avait 8 équipes dans notre ligue (Soccer). Cette fois-ci nous avons eu le temps de préparer nos robots pour qu’ils fonctionnent comme ils sont censés le faire (même si on n’est jamais à l’abri de la Loi de Murphy). Les matchs sont constitués de 2 mi-temps de 10min chacune avec une pause de 5min entre les deux où les équipes changent de côté. Après une 1ère journée de matchs contre chacune des autres équipes, nous avons réussi à nous qualifier pour les demi-finales !

Robot seul nationale.jpg Robots terrain nationale.jpg
 

Les efforts ont payé puisque le lendemain nous sommes allés jusqu’en finale où nous avons remporté la victoire 10-1 !!


 

Nous sommes alors champions de France !!


 

 

Un petit tour des changements majeurs qui ont été réalisés par rapport à la dernière fois et qui ont rendu ça possible :
 

- Meilleure précision au niveau de l'adaptateur entre l'axe du moteur de 4mm et celui de la roue de 8mm, pour que celle-ci soit mieux maintenue. Il y a des petites différences entre le modèle 3D et la pièce en sortie d’imprimante, il faut donc faire plusieurs essais avec différents ajustements pour que faire en sorte que ça rentre pile

photo_2024-06-05_22-23-42.jpg

- Meilleure isolation des circuits 24V pour les moteurs et des circuits 5V de l'électronique de commande (aucun composant cramé cette fois!) avec une nouvelle carte spécialisée pour l'alimentation, et des câbles avec pour embouts des ports JST PH (fabriqués nous-mêmes avec une pince à sertir, qui sont relativement gros, ce qui permet d'avoir des câbles qui tiennent mieux et d'éviter les faux contacts entre-eux

Power_PCB.jpg Main_PCB.jpg

- Fabrication de notre propre miroir avec un moule imprimé en 3D et poli avec des papiers ponce de grains de plus en plus fin. La surface est faite avec du papier réfléchissant un peu élastique pour épouser la forme du moule, vu que le miroir est hyperbolique (ça a l’air d’être la meilleur forme pour voir loin), on ne peut pas appliquer une surface plane non-élastique sans que ça fasse des plis

PXL_20240508_142346908.MP.jpg PXL_20240508_144506942.MP.jpg

- Renforcement des supports pour les moteurs avec 2 supports triangulaires ajoutés sur les côtés (avoir une pièce en métal aurait été idéal, mais elle n’est plus disponible pour ce moteur). Avant ce support fracturait au niveau de l'angle à cause du poids du moteur

Image1.png

- Et puis des optimisations diverses au niveau du code, et ajout de scotch (beaucoup)

 

Merci de votre attention ! La prochaine étape est donc la compétition mondiale de la Robocup aux Pays-Bas ! Le niveau est beaucoup plus élevé par contre donc ça promet d’être compliqué ^^’



#32 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 10 074 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 08 juin 2024 - 04:59

Félicitations ! =)

C'est bien du " covering effet miroir" que vous avez pris pour faire votre miroir, comme évoqué lorsque je vous avais eu au téléphone? Ou bien c'est autre chose ? 

En tout cas hâte de suivre la suite ! Et n'hésitez pas si vous avez besoin d'autre chose ! =)
 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#33 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 10 juin 2024 - 11:00

Merci :)

Oui c'est bien du covering (merci beaucoup du conseil :) ), on a pris celui-ci https://www.elitecar...yle-c2x32076436

D'ailleurs j'ai une question à propos du fameux système de kicker. Pour essayer d'augmenter sa puissance de frappe, on a essayé de doubler la tension qui lui est fournie pour aller jusqu'à presque 48V, mais ça reste toujours insuffisant. J'ai vu que l'on pouvait utiliser un condensateur en plus de la batterie pour augmenter le courant fourni, est ce que ça pourrait fonctionner dans notre cas ?



#34 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 11 juin 2024 - 09:32

Pour le kicker :

- un condensateur peut servir si la tension d'alimentation chute lors de l'appel de courant. Cela peut être du à un régulateur de tension trop "lent" à réagir à une augmentation de la demande de courant, ou à des câbles trop longs/trop fins (ou d'autres causes de résistance ou d'inductance entre l'alimentation et le solénoïde), ou encore à une batterie avec une forte résistance interne. Si jamais tu as un oscilloscope, alors tu peux mesurer la tension "48V" juste avant le mosfet : si elle chute au moment où tu actives le kicker, alors un condensateur peut potentiellement aider (il aidera à avoir plus de courant, cf point suivant pour la puissance de frappe).

- un solénoïde, c'est principalement une inductance. La plupart des inductances ont un courant de saturation. Faire passer plus de courant que le courant de saturation (par exemple en augmentant la tension) n'aura que peu d'effet sur le champ magnétique, donc sur la puissance de frappe. Donc il est possible qu'augmenter le courant ne serve à rien. Si vous voulez tester, prennez une alim de labo réglée en mode contrôle de courant, et testez avec des courants de plus en plus forts, jusqu'à ne plus voir d'augmentation de la puissance de frappe : vous avez atteint la saturation. Attention à ne pas dépasser les limites du solénoïde et le cramer.

Pour une aide plus détaillée, il me faudrait la référence du solénoide, et un schéma de ce qui l'alimente (nb : y compris longueur et section des fils, et modèle de la batterie)


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#35 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 14 juin 2024 - 11:42

Merci ! Pour la batterie que l'on utilise c'est celle-ci

Je pourrai faire les tests de l'oscillo et du courant de saturation d'ici lundi (je récupérerai aussi la référence exacte du solénoide, en tout cas je me souviens que la résistance est de 18.7 ohm)

 



#36 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 15 juin 2024 - 05:28

Si la batterie respecte ses spécifications, alors je doute fortement qu'elle soit l'élément limitant : même si elle ne précise pas de résistance interne, le fait qu'elle puisse être déchargée à 300C en pic garanti que la résistance interne ne peut pas dépasser les 87mohms, probablement moins.


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#37 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 18 juin 2024 - 08:41

Je n'ai malheureusement pas réussi à mettre la main sur un oscilloscope ni sur une alim de labo. Peut-être qu'il faudrait directement tester avec un condensateur pour voir ce que ça donne ?

En tout cas le solénoïde qu'on utilise est un HS-0837B (on évitera d'utiliser du 48V la prochaine fois ^^'), et les fils de la bobine ont l'air de faire environ 0.2mm d'épaisseur. Les tests sont simplement faits avec le solénoïde directement connecté à la batterie avec un interrupteur qualifié pour du 25A et des fils de longueur 30cm et d'épaisseur 1mm.

Sachant que l'on devra surement utiliser un solénoïde plus petit (moins long) pour qu'il puisse rentrer correctement à l'intérieur du robot



#38 Sandro

Sandro

    Membre chevronné

  • Modérateur
  • PipPipPipPip
  • 1 308 messages
  • Gender:Male

Posté 19 juin 2024 - 07:48

Vu la longueur et le diamètre des fils, je ne penses pas que ce soit l'élément limitant. Tu peux rajouter un condensateur si tu veux, mais j'ai peu d'espoir que ça change quelque chose.
NB : il faut ajouter le condensateur au bon endroit :

- si ton intérupteur est sur le +, alors mets le condensateur entre le coté batterie de l'intérupteur et un endroit du fil - (idéalement au plus proche du solénoide)

- si ton intérupteur est sur le -, alors mets le condensateur entre le coté batterie de l'intérupteur et un endroit du fil + (idéalement au plus proche du solénoide)

 

 

Je penses que le vrai problème, c'est que ton solénoïde ne vas pas assez vite (donc ne tape pas fort). Les liens que j'ai trouvé ne spécifient même pas la vitesse. Le solénoide semble plus prévu pour faire un mouvement controlé sans contrainte de vitesse (mécanismes de vérouillage par exemple) que pour aller vite. Si tu changes de solénoïde, je te conseilles d'en choisit un qui donne une vitesse, et de choisir celui avec la vitesse la plus élevée possible


Aidez-nous à vous aider : partagez toutes les informations pertinentes : description précise du problème, contexte, schéma de câblage, liens vers la documentation des composants, votre code (ou encore mieux un code minimal reproduisant le bug), ...

Vous recevrez ainsi plus de réponses, et elles seront plus pertinentes.


#39 LudovaTech

LudovaTech

    Nouveau membre

  • Membres
  • 21 messages

Posté 16 juillet 2024 - 12:26

Bonjour

 

Finalement les condensateurs ont effectivement pas changé grand chose et par manque de temps on a gardé le même solénoïde, les kicks sont peut-être pas surpuissants mais au moins ils font l'affaire !

 





Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users