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

Affichage des points et mât balise

2 mai 2022

Voilà, nous sommes début mai et nous comptons les semaines qui restent avant la coupe de France de Robotique sur les doigts d’une seule main.

Notre todo-list se rétrécit et devient de plus en plus précise :

  • Construction du ma balise
  • Affichage du score
    • Afficher un logo au démarrage du robot
    • Afficher l'état des capteurs (et la "couleur" de départ du robot) avant le début du match
    • Afficher le score pendant et en fin de match
    • Fixer l’écran, le Raspberry Pi et le nouveau bouton On/Off
  • Réaliser la cale pour positionner le robot en début de match
  • Panneau de 70x100 mm à installer sur le robot
  • Détection des résistances
  • Stratégie alternative en cas de robot bloqué

 Mât balise

Nous avons fini notre mât balise, avec un système d’ajustement (Merci Droop pour le conseil !).


Construction du mât balise

Bon il reste une fente horizontale dans le mât, mais ça va se terminer à coup de scotch de masquage ou de papier collé...


Mât balise fini

Le système n’est absolument pas pratique, car il y a des écrous qui sont quasiment inaccessible, mais ça fera le boulot.

 Affichage des scores

L’interface avec le robot avait commencé avec notre logiciel de supervision, nous recevions des données toutes les 100 ms ou presque. Là, le problème est un peu différent, l’écran met 6 secondes minimum pour s’actualiser. Envoyer une nouvelle commande alors que la première n’est pas terminée est la garantie de bloquer le système.

Pour simplifier les choses, nous avons deux programmes, l’un qui lit la liaison série et qui envoie les instructions d’affichage par socket, l’autre qui reçoit les instructions d’affichage et qui gère la commande de l’écran. Les deux programmes sont en Python. A la réflexion, avoir deux programmes n’avait pas grand intérêt, à part celui de (re)découvrir les sockets. A ceci, nous rajoutons un bout de systemd pour démarrer automatiquement nos deux programmes.

Quelques images, en commençant par le logo affiché une fois que le Raspberry Pi à démarré :


Affichage du logo

Puis le robot affiche les états des capteurs, actualisés à chaque changement de ’couleur’ (position de notre interrupteur), dans la limite d’une fois toutes les 6 secondes :


Affichage état du robot

Enfin l’affichage du score, car dans le fond, c’était quand même l’objet du truc :


Affichage du score

Pour ceux qui veulent plus de détail, le produit que nous avons est celui-ci : https://www.waveshare.com/product/displays/e-paper/epaper-2/2.7inch-e-paper-hat.htm
En bas de la page, il y a un tableau comparatif, et quitte à changer nous prendrions le modèle 3,7 pouces, avec un temps de rafraîchissement de 2 secondes et le rafraîchissement partiel !

Enfin, nous nous demandions s’il était possible de diminuer le temps de démarrage du RPI (spoiler, oui, c’est possible). Mais nous n’avons pas envie de tout casser maintenant !
Nous pensions plutôt passer un peu de temps pour alimenter le RPI par le robot, en s’assurant que son alimentation n’est pas coupée par l’arrêt d’urgence. En reprenant la carte d’alimentation, nous découvrons que nous avions déjà pensé à cette fonctionnalité !

Voici le graph de démarrage de Systemd, généré par systemd. Ça, c’est cool aussi, même si nous n’en ferai rien cette année ! Il s’obtient avec la commande suivante :

systemd-analyze plot > image.svg


Démarrage systemd

La suite sera certainement la fixation de l’écran et du Raspberry Pi !

0 commentaire


Pré-coupe CARAR et poster

23 avril 2022

Nous avons participé à la pré-coupe amicale de robotique Auvergne Rhône-Alpes (CARAR), l’occasion de rencontrer d’autres équipes et de passer un bon moment. Merci à Télécom Saint Étienne pour l’organisation !

Pour la CARAR, nous avons sommairement fixé notre écran avec une image fixe dessus. Ceci permettant, dans le meilleur des cas, d’augmenter notre score de 30%.


Affichage des points

Nous avons pu faire 4 matchs, notamment grâce à Arig qui a bien accepté de recommencer notre match. Voici la plus belle vidéo que nous ayons des matchs.


La vidéo est disponible en 720p ici (mp4 - 18 Mo).

Nous comptions 86 points, mais après l’évènement, nous avons relu le règlement et tous nos carrés de fouilles sont invalidés car nous retournons celui avec une croix rouge. Une mise à jour de la stratégie s’est vite imposée.

Le second enseignement nous vient de nos deux matchs contre Arig. Notre robot a détecté un obstacle (un coup l’arbitre, un coup le robot adverse) et n’est pas reparti. Ceci venant d’un bug maintenant corrigé.

Enfin, c’est le moment de réaliser le poster. L’occasion de baptiser le robot, ce sera "Capsicum", le robot qui garde le cap !


Poster Eurobot 2022

Mots clés : Coupe, Vidéo, Eurobot 2022, Photo, Poster

0 commentaire


Avancement mi-Avril 2022

12 avril 2022

Oh la la ! Nous n’avons rien publié depuis fin janvier ? Mais pourtant, il s’en est passé des choses !

Tout d’abord, nous avons installé les capteurs ultrason sur notre robot. Nous avons surtout travaillé la mécanique, le code sera fait plus tard.

Ensuite, nous avons réalisé notre "vitrine" tel que demandée dans le règlement pour une démonstration à Vaulx-en-Velin (Lyon) à l’occasion de la coupe Eurobot junior d’Auvergne Rhône-Alpes (le 19 mars 2022).

Puis nous avons acquis un petit écran e-ink pour afficher nos points. Mais son intégration sur le robot n’est pas pour cette semaine.

Enfin, nous nous préparons actuellement pour la coupe Off Eurobot d’Auvergne Rhône Alpe (pas junior, cette fois-ci). Nous peaufinons les trajectoires, commençons la gestion des camps de départ. Jusqu’à présent, nous ne travaillions que d’un seul côté... Il nous manque notre mât balise que nous essayerons d’avoir pour ce week-end.

 Installation des capteurs ultrason

Nous utilisons des capteurs SFR05, tenus dans un berceau :

Ce berceau est monté sur un axe en bois :

Et pas loin de cet axe en bois, nous avons un système de poulies.

Évidemment, qui dit poulies, dit système de tension de courroie. Celui-ci nous a vraiment donné du mal.

Mais le résultat est là, nous avons deux capteurs ultrason qui peuvent regarder soit devant, soit derrière.

Et une vidéo du système monté sur le robot avec un pilotage "manuel" du servomoteur.


La vidéo est disponible en 720p ici (Ogg - 5 Mo).

 La vitrine

La vitrine rapporte un certain nombre de points, que ce soit par elle-même (2 + 5 points), ou en comptant les points de la statuette sur la vitrine (15 points).

Notre but était d’avoir ; pour la Coupe Junior Auvergne Rhône-Alpes, une vitrine qui fasse une démonstration des technologies simples que nous utilisons sur notre robot. À côté de cette vitrine, nous avions 3 posters présentant :

  • Le capteur IS471F
  • Les servomoteurs
  • Le capteur ultrason (que nous n’avions pas sur la vitrine)

Voici nos posters, en commençant par le capteur IS471F :

Puis les capteurs ultrason :

Et enfin les servomoteurs :

 Et le robot dans tout ça ?

Nous avons réactivé le code de détection d’obstacle et adapté notre nouvelle gestion des trajectoires pour en tenir compte.

Puis fiabilisé la dépose de la statuette et l’arrêt en zone de départ, grâce à un recalage avec un capteur Sharp infrarouge. Nous croisons les doigts pour que ça marche à la coupe, mais le capteur est bien caché, protégé des projecteurs.

Et enfin, corrigé un bug qui ne nous permettait de faire tourner le robot sur lui-même que vers la gauche (les angles négatifs étaient mal gérés à cause d’une erreur de type)...

Lors de la coupe junior, nous avons vu que le robot se coinçait contre l’abri de chantier et que les carrés de fouille étaient trop lourds pour notre servomoteur. Nous avons limé ce qui dépassait et changé le servomoteur pour un du même gabarit mais deux fois plus puissant.


La vidéo est disponible en 720p ici (mp4 - 18 Mo).

Mots clés : Eurobot 2022, Photo

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

page précédente 1 2 3 4

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