Bienvenue sur le site de l'équipe Poivron

Ici nous vous informerons des dernières nouvelles concernant l'avancement de nos projets et autres !

Bonne lecture !

Dernières nouvelles

Raspberry Pi Pico : de la documentation !

1er janvier 2023

Bonne année à vous tous, chères lectrices, chers lecteurs !

Quoi de neuf depuis le 11 décembre de l’an dernier ?

Globalement, pas grand chose sur le robot.

Nous avons séparé le code de test du fichier principal.

Nous avons commencé les travaux sur l’I2C et perdu beaucoup de temps car notre puce TCA9535 ne répond pas. Nous avons vérifier les connexions électriques, vérifié les tensions, changé la puce, rien n’y fait. La seconde puce est-elle grillée ? La carte était-elle mal conçue ? Pour l’instant, nous ne le savons pas !

Du coup, nous nous sommes rabattus sur le 2e Raspberry Pi Pico pour travailler l’I2C. Ça a été l’occasion de mettre au propre nos notes sur la création d’un projet pour le Raspberry Pi Pico :

Et de découvrir cette librairie pico_i2c_slave qui fait exactement ce que nous voulions côté esclave.

Enfin, nous avons recommencé nos moulages en papier mâché, pour l’aspiration des balles.

Lors de notre dernière news, nous avons présenté des courbes avec des accélérations et des décélérations. C’est le résultat d’un article écrit en septembre dernier que vous trouverez ici.

La suite :

  • Ecrire notre mémo sur l’utilisation de VSCode avec le Raspberry Pi Pico
  • Finaliser le code i2c non bloquant
  • Reprendre les tests avec la turbine
  • Placer des contacteurs sur le robot pour détecter les bordures
  • Longer les bordures
  • Transformer la base roulante en robot :
    • Fixer la carte électronique
    • Installer le mat balise
    • Intégrer la turbine
  • Améliorer la détection de l’adversaire

0 commentaire


Avancées logicielles - Le déplacement avance !

11 décembre 2022

Par rapport à nos nouvelles du 2 décembre 2022, nous avons bien avancé sur la programmation des déplacements ! À ce niveau, le dernier point encore non maîtrisé est l’utilisation du gyroscope pour se positionner.

Nous avons publié notre code sur Github avec un Readme qui explique la structure du code.


Architecture logicielle des déplacements

Pour l’instant, nous n’avons pas de belle vidéo à présenter, mais ça ne saurait tarder... Pour patienter, un test "en boucle ouverte", seuls les moteurs sont asservis en vitesse, il n’y a pas de retour sur la position du robot !

Et voici les courbes obtenues lors des essais de contrôle en vitesse avec une accélération et une décélération - ce sont bien des courbes expérimentales :

Le code supporte les trajectoires droites, circulaires ou suivant les courbes de Bézier.

Donc nous sommes - presque - prêts à nous déplacer avec classe et précision !

0 commentaire


Avancement début décembre 2021

6 décembre 2021

Quoi de neuf après ce week-end ?

Principalement les capteurs infrarouge. Comme capteurs de détection de l’opposant, nous utilisons des SFR04, un devant, un derrière, qui nous ont fidèlement servis durant des années.

Cette année, nous allons vouloir longer la bordure et nous savons que notre odométrie n’est pas précise au millimètre après plusieurs déplacements. Nous installons donc des capteurs Sharp de type GP2Y0A41Y2 sur les côtés de notre robot.


Capteur IR à côté de la roue

Après avoir testé les capteurs sur notre petite carte de développement, nous rallongeons les câbles et les raccordons sur la carte du robot.

Nous adaptons le code de la carte pour renvoyer les valeurs des capteurs infrarouge à l’interface de supervision puis adaptons le code de l’interface de supervision.

Ça marche bien... pour le capteur branché en IR_1. IR_2 refuse de donner des valeurs cohérentes. Les mesures de tension sont 10 fois plus faibles qu’attendues. Est-ce que la broche du PIC est grillée ?

Non ! Après une heure de recherche, il s’avère que le problème était logiciel. Le code des servomoteurs tentait de piloter un servomoteur branché sur IR_2. Ceci car nous avions eu un soucis avec U3, le régulateur de tension 7805 des servomoteurs 1, 2 et 3. Nous avions réaffecté IR_2 (dont nous ne nous servions pas) à Servo3. Le prix à payer pour réutiliser une carte et un code vieux de 5 ans...

(Pour visualiser ça, utilisez le plan interactif de notre carte.)

Après réaffectation des broches comme initialement prévu, les valeurs retournées sont parfaitement cohérentes.

Un dernier doute m’habite, ces capteurs ne riquent-ils pas d’être aveuglés par l’éclairage de la Coupe ?

0 commentaire


Les travaux de cet été 2021 (1/2) - La supervision

22 novembre 2021

 Le contexte

Quand j’ai choisi de re-participer à Eurobot, nous étions à quelques jours des finales. Alors j’ai choisi de re-travailler sur notre robot précédent. Deux points me chagrinaient, le premier étant les capacités de supervision du robot.

 La supervision

Ce qu’on peut faire avec une liaison série, un peu de python et de Qt.

  Les servomoteurs

Chaque année, le réglage des positions des servomoteurs se fait en entrant une valeur au hasard, compilant le code et testant. Il faut une petite quinzaine d’itérations pour affiner chaque position. Alors qu’il suffit de pas grand chose pour lier une commande de la liaison série à la commande d’un servomoteur.

Donc voilà, nous définissons une trame simple, qui permet de forcer la position d’une servomoteur. La trame est la suivante :
"Sxpppp"

  • S pour Servo
  • x pour le numéro du servomoteur à pilote
  • pppp pour la position à atteindre, en hexadécimal.

Sur l’interface graphique, 6 boutons, 3 pour avancer d’un petit pas, d’un pas moyen ou d’un grand pas, 3 pour reculer. Ces boutons sont un peu rigides, alors je rajoute un curseur horizontal (QSlider) qui permet d’atteindre une position approximative très rapidement. Enfin, un champ texte affiche la position actuelle.

Un dernier bouton permet de récupérer la position actuelle de tous les servomoteurs.


Supervision - servomoteurs

  La surveillance

Vient ensuite le problème du robot, très fréquent, du "mais qu’est-ce qu’il lui a pris de faire ça ?". Vous avez généralement le choix, pour comprendre ce qu’il se passe.

Soit vous banchez un débogueur sur votre robot, mais chez nous, ça ne marche pas génial. Les broches de debug sont utilisées pour autre chose, le débogueur Microchip n’aime pas trop les interruptions et rapidement, nous n’arrivons même pas à reproduire le bug avec le débogueur branché (alors que sans, c’était 100% reproductible).

Soit vous émettez un signal en fonction des états de votre programme (comme allumer une LED). C’est une solution simple, qui a le mérite de bien marcher dans des cas simples.

Avec la surveillance, le robot émet sur la liaison série toute une série de valeurs correspondant aux états du robot (position, orientation, distances des obstacles, etc...) à intervalles réguliers. Comme le robot émet un entête descriptif de ce qu’il va envoyer, nous pouvons modifier l’ordre des valeurs, en enlever ou en rajouter sans toucher au code de la supervision.

L’interface n’est pas très soignée, mais nous avons quand même deux panneaux.

Le premier affiche les valeurs actuelles :


Supervision - état actuel

Le second un graphique pour la valeur sélectionnée. Généralement en fonction du temps, mais afficher la position Y en fonction de la position X est tellement parlant que nous ne nous en sommes pas privé :


Supervision - graphique

  La communication

Enfin, toujours pour aider au debug, nous renvoyons sur la liaison série ce qui transite sur la liaison I2C. Soyons clair, ce ne serait pas adapté à de gros débit de communication. Mais dans notre cas ça marche !


Supervision - communication

 Les bonus

  La sauvegarde

Analyser à chaud, c’est bien. Pouvoir reprendre les logs précédents pour revoir un détail qui nous aurait échapper, c’est mieux. Chaque acquisition est enregistrée et peut être rechargée.

  Le Python

Le programme est développé en Python, avec PyCharm. PyCharm est puissant mais parfois un peu lent à lancer. Alors lorsque nous avons voulu lancer notre programme sans ouvrir PyCharm, nous avons rencontré deux erreurs :

$ python Supervision.py ... SyntaxError: invalid syntax

Sous Debian, notre Python est Python 2.7. Essayons avec Python3 :

$ python3 Supervision.py ... ModuleNotFoundError: No module named 'PyQt5'

Et pourtant, ça marche avec PyCharm.

Le secret réside dans les environnement virtuels. PyCharm utilise venv.

Activation $ source venv/bin/activate

Et là, un simple :
$ python3 Supervision.py
lance l’application.

Pour quitter l’environnement virtuel, utilisez la commande suivante :

Désactivation $ desactivate

Plus de détail sur les environnements virtuels pour le Python, je vous conseille cet article de Linuxfr.

Mots clés : Programmation, Eurobot 2022

0 commentaire


Le robot se déplace !

27 avril 2014

D’après notre dossier "Projet", c’était notre objectif pour le début du mois d’avril. À trois jours du mois de mai, nous pouvons annoncer fièrement que notre robot se déplace.

Fin mars, nous avions déjà notre asservissement polaire de codé. Depuis nous avons pas mal travaillé sur notre code qui gère les consignes à base de points de passage et de points "but". Pour être plus précis, notre robot avance (et recule) en suivant des séries de points qui forment des courbes de Bézier.

Les courbes de Bézier présentent trois avantages :

  1. Par construction, elles tiennent compte de l’orientation du robot au départ et à l’arrivée du trajet.
  2. Elles sont faciles à construire, leurs équations ne sont pas liées au repère
  3. C’est classe !

Mots clés : Coupe, Programmation

0 commentaire

page précédente 1 2 3 4 5

Copyright "POIVRON" 2011-2023, tous droits réservés
Administration du site